2017-12-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Remove current macOS support for dragging file-backed attachments
        https://bugs.webkit.org/show_bug.cgi?id=181188

        Reviewed by Dan Bernstein.

        See WebCore/ChangeLog for more detail.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setPromisedDataForAttachment): Deleted.
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setPromisedDataForAttachment): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
        * WebProcess/WebCoreSupport/WebDragClient.h:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteAttachment): Deleted.

2017-12-28  Brady Eidson  <beidson@apple.com>

        Add a ProcessIdentifier, vended from the UI process, to each child process
        https://bugs.webkit.org/show_bug.cgi?id=181155

        Reviewed by Brent Fulgham.

        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::initialize): Set the process-wide identifier if the initialization
          parameters have it. Cocoa ASSERTS it exists; non-Cocoa platforms will have to figure this
          out soon.
        * Shared/ChildProcess.h:

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getProcessIdentifier):

        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::coreProcessIdentifier const):

        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):

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

        Remove std::chrono if it is not used for ArgumentCoder or PersistentCoder
        https://bugs.webkit.org/show_bug.cgi?id=181174

        Reviewed by Konstantin Tokarev.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::initialize):
        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::start):
        * UIProcess/Cocoa/ViewGestureController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::loadCommitTime const):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::registerWithStateDumper):

2017-12-24  David Kilzer  <ddkilzer@apple.com>

        WebKit fixes to enable -Wstrict-prototypes for Safari
        <https://webkit.org/b/181146>

        Reviewed by Dan Bernstein.

        * Shared/API/c/WKGeometry.cpp:
        (WKSizeGetTypeID):
        (WKPointGetTypeID):
        (WKRectGetTypeID):
        * Shared/API/c/WKGeometry.h:
        (WKSizeGetTypeID):
        (WKPointGetTypeID):
        (WKRectGetTypeID):
        * Shared/API/c/WKImage.cpp:
        (WKImageGetTypeID):
        * Shared/API/c/WKImage.h:
        (WKImageGetTypeID):
        - Add 'void' to C function declarations and implementations as
          necessary.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        - Add 'void' to block declarations as necessary.

2017-12-24  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r224313): Fix build warning when compiling WebKit.xcassets
        <https://webkit.org/b/181148>

        Reviewed by Dan Bernstein.

        Fixes the following build warning:

            Opensource/Source/WebKit/WebKit.xcassets: warning: Failed to read file attributes for "Opensource/Source/WebKit/WebKit.xcassets"
                Failure Reason: No such file or directory

        * WebKit.xcodeproj/project.pbxproj: Fix relative path with
        case-insensitive filesystem and repository name assumptions.

2017-12-22  Jeff Miller  <jeffm@apple.com>

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

        Reviewed by Dan Bernstein.

        * Info.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist:
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * StorageProcess/EntryPoint/mac/XPCService/StorageService/Info.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

2017-12-22  Jeff Miller  <jeffm@apple.com>

        Allow WebsitePolicies API object to be bridged to _WKWebsitePolicies
        https://bugs.webkit.org/show_bug.cgi?id=181135

        Reviewed by Dan Bernstein.

        _WKWebsitePolicies already wraps WebsitePolicies, we just never hooked this up in newObject().

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix build failures due to using deprecated AppKit symbols
        https://bugs.webkit.org/show_bug.cgi?id=181110
        <rdar://problem/36162865>

        Reviewed by Dan Bernstein and Tim Horton.

        See WebCore ChangeLog for more details.

        * Shared/mac/PasteboardTypes.mm:
        (WebKit::PasteboardTypes::forEditing):
        (WebKit::PasteboardTypes::forURL):
        (WebKit::PasteboardTypes::forImages):
        (WebKit::PasteboardTypes::forImagesWithArchive):
        (WebKit::PasteboardTypes::forSelection):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::setIntrinsicContentSize):
        (WebKit::WebViewImpl::writeSelectionToPasteboard):
        (WebKit::WebViewImpl::validRequestorForSendAndReturnTypes):
        (WebKit::WebViewImpl::validateUserInterfaceItem):
        (WebKit::WebViewImpl::performDragOperation):
        (WebKit::WebViewImpl::setFileAndURLTypes):
        (WebKit::WebViewImpl::setPromisedDataForImage):
        (WebKit::WebViewImpl::setPromisedDataForAttachment):
        (WebKit::WebViewImpl::provideDataForPasteboard):
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView _drawPDFDocument:page:atPoint:]):
        (-[WKPrintingView _drawPreview:]):
        * UIProcess/mac/WKSharingServicePickerDelegate.mm:
        (-[WKSharingServicePickerDelegate sharingService:didShareItems:]):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (-[WKMenuTarget forwardContextMenuAction:]):
        (WebKit::WebContextMenuProxyMac::createContextMenuItem):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::searchTheWeb):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::writeItemsToPasteboard):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertImageToBitmap):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::drawPDFPage):

2017-12-22  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Implement "Soft Update" algorithm
        https://bugs.webkit.org/show_bug.cgi?id=180702
        <rdar://problem/36163461>

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-12-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
        https://bugs.webkit.org/show_bug.cgi?id=179914
        <rdar://problem/36196039>

        Unreviewed.

        I messed up a last-minute change, and inverted the conditional that determines whether to
        use the version script. I did test this change to ensure that it worked properly by checking
        that the library size was correct, but only in non-developer mode. My test was thwarted by
        -fvisibility=hidden. It looks like so few internal symbols are exported that missing the
        version script had little impact on the size of the resulting libraries. That's good, I
        suppose.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2017-12-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
        https://bugs.webkit.org/show_bug.cgi?id=179914

        Reviewed by Carlos Garcia Campos.

        Mark a few InjectedBundle symbols with default visibility, so they don't get hidden by
        -fvisibility=hidden. Also, remove Windows conditionals, since Windows is not supported by
        any GLib ports.

        Also, move the symbols map to here, and share it between WPE and GTK.

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h:
        * WebProcess/InjectedBundle/API/glib/WebKitInjectedBundleMain.cpp:
        * webkitglib-symbols.map: Renamed from Source/cmake/gtksymbols.filter.

2017-12-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Deprecate and replace webkit_form_submission_request_get_text_fields
        https://bugs.webkit.org/show_bug.cgi?id=176725

        Reviewed by Carlos Garcia Campos.

        The problem is this function returns results in a GHashTable, but many fields can have the
        same name, or no name at all, and those fields are currently just dropped. It's impossible
        to fix, since the GHashTable is part of the API, so deprecate it and add a new function that
        returns two GPtrArrays instead.

        * UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:
        (webkitFormSubmissionRequestCreate):
        (webkit_form_submission_request_get_text_fields):
        (webkit_form_submission_request_list_text_fields):
        * UIProcess/API/gtk/WebKitFormSubmissionRequest.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitFormSubmissionRequest.h:

2017-12-21  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerThreadProxy should set the correct cookie and cache partitioning options
        https://bugs.webkit.org/show_bug.cgi?id=181000

        Reviewed by Chris Dumez.

        Update Service Worker WebPreferencesStore based on the first web page added.
        This allows having the right storage blocking policy.

        Storing that policy in the context manager to set it properly when
        creating a new service worker thread proxy.

        Set up correctly partitioning parameters in the dummy Document used by the service worker.

        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::updatePreferencesStore):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * UIProcess/WebProcessPool.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::getAuthenticationInfo):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::updatePreferencesStore):
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-21  Dan Bernstein  <mitz@apple.com>

        WKPreferences doesn’t expose editable link behavior
        https://bugs.webkit.org/show_bug.cgi?id=181111

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (toAPI): Added. Converts WebCore::EditableLinkBehavior to _WKEditableLinkBehavior.
        (toEditableLinkBehavior): Added. Converts the other way.
        (-[WKPreferences _editableLinkBehavior]): Added this getter.
        (-[WKPreferences _setEditableLinkBehavior:]): Ditto.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h: Declared new property.

2017-12-21  Andy Estes  <aestes@apple.com>

        Address additional review feedback after r226182.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentRequest):

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Update FULLSCREEN_API feature defines.
        https://bugs.webkit.org/show_bug.cgi?id=181015

        Reviewed by Tim Horton.

        Change enabled iphone sdk for FULLSCREEN_API.

        * Configurations/FeatureDefines.xcconfig:

2017-12-21  John Wilander  <wilander@apple.com>

        Storage Access API: Make DocumentLoader::willSendRequest() and WebFrameLoaderClient::detachedFromParent2() tell the network process to get rid of any sub frame access entries
        https://bugs.webkit.org/show_bug.cgi?id=180728
        <rdar://problem/36009288>

        Reviewed by Youenn Fablet.

        This change calls the network process to clear any storage access
        entries when a subframe navigates or is detached.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::removeStorageAccess):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::removeStorageAccess):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::removeStorageAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::removeStorageAccess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::detachedFromParent2):
        (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Second Build fix after r226223
        https://bugs.webkit.org/show_bug.cgi?id=181089

        Unreviewed.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::setInlineRect):
        (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer):

2017-12-21  Jer Noble  <jer.noble@apple.com>

        Add initial DOM support for Media Capabilities
        https://bugs.webkit.org/show_bug.cgi?id=181064

        Reviewed by Eric Carlson.

        Add a new preference to enable the (disabled-by-default) Media Capabilities API.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetMediaCapabilitiesEnabled):
        (WKPreferencesGetMediaCapabilitiesEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:

2017-12-21  Keith Rollin  <krollin@apple.com>

        Add optional logging of per-resource cookie information
        https://bugs.webkit.org/show_bug.cgi?id=180883
        <rdar://problem/35802295>

        Reviewed by Brent Fulgham.

        In order to support the tracking of the efficacy of Intelligent
        Tracking Protection, add some logging of the cookie information
        associated with each loaded resource. This logging is off by default
        and is enabled with `defaults write -g WebKitLogCookieInformation
        -bool true`.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::shouldLogCookieInformation const):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        (WebKit::NetworkResourceLoader::shouldLogCookieInformation const):
        (WebKit::NetworkResourceLoader::logCookieInformation const):
        * NetworkProcess/NetworkResourceLoader.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2017-12-21  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed Debug build fix after r226217

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Element fullscreen interface should display the location
        https://bugs.webkit.org/show_bug.cgi?id=181006
        rdar://problem/36143176

        Reviewed by Simon Fraser.

        Show a short user visible location string with a lock if secure and green when trusted.

        Includes other interface cleanup and tweaks.

        * UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
        (-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
        (-[_WKFullScreenViewController visualEffectViewWithFrame:]):
        (mirrorEdgeInsets):
        (-[_WKFullScreenViewController _updateLayoutMargins]):
        (-[_WKFullScreenViewController viewDidLayoutSubviews]):
        (-[_WKFullScreenViewController setLocation:secure:trustedName:trustedSite:]):
        (-[_WKFullScreenViewController createSubviews]):
        (-[_WKFullScreenViewController loadView]):
        (-[_WKFullScreenViewController viewDidAppear:]):
        (-[_WKFullScreenViewController hideCancelButton]):
        (-[_WKFullScreenViewController showCancelButton:]):
        (-[_WKFullscreenRootViewController setShowsStatusBar:]):
        (-[_WKFullscreenRootViewController prefersStatusBarHidden]):
        (-[WKFullScreenWindowController _invalidateEVOrganizationName]):
        (-[WKFullScreenWindowController isSecure]):
        (-[WKFullScreenWindowController _serverTrust]):
        (-[WKFullScreenWindowController _EVOrganizationName]):
        (-[WKFullScreenWindowController updateLocationInfo]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[_WKFullScreenViewController prefersStatusBarHidden]): Deleted.
        * WebKit.xcassets/Done.imageset/Contents.json: Removed.
        * WebKit.xcassets/LockMini.imageset/Contents.json: Added.
        * WebKit.xcassets/LockMini.imageset/NavigationBarLockMini@2x.pdf: Copied from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.
        * WebKit.xcassets/LockMini.imageset/NavigationBarLockMini@3x.pdf: Renamed from Source/WebKit/WebKit.xcassets/Done.imageset/Done.pdf.

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Enable picture-in-picture from inline element on suspend.
        https://bugs.webkit.org/show_bug.cgi?id=180942
        rdar://problem/34745234

        Reviewed by Jer Noble.

        Add support for video fullscreen standby and imporved fullscreen state transition process.

        Video fullscreen standby allows a video element to have its fullscreen interface state created and
        continuously updated so that it can quickly change presentation state on application state.

        In order to accomplish this, this change allows the fullscreen presentation to decide when it needs
        an updated inline rect, or the presence of the video layer. 

        This is conditionalized until mac supports this model.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::requestUpdateInlineRect):
        (WebKit::VideoFullscreenModelContext::requestVideoContentLayer):
        (WebKit::VideoFullscreenModelContext::returnVideoContentLayer):
        (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
        (WebKit::VideoFullscreenManagerProxy::setInlineRect):
        (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer):
        (WebKit::VideoFullscreenManagerProxy::requestUpdateInlineRect):
        (WebKit::VideoFullscreenManagerProxy::requestVideoContentLayer):
        (WebKit::VideoFullscreenManagerProxy::returnVideoContentLayer):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        * WebProcess/FullScreen/WebFullScreenManager.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::supportsVideoFullscreenStandby):
        (WebKit::WebChromeClient::enterVideoFullscreenForVideoElement):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/cocoa/VideoFullscreenManager.h:
        (WebKit::VideoFullscreenInterfaceContext::fullscreenStandby const):
        (WebKit::VideoFullscreenInterfaceContext::setFullscreenStandby):
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
        (WebKit::VideoFullscreenManager::requestUpdateInlineRect):
        (WebKit::VideoFullscreenManager::requestVideoContentLayer):
        (WebKit::VideoFullscreenManager::returnVideoContentLayer):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):
        (WebKit::VideoFullscreenManager::didCleanupFullscreen):

2017-12-20  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add screen capture IDL and stub functions
        https://bugs.webkit.org/show_bug.cgi?id=181070
        <rdar://problem/35555184>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _screenCaptureEnabled]):
        (-[WKPreferences _setScreenCaptureEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2017-12-20  Youenn Fablet  <youenn@apple.com>

        Crash when clearing std::optional<WebKit::WebServiceWorkerFetchTaskClient::BlobLoader>
        https://bugs.webkit.org/show_bug.cgi?id=181061

        Reviewed by Alex Christensen.

        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didFinishBlobLoading): moving the object to not destroy 'this' too soon.

2017-12-20  Youenn Fablet  <youenn@apple.com>

        Support service worker interception of request with blob body
        https://bugs.webkit.org/show_bug.cgi?id=181035

        Reviewed by Chris Dumez.

        In case of service worker, remove the connection check to get access to the blob registry.
        Apply this for cloning blobs registered by another process.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::registerBlobURL):

2017-12-20  Daniel Bates  <dabates@apple.com>

        Remove Alternative Presentation Button
        https://bugs.webkit.org/show_bug.cgi?id=180500
        <rdar://problem/35891047>

        Reviewed by Simon Fraser.

        We no longer need the alternative presentation button.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didClickAlternativePresentationButton): Deleted.
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didClickAlternativePresentationButton): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleAutoFillButtonClick):
        (WebKit::WebPageProxy::handleAlternativePresentationButtonClick): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
        (API::InjectedBundle::PageUIClient::didClickAutoFillButton):
        (API::InjectedBundle::PageUIClient::didClickAlternativePresentationButton): Deleted.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (-[WKWebProcessPlugInFrame substituteElements:withAlternativePresentationButtonWithIdentifier:]): Deleted.
        (-[WKWebProcessPlugInFrame removeAlternativePresentationButton:]): Deleted.
        (-[WKWebProcessPlugInFrame elementsReplacedByAlternativePresentationButtonWithIdentifier:]): Deleted.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameFocus):
        (WKBundleSubstituteWithAlternativePresentationButton): Deleted.
        (WKBundleRemoveAlternativePresentationButton): Deleted.
        (WKBundleElementsReplacedByAlternativePresentationButton): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::didClickAlternativePresentationButton): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::handleAlternativePresentationButtonClick): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-12-20  Andy Estes  <aestes@apple.com>

        [Apple Pay] Tell PassKit whether Apple Pay JS or Payment Request was used to start an Apple Pay session
        https://bugs.webkit.org/show_bug.cgi?id=181001
        <rdar://problem/35479106>

        Reviewed by Tim Horton.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toAPIType):
        (WebKit::toPKPaymentRequest):

2017-12-20  Ms2ger  <Ms2ger@igalia.com>

        REGRESSION(r226160) Build broken when MEDIA_STREAM is disabled with MediaStreamRequest namespace confusion
        https://bugs.webkit.org/show_bug.cgi?id=181026

        Unreviewed build fix.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
          Remove UNUSED_PARAM macros that check for (undefined) members rather than params.

2017-12-19  Myles C. Maxfield  <mmaxfield@apple.com>

        Refactor user-installed font setting for clarity
        https://bugs.webkit.org/show_bug.cgi?id=181013

        Reviewed by Simon Fraser.

        There are no clients of this SPI yet, so we can rename it to remove the
        grammatical negative.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetShouldAllowUserInstalledFonts):
        (WKPreferencesGetShouldAllowUserInstalledFonts):
        (WKPreferencesSetShouldDisallowUserInstalledFonts): Deleted.
        (WKPreferencesGetShouldDisallowUserInstalledFonts): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _shouldAllowUserInstalledFonts]):
        (-[WKPreferences _setShouldAllowUserInstalledFonts:]):
        (-[WKPreferences _shouldDisallowUserInstalledFonts]): Deleted.
        (-[WKPreferences _setShouldDisallowUserInstalledFonts:]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-12-19  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up RealtimeMediaSource interfaces
        https://bugs.webkit.org/show_bug.cgi?id=180934
        <rdar://problem/36108648>

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.h: Update CaptureDevice encoder.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest): Renamed from createRequest.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Update for
        API change.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Filter the 
        vector returned by getMediaStreamDevices.
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): Update for API change.
        (WebKit::UserMediaPermissionRequestProxy::allow): Ditto.
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        (WebKit::UserMediaPermissionRequestProxy::requestType const):

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Ditto.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::startUserMediaRequest): m_blockedRequests -> m_blockedUserMediaRequests.
        (WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest): Ditto.
        (WebKit::UserMediaPermissionRequestManager::mediaCanStart): Ditto.
        (WebKit::UserMediaPermissionRequestManager::removeMediaRequestFromMaps): Ditto.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

2017-12-19  Jer Noble  <jer.noble@apple.com>

        Playing media elements which call "pause(); play()" will have the play promise rejected.
        https://bugs.webkit.org/show_bug.cgi?id=180781
        <rdar://problem/33191377>

        Reviewed by Eric Carlson.

        shouldRequireUserGestureToLoadVideo() should default to false on Mac.

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

2017-12-19  Chris Dumez  <cdumez@apple.com>

        Handle Fetch should wait for the service worker's state to become activated
        https://bugs.webkit.org/show_bug.cgi?id=180959

        Reviewed by Youenn Fablet.

        Handle Fetch should wait for the service worker's state to become activated when
        it is currently activating.

        Specification:
        - https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm (Step 16)

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):

2017-12-19  Youenn Fablet  <youenn@apple.com>

        Service Worker should not clean HTTP headers added by the application or by fetch specification before service worker interception
        https://bugs.webkit.org/show_bug.cgi?id=180939

        Reviewed by Chris Dumez.

        Passing referrer as an explicit parameter of StartFetch.

        Cleaning request headers based on ResourceLoaderOptions.httpHeadersToKeep.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::start):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-19  Andy Estes  <aestes@apple.com>

        [Apple Pay] Stop maintaining a list of payment networks
        https://bugs.webkit.org/show_bug.cgi?id=180965
        <rdar://problem/34696560>

        Reviewed by Tim Horton.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h: Defined availablePaymentNetworks.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toSupportedNetworks):
        (WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks): Called
        +[PKPaymentRequest availableNetworks].
        (WebKit::toSupportedNetwork): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters): Set parameters.availablePaymentNetworks by
        calling WebPaymentCoordinatorProxy::availablePaymentNetworks.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Set pageConfiguration.availablePaymentNetworks to
        parameters.availablePaymentNetworks.

2017-12-18  Brady Eidson  <beidson@apple.com>

        Add ability to API test Service Workers via a custom protocol.
        https://bugs.webkit.org/show_bug.cgi?id=180911

        Reviewed by Chris Dumez.

        This adds a set of "Service Workers can handle this" schemes to the scheme registry
        and most of these WebKit changes are to support getting those values out to all processes.
        
        Additionally, WebsiteDataRecords used to be file/http(s)-only. That seems bizarre and definitely
        got in the way of testing. So I also added a way to allow any scheme to result in a valid record.

        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::registerURLSchemeServiceWorkersCanHandle const):
        * Shared/ChildProcess.h:
        * Shared/ChildProcess.messages.in:
        
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _registerURLSchemeServiceWorkersCanHandle:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):
        * UIProcess/WebProcessPool.h:
        
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::allowWebsiteDataRecordsForAllOrigins):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):
        
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2017-12-18  Brady Eidson  <beidson@apple.com>

        Apps that use both WK1 and WK2 can crash creating a WKWebsiteDataStore.
        https://bugs.webkit.org/show_bug.cgi?id=180953

        Reviewed by Chris Dumez.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp: Make an isMainThread() asset be an isUIThread() assert.

2017-12-18  Brent Fulgham  <bfulgham@apple.com>

        [macOS, iOS] Add new mach lookup port for CoreMedia remote control
        https://bugs.webkit.org/show_bug.cgi?id=180938
        <rdar://problem/35447664>

        Reviewed by Eric Carlson.

        Update the app sandbox to support a new XPC endpoint for CoreMedia. This endpoint exposes
        existing functions through a new, more-focused interface. This will (hopefully) allow us
        to remove the more generic endpoints in a future update.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-12-18  Megan Gardner  <megan_gardner@apple.com>

        Support Autoscrolling in contenteditable for WK2
        https://bugs.webkit.org/show_bug.cgi?id=180789

        Reviewed by Simon Frasier and Wenson Hsieh.

        Implements the UIKit protocol for autoscrolling and alerts the Web Process to start
        (or stop) an autoscroll to the specified position. Allows for scrolling in contenteditable
        in WebKit2.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView startAutoscroll:]):
        (-[WKContentView cancelAutoscroll]):
        (-[WKContentView scrollSelectionToVisible:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startAutoscrollAtPosition):
        (WebKit::WebPageProxy::cancelAutoscroll):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::startAutoscrollAtPosition):
        (WebKit::WebPage::cancelAutoscroll):

2017-12-18  Youenn Fablet  <youenn@apple.com>

        Add support for response blob given to fetch events
        https://bugs.webkit.org/show_bug.cgi?id=180894

        Reviewed by Darin Adler.

        In case of blob data, read it from Service Worker process and send it to WebProcess.
        At some point, web process should be able to read it directly from NetworkProcess.

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinishBlobLoading):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

2017-12-18  Daniel Bates  <dabates@apple.com>

        Add SPI to query for the current and last auto fill button type and pass user data object to _webView:focusShouldStartInputSession:
        https://bugs.webkit.org/show_bug.cgi?id=180774
        <rdar://problem/36033832>

        Reviewed by Tim Horton.

        Have WKFocusedElementInfo own the optional user data object associated with the focused
        element as opposed to having WKFormInputSession own it. This allows the Injected Bundle's
        _webView:focusShouldStartInputSession: delegate callback to make use of this user data
        to determine whether focus should start a new input session.

        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFormInputSession initWithContentView:focusedElementInfo:]):
        (-[WKFormInputSession userObject]):
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (-[WKFocusedElementInfo userObject]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
        (-[WKFormInputSession initWithContentView:focusedElementInfo:userObject:]): Deleted.
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:]): Deleted.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (toWKAutoFillButtonType):
        (-[WKWebProcessPlugInNodeHandle htmlInputElementAutoFillButtonType]):
        (-[WKWebProcessPlugInNodeHandle htmlInputElementLastAutoFillButtonType]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        (toWKAutoFillButtonType):
        (WKBundleNodeHandleGetHTMLInputElementAutoFillButtonType):
        (WKBundleNodeHandleGetHTMLInputElementLastAutoFillButtonType):
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::InjectedBundleNodeHandle::htmlInputElementAutoFillButtonType const):
        (WebKit::InjectedBundleNodeHandle::htmlInputElementLastAutoFillButtonType const):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

2017-12-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add WebKitWebView::web-process-terminated signal and deprecate web-process-crashed
        https://bugs.webkit.org/show_bug.cgi?id=180862

        Reviewed by Michael Catanzaro.

        Once the memory pressure web process monitor is enabled in bug #180861 the web process can be killed due to
        memory limits. We need to expose the reason of the web process termination to allow applications handle the
        memory limit case.

        * UIProcess/API/glib/WebKitNavigationClient.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init):
        (webkitWebViewWebProcessTerminated):
        (webkitWebViewWebProcessCrashed): Deleted.
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitWebView.h:

2017-12-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Enable WebProcess memory monitor
        https://bugs.webkit.org/show_bug.cgi?id=180861

        Reviewed by Michael Catanzaro.

        For some reason this is only enabled in mac. We want to enable it also in GTK and WPE ports. This runs every 30
        seconds to release memory or even kill the process if necessary. Carlos López has realized that in some
        applications using video tags, the memory grows a lot and it's never released. It seems it's not memory leaked,
        but simply large memory allocations (I guess it's gst allocating video frames) that make the heap grow. The
        memory pressure calls malloc_trim that releases all that memory keeping the web process footprint stable.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2017-12-17  John Wilander  <wilander@apple.com>

        Storage Access API: Make document.hasStorageAccess() retrieve current status from the network process
        https://bugs.webkit.org/show_bug.cgi?id=180681
        <rdar://problem/35982161>

        Reviewed by Alex Christensen.

        This change makes an asynchronous request to the network process
        to see if storage access has been granted for this frame, on this
        page, for this domain.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains):
        (WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::hasStorageAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::hasStorageAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        * WebProcess/WebPage/WebPage.h:

2017-12-16  Dan Bernstein  <mitz@apple.com>

        WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
        https://bugs.webkit.org/show_bug.cgi?id=180613
        <rdar://problem/35946124>

        Reviewed by Geoff Garen.

        Added _alwaysShowsHorizontalScroller and _alwaysShowsVerticalScroller properties to
        WKWebView.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const): Encode new alwaysShowsHorizontalScroller
          and alwaysShowsVerticalScroller parameters.
        (WebKit::WebPageCreationParameters::decode): Decode new parameters.

        * Shared/WebPageCreationParameters.h: Added new alwaysShowsHorizontalScroller and
          alwaysShowsVerticalScroller boolean parameters.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _alwaysShowsHorizontalScroller]): New accessor that calls through to the
          WebPageProxy.
        (-[WKWebView _setAlwaysShowsHorizontalScroller:]): Ditto.
        (-[WKWebView _alwaysShowsVerticalScroller]): Ditto.
        (-[WKWebView _setAlwaysShowsVerticalScroller:]): Ditto.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Declare new properties.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): Update member variable and send
          a message to the page.
        (WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): Ditto.
        (WebKit::WebPageProxy::creationParameters): Initialize new parameters from the new member
          variables.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::alwaysShowsHorizontalScroller const): New getter.
        (WebKit::WebPageProxy::alwaysShowsVerticalScroller const): Ditto.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Factor
          alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller into the initial scroller
          modes and scroller locks when creating the FrameView.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Initialize new m_alwaysShowsHorizontalScroller and
          m_alwaysShowsVerticalScroller member variables from the corresponding new creation
          parameters.
        (WebKit::WebPage::setAlwaysShowsHorizontalScroller): Update the member variable and set
          new scrollbar mode on the frame view if needed.
        (WebKit::WebPage::setAlwaysShowsVerticalScroller): Ditto.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::alwaysShowsHorizontalScroller const): New getter.
        (WebKit::WebPage::alwaysShowsVerticalScroller const): Ditto.

        * WebProcess/WebPage/WebPage.messages.in: Added new messages.

2017-12-16  Brady Eidson  <beidson@apple.com>

        Implement getting ServiceWorker registrations for the WKWebsiteDataStore API
        https://bugs.webkit.org/show_bug.cgi?id=180886

        Reviewed by Chris Dumez.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::fetchWebsiteData):

2017-12-16  Brent Fulgham  <bfulgham@apple.com>

        Plugin processes are repeatedly spun up to do nothing
        https://bugs.webkit.org/show_bug.cgi?id=180885
        <rdar://problem/36082564>

        Reviewed by Geoffrey Garen.

        Tested by TestWebKitAPI.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData): Don't ask plugins to remove data when no websites are
        passed to the function.

2017-12-15  Chris Dumez  <cdumez@apple.com>

        Support updating a service worker registration's updateViaCache flag
        https://bugs.webkit.org/show_bug.cgi?id=180888

        Reviewed by Brady Eidson.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

        Introduce SPI _WKWebsitePolicies.websiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=180880
        <rdar://problem/35535328>

        Reviewed by Andy Estes.

        The SPI doesn't do anything yet, but it already has some restrictions and tests!
        WKWebView._updateWebsitePolicies can't be used to update a WKWebsiteDataStore.  Only during navigation.
        Even during navigation, we are only supporting the default and ephemeral data stores right now.
        This functionality won't be supported in the C API.  This is enforced with RELEASE_ASSERTs.
        If we change our minds, we can change them and add restrictions similar to the ObjC restrictions.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::WebsitePolicies):
        (API::WebsitePolicies::setWebsiteDataStore):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKFramePolicyListener.cpp:
        (WKFramePolicyListenerUseWithPolicies):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageUpdateWebsitePolicies):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateWebsitePolicies:]):
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies websiteDataStore]):
        (-[_WKWebsitePolicies setWebsiteDataStore:]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

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

        Fix GTK build.

        * UIProcess/API/glib/WebKitPolicyDecision.cpp:
        (webkit_policy_decision_use):

2017-12-15  Brent Fulgham  <bfulgham@apple.com>

        Avoid waking plugin process up unnecessarily
        https://bugs.webkit.org/show_bug.cgi?id=180819
        <rdar://problem/36051548>

        Reviewed by Geoffrey Garen.

        WebKit purges data from origins marked as prevalent on an hourly interval. This includes waking up plugins
        and removing relevant data stored in those plugins. This causes multiple plugin processes to be spawned,
        even though the user is not interacting with any plugins.

        Instead, we should delay removing data from plugins until they are loaded due to the user interacting with
        a website using a plugin.

        Make the following changes:
        1. When looking for plugin data related to prevalent sites, only examine plugin data if the relevant plugin
           is already running.
        2. When the state of the active plugins changes, trigger a data removal check.

        * Shared/WebsiteData/WebsiteDataFetchOption.h: Add a new option 'DoNotCreateProcesses'
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::getPluginProcessConnection): Pass new argument 'Launch', since we always
        want to launch processes in this case.
        (WebKit::PluginProcessManager::fetchWebsiteData): Pass a new parameter 'processAccessType' so that the
        caller can specify if they only want to examine already-active plugins, or if they want to spawn new
        processes. Call the completion handler if we need to exit early when no process exists.
        (WebKit::PluginProcessManager::deleteWebsiteData): Always launch new processes.
        (WebKit::PluginProcessManager::deleteWebsiteDataForHostNames): Ditto.
        (WebKit::PluginProcessManager::getOrCreatePluginProcess): Accept new parameter indicating if new processes
        shoudl be launched. Also switch to C++ style loops.
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Use the
        new 'DoNotCreatePrcesses' access type.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Update the active plugin count when we
        remove data.
        (WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords const): Return true if the active plugin
        process count changed since the last time data was removed.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply): Check fetch option for new 'DoNotCreateProcesses' flag,
        and tell the PluginProcessManager which mode we are using.

2017-12-15  Brady Eidson  <beidson@apple.com>

        Make sure only WebsiteDataStores with valid SessionIDs register themselves.
        https://bugs.webkit.org/show_bug.cgi?id=180869

        Reviewed by Chris Dumez.

        Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
        but we didn't account for that in the map added in r225935.

        Seems prudent to make sure we're not doing hash table operations with invalid keys.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
        (WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-12-14  Simon Fraser  <simon.fraser@apple.com>

        Rotating when zoomed in with fingers down can result in a broken tab
        https://bugs.webkit.org/show_bug.cgi?id=180859
        rdar://problem/34532817

        Reviewed by Tim Horton.

        If you zoom in fully, then, with two fingers down, rotate the iPhone and rotate back,
        then the tab can get into a broken state where the WKContentView has a non-zero position
        which may push it entirely off-screen. The tab never recovers.

        This is caused by a bug in UIKit (rdar://problem/36065495) so work around it by always
        re-setting the position of the content view after zooming. We initialize contentView.frame
        from self.bounds, so setting the position (via "center") to the bounds origin should always be safe.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

2017-12-15  Brady Eidson  <beidson@apple.com>

        API test WebKit.WebsiteDataStoreCustomPaths is failing
        https://bugs.webkit.org/show_bug.cgi?id=180870

        Reviewed by Chris Dumez.

        To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
        relevant SessionID to more places.

        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/ServiceWorkerProcessProxy.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getStorageProcessConnection):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):

        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::handleFetch):

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
        (WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        Move WebKit::WebsitePolicies to API::WebsitePolicies
        https://bugs.webkit.org/show_bug.cgi?id=180873

        Reviewed by Joseph Pecoraro.

        It's just an API data object now.  I need it to be in the API namespace so we can
        give it references to other API namespace objects without weird layering violations.

        * CMakeLists.txt:
        * Shared/WebsiteAutoplayPolicy.h: Added.
        * Shared/WebsiteAutoplayQuirk.h: Added.
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::fromWebsitePolicies): Deleted.
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp: Added.
        (API::WebsitePolicies::~WebsitePolicies):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h: Copied from Source/WebKit/UIProcess/WebsitePolicies.h.
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKFramePolicyListener.cpp:
        (WKFramePolicyListenerUseWithPolicies):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageUpdateWebsitePolicies):
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesGetTypeID):
        (WKWebsitePoliciesCreate):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateWebsitePolicies:]):
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies dealloc]):
        (-[_WKWebsitePolicies init]):
        * UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
        (WebKit::wrapper): Deleted.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/WebFormSubmissionListenerProxy.cpp:
        * UIProcess/WebsitePolicies.h: Removed.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:

2017-12-14  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ build fix after r225954.

        * UIProcess/API/glib/WebKitPolicyDecision.cpp:
        Explicitly include the WebsitePoliciesData.h header, avoiding build
        failures due to incomplete WebsitePoliciesData type.

2017-12-14  David Kilzer  <ddkilzer@apple.com>

        Enable -Wstrict-prototypes for WebKit
        <https://webkit.org/b/180757>
        <rdar://problem/36024132>

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        (CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
        * Platform/spi/ios/UIKitSPI.h:
        (_UIDragInteractionDefaultLiftDelay): Add 'void' to C function declaration.
        (UIKeyboardEnabledInputModesAllowOneToManyShortcuts): Ditto.

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

        Serialize WebsitePoliciesData instead of WebsitePolicies
        https://bugs.webkit.org/show_bug.cgi?id=180847

        Reviewed by Joseph Pecoraro.

        No change in behavior.  This will allow me to add things to WebsitePolicies that have 
        a different form when serialized to another process.
        
        Also, remove API::WebsitePolicies because the wrapper isn't necessary.
        WebsitePolicies is now the API type that only exists in the UIProcess.

        * Shared/WebsitePolicies.cpp: Removed.
        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::contentBlockersEnabled const): Deleted.
        (WebKit::WebsitePolicies::setContentBlockersEnabled): Deleted.
        (WebKit::WebsitePolicies::allowedAutoplayQuirks const): Deleted.
        (WebKit::WebsitePolicies::setAllowedAutoplayQuirks): Deleted.
        (WebKit::WebsitePolicies::autoplayPolicy const): Deleted.
        (WebKit::WebsitePolicies::setAutoplayPolicy): Deleted.
        (WebKit::WebsitePolicies::customHeaderFields): Deleted.
        (WebKit::WebsitePolicies::takeCustomHeaderFields): Deleted.
        (WebKit::WebsitePolicies::setCustomHeaderFields): Deleted.
        * Shared/WebsitePoliciesData.cpp: Copied from Source/WebKit/Shared/WebsitePolicies.cpp.
        (WebKit::WebsitePoliciesData::fromWebsitePolicies):
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        (WebKit::WebsitePolicies::WebsitePolicies): Deleted.
        (WebKit::WebsitePolicies::encode const): Deleted.
        (WebKit::WebsitePolicies::decode): Deleted.
        (WebKit::WebsitePolicies::applyToDocumentLoader): Deleted.
        * Shared/WebsitePoliciesData.h: Added.
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::decidePolicyForNavigationAction):
        (API::NavigationClient::decidePolicyForNavigationResponse):
        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNavigationAction):
        (API::PolicyClient::decidePolicyForNewWindowAction):
        (API::PolicyClient::decidePolicyForResponse):
        * UIProcess/API/APIWebsitePolicies.cpp: Removed.
        * UIProcess/API/APIWebsitePolicies.h: Removed.
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKFramePolicyListener.cpp:
        (WKFramePolicyListenerUse):
        (WKFramePolicyListenerUseWithPolicies):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageUpdateWebsitePolicies):
        (WKPageSetPagePolicyClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesGetTypeID):
        (WKWebsitePoliciesCreate):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateWebsitePolicies:]):
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies dealloc]):
        (-[_WKWebsitePolicies init]):
        * UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
        (WebKit::wrapper):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
        * UIProcess/WebFrameListenerProxy.cpp:
        (WebKit::WebFrameListenerProxy::receivedPolicyDecision):
        * UIProcess/WebFrameListenerProxy.h:
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::receivedPolicyDecision):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::updateWebsitePolicies):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        (WebKit::WebPage::updateWebsitePolicies):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-12-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r225931.

        Breaks internal builds.

        Reverted changeset:

        "Fix Mac CMake build"
        https://bugs.webkit.org/show_bug.cgi?id=180835
        https://trac.webkit.org/changeset/225931

2017-12-14  Chris Dumez  <cdumez@apple.com>

        Clearing WebSite data on iOS does not clear the Fetch Cache
        https://bugs.webkit.org/show_bug.cgi?id=180846
        <rdar://problem/36060129>

        Reviewed by Youenn Fablet.

        When clearing WebSite data, construct the engine for the given sessionID
        if missing, instead of not clearing anything when the engine is missing.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):

2017-12-14  Chris Dumez  <cdumez@apple.com>

        self.importScripts() should obey updateViaCache inside service workers
        https://bugs.webkit.org/show_bug.cgi?id=180826

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

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

        Reviewed by Darin Adler.

        We still return bool since IconDatabase::open returns `false` if it is opened twice.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::open):
        * UIProcess/API/glib/IconDatabase.h:

2017-12-14  Brady Eidson  <beidson@apple.com>

        REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
        https://bugs.webkit.org/show_bug.cgi?id=180722

        Reviewed by Chris Dumez.

        - Add a test-only accessor to get the number of WebProcesses hosting WebPages
        - Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
        - When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID,
          the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows
          us to continue deferring creation of the default data store if it's not needed.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::connectionToContextProcessWasClosed):
        (WebKit::StorageProcess::createServerToContextConnection):
        * StorageProcess/StorageProcess.h:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _webPageContentProcessCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::existingDataStoreForSessionID):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-12-14  John Wilander  <wilander@apple.com>

        Storage Access API: Implement frame-specific access in the document.cookie layer
        https://bugs.webkit.org/show_bug.cgi?id=180682
        <rdar://problem/35982257>

        Reviewed by Alex Christensen.

        CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
        CookiesStrategy::cookieRequestHeaderFieldValue(), and
        CookiesStrategy::getRawCookies() now take optional parameters for
        frameID and pageID to allow frame-specific scoping of cookies.

        This change makes the return values of FrameLoaderClient::frameID()
        and FrameLoaderClient::pageID() std::optional<uint64_t> so that
        WebCore can call those getters and get the right return values in
        WebKit and std:nullopt in WebKitLegacy.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * Shared/mac/CookieStorageShim.mm:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
            Now handles the fact that FrameLoaderClient::frameID() and
            FrameLoaderClient::pageID() return an optional.
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::pageID const):
        (WebKit::WebFrameLoaderClient::frameID const):
            Now return an optional.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

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

        Fix Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=180835

        Reviewed by Andy Estes.

        * PlatformMac.cmake:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::ephemeralParametersWithSessionID):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/API/APIAttachment.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID):

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

        Use move semantics for SandboxExtension::Handle
        https://bugs.webkit.org/show_bug.cgi?id=180792

        Reviewed by Andy Estes.
        
        Passing them around as const SandboxExtension::Handle& is wrong because ownership is transferred and they are consumed.
        It only works now because their contents are mutable, which isn't a good use of mutable.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::decideDestinationWithSuggestedFilename):
        (WebKit::Download::didDecideDownloadDestination):
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::continueDecidePendingDownloadDestination):
        (WebKit::DownloadManager::resumeDownload):
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
        * NetworkProcess/Downloads/ios/DownloadIOS.mm:
        (WebKit::Download::resume):
        * NetworkProcess/Downloads/mac/DownloadMac.mm:
        (WebKit::Download::resume):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
        (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkDataTask.h:
        (WebKit::NetworkDataTask::setPendingDownloadLocation):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::setPendingDownloadLocation):
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::resumeDownload):
        (WebKit::NetworkProcess::continueDecidePendingDownloadDestination):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::setPendingDownloadLocation):
        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::create):
        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::start):
        (WebKit::WebMemorySampler::initializeSandboxedLogFile):
        * Shared/WebMemorySampler.h:
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtension::create):
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::grantSandboxExtensionsForBlobs):
        * StorageProcess/StorageProcess.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::performDragOperation):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dragEntered):
        (WebKit::WebPageProxy::dragUpdated):
        (WebKit::WebPageProxy::dragExited):
        (WebKit::WebPageProxy::performDragOperation):
        (WebKit::WebPageProxy::performDragControllerAction):
        * UIProcess/WebPageProxy.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::create):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:
        (WebKit::MediaDeviceSandboxExtensions::operator[]):
        (WebKit::MediaDeviceSandboxExtensions::operator[] const): Deleted.
        * WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getPathnamesForType):
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::goToItem):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::reload):
        (WebKit::WebPage::performDragControllerAction):
        (WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
        (WebKit::WebPage::SandboxExtensionTracker::beginLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::startMemorySampler):
        * WebProcess/WebProcess.h:

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

        Make WebsitePolicies a proper class with getters and setters
        https://bugs.webkit.org/show_bug.cgi?id=180788

        Reviewed by Andy Estes.

        Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
        This has a side-effect of now applying custom http header fields and content blocking enabled status
        when updating WebsitePolicies.  This will result in these being applied when a user updates
        the per-site settings, and they weren't before.

        * CMakeLists.txt:
        * Shared/WebsitePolicies.cpp: Added.
        (WebKit::WebsitePolicies::WebsitePolicies):
        (WebKit::WebsitePolicies::encode const):
        (WebKit::WebsitePolicies::decode):
        (WebKit::WebsitePolicies::applyToDocumentLoader):
        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::contentBlockersEnabled const):
        (WebKit::WebsitePolicies::setContentBlockersEnabled):
        (WebKit::WebsitePolicies::allowedAutoplayQuirks const):
        (WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
        (WebKit::WebsitePolicies::autoplayPolicy const):
        (WebKit::WebsitePolicies::setAutoplayPolicy):
        (WebKit::WebsitePolicies::customHeaderFields):
        (WebKit::WebsitePolicies::takeCustomHeaderFields):
        (WebKit::WebsitePolicies::setCustomHeaderFields):
        (WebKit::WebsitePolicies::encode const): Deleted.
        (WebKit::WebsitePolicies::decode): Deleted.
        * UIProcess/API/APIWebsitePolicies.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateWebsitePolicies):
        * WebProcess/WebPage/WebPage.h:

2017-12-14  Chris Dumez  <cdumez@apple.com>

        Enable Service Workers on iOS
        https://bugs.webkit.org/show_bug.cgi?id=180836

        Reviewed by Alex Christensen.

        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/WebProcessPool.cpp:
        Enable Service Workers on iOS.

        (WebKit::WebProcessPool::ensureNetworkProcess):
        Fall back to defaultCacheStorageDirectory() instead of the empty string
        for the cache storage directory, when we do not have a store.

2017-12-14  Chris Dumez  <cdumez@apple.com>

        Service worker script fetching currently always uses the network cache
        https://bugs.webkit.org/show_bug.cgi?id=180816

        Reviewed by Alex Christensen.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-12-14  Chris Dumez  <cdumez@apple.com>

        StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
        https://bugs.webkit.org/show_bug.cgi?id=180784

        Reviewed by Youenn Fablet.

        StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
        instead of not clearing anything when no such SWServer exists.

        This will be useful on iOS once <rdar://problem/36034667> is fully fixed.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

2017-12-14  Chris Dumez  <cdumez@apple.com>

        WebsiteDataStore::defaultDataStoreConfiguration() fails to set default value for serviceWorkerRegistrationDirectory
        https://bugs.webkit.org/show_bug.cgi?id=180794
        <rdar://problem/36034667>

        Reviewed by Youenn Fablet.

        Set the default IndexedDB and ServiceWorker database paths in WebsiteDataStore::defaultDataStoreConfiguration().
        Without this, the client is forced to set the expected path.

        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        (API::WebsiteDataStore::defaultDataStoreConfiguration):

2017-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Cmd-Option-R in docked inspector causes the inspector to reload instead of the inspected page
        https://bugs.webkit.org/show_bug.cgi?id=180775
        <rdar://problem/35964592>

        Reviewed by Brian Burg.

        * WebKit.xcodeproj/project.pbxproj:
        Remove old files add new files.

        * PlatformMac.cmake:
        * UIProcess/mac/WKWebInspectorWKWebView.h: Removed.
        * UIProcess/mac/WKWebInspectorWKWebView.mm: Removed.
        Remove unused WKWebInspectorWKWebView.

        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
        * UIProcess/mac/WKInspectorViewController.mm:
        (-[WKInspectorViewController dealloc]):
        (-[WKInspectorViewController webView]):
        (-[WKInspectorViewController inspectorWKWebViewReload:]):
        (-[WKInspectorViewController inspectorWKWebViewReloadFromOrigin:]):
        Handle WKWebView IBActions sent to the inspector frontend WKWebView.

        * UIProcess/mac/WKInspectorWKWebView.h:
        * UIProcess/mac/WKInspectorWKWebView.mm:
        (-[WKInspectorWKWebView tag]):
        (-[WKInspectorWKWebView inspectorWKWebViewDelegate]):
        (-[WKInspectorWKWebView setInspectorWKWebViewDelegate:]):
        (-[WKInspectorWKWebView reload:]):
        (-[WKInspectorWKWebView reloadFromOrigin:]):
        Move WKInspectorWKWebView into its own file. Include a delegate
        to handle reload IBActions that will want to override.

2017-12-13  Chris Dumez  <cdumez@apple.com>

        Fix copy/paste error in ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration()
        https://bugs.webkit.org/show_bug.cgi?id=180782

        Reviewed by Youenn Fablet.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

2017-12-13  Daniel Bates  <dabates@apple.com>

        Add more auto fill button types
        https://bugs.webkit.org/show_bug.cgi?id=180651
        <rdar://problem/35891125>
        And
        <rdar://problem/35977943>

        Reviewed by Brent Fulgham.

        Adds enumerators for the new auto fill button types.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (toAutoFillButtonType):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        (toAutoFillButtonType):
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:

2017-12-13  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r225864.

        This caused the Layout test step to crash out on Debug testers

        Reverted changeset:

        "REGRESSION (r225789): API tests
        WKProcessPool.InitialWarmedProcessUsed and
        WebKit.WebsiteDataStoreCustomPaths are failing."
        https://bugs.webkit.org/show_bug.cgi?id=180722
        https://trac.webkit.org/changeset/225864

2017-12-13  Brady Eidson  <beidson@apple.com>

        REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
        https://bugs.webkit.org/show_bug.cgi?id=180722

        Reviewed by Chris Dumez.

        - Add a test-only accessor to get the number of WebProcesses hosting WebPages
        - Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
        - When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID,
          the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows
          us to continue deferring creation of the default data store if it's not needed.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::connectionToContextProcessWasClosed):
        (WebKit::StorageProcess::createServerToContextConnection):
        * StorageProcess/StorageProcess.h:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _webPageContentProcessCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::existingDataStoreForSessionID):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        REGRESSION(225597): Can't select a text box or web view on a page when VO is on.
        https://bugs.webkit.org/show_bug.cgi?id=180756
        <rdar://problem/35996158>

        Reviewed by Brent Fulgham.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::AccessibilityProcessSuspendedNotification):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::shouldLeakBoost):
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeProcess):

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

        [iOS] Further Trim WebContent Process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=180727
        <rdar://problem/18899506>

        Reviewed by Eric Carlson.

        Take another pass over the contents of the file and remove addition items that
        don't have call sites in WebKit.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-12-13  Daniel Bates  <dabates@apple.com>

        Move out-parameter in API::FormClient::willBeginInputSession() to the end of the parameter list
        https://bugs.webkit.org/show_bug.cgi?id=180754

        Reviewed by Wenson Hsieh.

        Group all in-parameters in the signature of API::FormClient::willBeginInputSession() at
        the front of the parameter list instead of interspersing in- and out- parameters.

        No functionality changed. So, no new tests.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):
        * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:
        (API::InjectedBundle::FormClient::willBeginInputSession):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::elementDidFocus):

2017-12-13  Chris Dumez  <cdumez@apple.com>

        [iOS] Take process assertion to prevent the service worker process from getting suspended
        https://bugs.webkit.org/show_bug.cgi?id=180735

        Reviewed by Brady Eidson.

        Take process assertion to prevent the service worker process from getting suspended while
        it is still needed. We use the same policy as for the network process, meaning that
        unsuspended WebContent processes prevent the service worker process from getting suspended.

        This patch still does not enable service workers on iOS. The demo at https://mdn.github.io/sw-test/
        appears to work. However, things are not working as expected for mobile.twitter.com where I
        see the fetches intercepted by the service worker fail when offline for some reason (unrelated
        to process suspension).

        * UIProcess/WebProcessPool.cpp:
        (WebKit::m_foregroundWebProcessCounter):
        (WebKit::m_backgroundWebProcessCounter):
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::updateProcessAssertions):
        (WebKit::WebProcessPool::reinstateNetworkProcessAssertionState):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didSetAssertionState):
        * UIProcess/WebProcessProxy.h:

2017-12-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.

        * gtk/NEWS: Add release notes for 2.19.3.

2017-12-12  Daniel Bates  <dabates@apple.com>

        [WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill button is enabled
        https://bugs.webkit.org/show_bug.cgi?id=180686

        Reviewed by Alex Christensen.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (-[WKWebProcessPlugInNodeHandle isHTMLInputElementAutoFillButtonEnabled]):
        (toAutoFillButtonType):
        (-[WKWebProcessPlugInNodeHandle setHTMLInputElementAutoFillButtonEnabledWithButtonType:]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

2017-12-12  John Wilander  <wilander@apple.com>

        Storage Access API: Implement frame-specific access in the network storage session layer
        https://bugs.webkit.org/show_bug.cgi?id=180679
        <rdar://problem/35982116>

        Reviewed by Alex Christensen.

        This changes adds frameID and pageID to what is communicated for
        storage access and also stored in the network process' table of
        partitioning exceptions.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
            Now stores frameID and pageID for the task for easy retrieval
            in the HSTS checks.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
            These two methods now submit frameID and pageID to the
            partitioning query call.
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
            These two methods now submit frameID and pageID to the
            partitioning query call.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::requestStorageAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestStorageAccess):
        * WebProcess/WebPage/WebPage.h:

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

        Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
        https://bugs.webkit.org/show_bug.cgi?id=180621

        Reviewed by Youenn Fablet.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::decode):
        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::decode):
        * Shared/SandboxExtension.h:
        (WebKit::decode):
        (WebKit::SandboxExtension::Handle::decode): Deleted.
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtension::Handle::decode):
        (WebKit::SandboxExtension::HandleArray::HandleArray):
        (WebKit::SandboxExtension::HandleArray::encode const):
        (WebKit::SandboxExtension::HandleArray::decode):
        (WebKit::SandboxExtension::SandboxExtension):

2017-12-12  John Wilander  <wilander@apple.com>

        Dispatch resource load statistics telemetry on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=180602
        <rdar://problem/35942205>

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
            Now switches to the main thread for the telemetry submission
            through a webpage proxy. The reason is that the webpage we
            use may go away while we're still using it. This kind of
            telemetry isn't associated with a specific webpage but the
            infrastructure requires a webpage proxy.

2017-12-12  Myles C. Maxfield  <mmaxfield@apple.com>

        IPC code doesn't understand NSDictionaries with non-NSString keys
        https://bugs.webkit.org/show_bug.cgi?id=180307
        <rdar://problem/35812382>

        Reviewed by Alex Christensen.

        Variable fonts have a dictionary inside its descriptor which represents the values
        of all the axes of the variable font. Our IPC code wasn't expecting this.

        * Shared/mac/ArgumentCodersMac.mm:
        (IPC::encode):
        (IPC::decode):

2017-12-12  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r225763.

        Remove dangling close-parentheses character.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-12-12  Zach Li  <zachli@apple.com>

        [WK2] Expose image via WKBundleHitTestResult API.
        https://bugs.webkit.org/show_bug.cgi?id=180552.
        rdar://problem/23951521

        Reviewed by Simon Fraser.

        * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
        (WKBundleHitTestResultGetImage):
        * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:

        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
        (WebKit::InjectedBundleHitTestResult::image const):
        Convert from WebCore::Image to WebImage by creating a WebImage
        and paint the WebCore::Image into its graphics context. For now,
        only handle bitmap images.
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:

2017-12-12  Simon Fraser  <simon.fraser@apple.com>

        Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
        https://bugs.webkit.org/show_bug.cgi?id=180689

        Reviewed by Tim Horton.

        Remove encoding of ColorSpaceDeviceRGB.

        * Shared/WebCoreArgumentCoders.h:

2017-12-12  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r216941): Plugin Process can't access AppStore Plugin Service
        https://bugs.webkit.org/show_bug.cgi?id=180701
        <rdar://problem/35940948>

        Reviewed by Daniel Bates.

        The PluginProcess needs access to the AppStore Plugin XPC service.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

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

        Make ServiceWorkers follow the DEFAULT_EXPERIMENTAL_FEATURES_ENABLED flag on Mac.
        <rdar://problem/35978311> and https://bugs.webkit.org/show_bug.cgi?id=180697

        Reviewed by Chris Dumez.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:

2017-12-12  Chris Dumez  <cdumez@apple.com>

        Simplify IPC code between WebProcess and StorageProcess for serviceWorker.postMessage()
        https://bugs.webkit.org/show_bug.cgi?id=180683

        Reviewed by Brady Eidson.

        Merge the 2 code paths from calling postMessage() from a ServiceWorkerClient and from
        a ServiceWorker. Also, postMessage() now only IPCs an identifier from the WebContent
        process to the StorageProcess. The ServiceWorkerClientData is looked up on Storage
        process side from the identifier before being sent to the context process.

        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::encode):
        (IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorker):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorker):
        * WebProcess/Storage/WebSWClientConnection.h:

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

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

        Reviewed by Darin Adler.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::open):
        * UIProcess/linux/MemoryPressureMonitor.cpp:
        (WebKit::MemoryPressureMonitor::MemoryPressureMonitor):

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

        [CoordGraphics] Move UpdateAtlas, AreaAllocator into the platform layer
        https://bugs.webkit.org/show_bug.cgi?id=180641

        Reviewed by Michael Catanzaro.

        Move the UpdateAtlas and AreaAllocator classes into the platform layer,
        moving over build targets and adjust UpdateAtlas class references in
        CompositingCoordinator.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

        Add a WKPageGroupRef setter in WKWebViewConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=180674
        <rdar://problem/35920392>

        Reviewed by Brady Eidson.

        There is a Mac app trying to transition to WKWebView, and it uses WKPageGroupRef extensively.
        To help it transition, we are temporarily giving it an ObjC way to use this organization for
        its UserContentControllers to be united per PageGroup before it transitions away from SPIs like
        WKBundleAddUserScript.  Make it Mac-only to indicate that this should be transitioned away from,
        rather than adopted on iOS.
        
        No change in behavior for apps not using the new WKWebViewConfiguration._pageGroup SPI.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _pageGroup]):
        (-[WKWebViewConfiguration _setPageGroup:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

2017-12-11  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Remove unused services from WebContent Process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=180670

        Reviewed by Eric Carlson.

        Pare down the set of sandbox exceptions in the iOS WebContent process sandbox to just
        those services actually in use:
        1. Remove unused code.
        2. Instead of defining a 'UIKit-app' function and calling it, just declare the individual sandbox
        commands inline. This will allow them to be more easily consolidated with other parts of the
        sandbox in a future step.

        This update should not change behavior.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-12-11  Chris Dumez  <cdumez@apple.com>

        Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData
        https://bugs.webkit.org/show_bug.cgi?id=180669

        Reviewed by Youenn Fablet.

        Merge ServiceWorkerClientIdentifier into ServiceWorkerClientData, for consistency with
        ServiceWorkerIdentifier / ServiceWorkerData, and start simplifying the postMessage() code.

        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ServiceWorkerOrClientData>::encode):
        (IPC::ArgumentCoder<ServiceWorkerOrClientData>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::matchAllCompleted):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        (WebKit::WebSWClientConnection::unregisterServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorker):
        (WebKit::WebSWContextManagerConnection::matchAllCompleted):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-11  Youenn Fablet  <youenn@apple.com>

        RTCPacketOptions::packet_id should be encoded as 32 bits integer.
        https://bugs.webkit.org/show_bug.cgi?id=180654

        Reviewed by Eric Carlson.

        packet_id is a 16 bit unsigned integer, but it can also take -1 if its value is not set.
        Before the patch, it was IPC encoded as a 16 bit signed integer which is not large enough.

        * Shared/RTCPacketOptions.cpp:
        (WebKit::RTCPacketOptions::encode const):
        (WebKit::RTCPacketOptions::decode):

2017-12-11  Chris Dumez  <cdumez@apple.com>

        Layout Test http/tests/workers/service/postmessage-after-sw-process-crash.https.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=180659

        Reviewed by Youenn Fablet.

        Fix flaky crash due to capturing an IPC::DataReference in a lambda, which would point to invalid
        memory when the lambda is called asynchronously.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):

2017-12-11  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Don't import 'UIKit-apps.sb' to the WebContent process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=180610
        <rdar://problem/18899506>

        Reviewed by Dean Jackson.

        Stop including 'system.sb', and just include the portions of that sandbox that we
        actually use in WebContent Process. This is the first step in some further sandbox
        tightening.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

        [WTF] Add Converter traits to StringHasher instead of function pointer
        https://bugs.webkit.org/show_bug.cgi?id=180656

        Reviewed by JF Bastien.

        * WebProcess/WebProcess.cpp:
        (WebKit::addCaseFoldedCharacters):

2017-12-11  David Quesada  <david_quesada@apple.com>

        Turn on ENABLE_APPLICATION_MANIFEST
        https://bugs.webkit.org/show_bug.cgi?id=180562
        rdar://problem/35924737

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:

2017-12-11  Dean Jackson  <dino@apple.com>

        Add a runtime feature flag for ImageBitmap and OffscreenCanvas
        https://bugs.webkit.org/show_bug.cgi?id=180652
        <rdar://problem/35969611>

        Reviewed by Antoine Quint.

        Add an experimental feature flag for these interfaces.

        * Shared/WebPreferences.yaml:

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

        APIClient.h uses things from <tuple> without including it explicitly
        https://bugs.webkit.org/show_bug.cgi?id=180609

        Reviewed by Darin Adler.

        * Shared/API/APIClient.h:

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

        Service Worker should use a correct user agent
        https://bugs.webkit.org/show_bug.cgi?id=180566
        <rdar://problem/35926295>

        Reviewed by Chris Dumez.

        Addendum to landed patch.
        This change was removed from the last version of the patch but proves to be needed by Safari.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        Added back setting the user agent at start of service worker in case a page is already created.

2017-12-08  Brady Eidson  <beidson@apple.com>

        Delay some service worker operations until after the database import completes.
        https://bugs.webkit.org/show_bug.cgi?id=180573

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
        (WebKit::WebSWOriginStore::importComplete): Tell the Origin Table on all connects that
          the import is complete.
        (WebKit::WebSWOriginStore::registerSWServerConnection):
        * StorageProcess/ServiceWorker/WebSWOriginStore.h:

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
        (WebKit::WebSWClientConnection::setSWOriginTableIsImported): Run deferred tasks!
        (WebKit::WebSWClientConnection::matchRegistration): If the import isn't complete yet, delay
          the match registration task until later.
        (WebKit::WebSWClientConnection::runOrDelayTask): Either send the message now or save off
          the task to wait until the import is complete.
        (WebKit::WebSWClientConnection::getRegistrations): If the import isn't complete yet, delay
          the get registrations task until later.
        (WebKit::WebSWClientConnection::initializeSWOriginTableAsEmpty): Deleted.
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

        * WebProcess/Storage/WebSWOriginTable.cpp:
        (WebKit::WebSWOriginTable::setSharedMemory):
        * WebProcess/Storage/WebSWOriginTable.h:
        (WebKit::WebSWOriginTable::isImported const):
        (WebKit::WebSWOriginTable::setIsImported):
        (WebKit::WebSWOriginTable::isInitialized const): Deleted.
        (WebKit::WebSWOriginTable::initializeAsEmpty): Deleted.

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

        Service Worker should use a correct user agent
        https://bugs.webkit.org/show_bug.cgi?id=180566
        <rdar://problem/35926295>

        Reviewed by Chris Dumez.

        Add support to set service worker user agent from UIProcess to service worker process.
        One user agent is currently supported per service worker process and it can be changed at any given time.
        Only new service worker will use the new value.
        Once a service worker is launched, it will stay with the same user agent value.

        This sets both navigator.userAgent and User-Agent header name used for fetch within a service worker.
        Compute the service worker process user agent by picking the last user agent set for a web page.

        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        (WebKit::ServiceWorkerProcessProxy::setUserAgent):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setApplicationNameForUserAgent):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::updateServiceWorkerUserAgent):
        * UIProcess/WebProcessPool.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        (WebKit::WebSWContextManagerConnection::setUserAgent):
        (WebKit::WebSWContextManagerConnection::removeFrameLoaderClient):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-07  Simon Fraser  <simon.fraser@apple.com>

        Wrong caret position for input field inside a fixed position parent on iOS 11
        https://bugs.webkit.org/show_bug.cgi?id=176896
        rdar://problem/33726145

        Reviewed by Tim Horton.

        In r219668 I added code to compute a layout viewport rect in the web process, so that
        after programmatic scrolling, getBoundingClientRect() would return the correct values.
        However, that computation sometimes used a different visual viewport than the UI process,
        resulting in a different layout viewport being set. This would happen when the keyboard
        was visible, and the combination of this and zooming when focusing an input would result
        in a state where the scrolling tree contained notes computed with the bad layout viewport.
        This could cause apparently offset fixed elements, and bad caret positioning if those fixed
        elements contained the focused input.

        Fix by passing to the web process the same visual viewport rect that the UI process is using,
        namely "unobscuredContentRectRespectingInputViewBounds". This was already being set in
        VisibleContentRectUpdateInfo but wasn't encoded/decoded, so fix that. Set it as an optional<>
        on FrameView when different from the normal visual viewport, and return it from
        visualViewportRect().

        Some other minor logging changes.

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode const):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):

2017-12-06  Simon Fraser  <simon.fraser@apple.com>

        When the iPhone keyboard is up, sometimes we never commit a stable update and re-show the caret
        https://bugs.webkit.org/show_bug.cgi?id=180498

        Reviewed by Tim Horton.

        When the keyboard is showing, we would think that the page was in a rubber-banding state
        because contentOffsetBoundedInValidRange() would always clamp the content offset to a different
        value.

        This happened because scrollView.contentInset don't change when the keyboard is showing,
        but UIKit actually consults scrollView.adjustedContentInset, which does. If we use
        scrollView.adjustedContentInset in this computation, we'll get a correct answer.

        Also rewrote the clamping logic to be more similar to what UIKit does internally when computing
        min/max content offset.

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

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

        Clearing all Website Data should remove service worker registrations on disk
        https://bugs.webkit.org/show_bug.cgi?id=180558

        Reviewed by Youenn Fablet.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):

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

        WebServiceWorkerProvider should use Cancellation error to notify DTL that it cannot handle a fetch
        https://bugs.webkit.org/show_bug.cgi?id=180584

        Reviewed by Alex Christensen.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):

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

        Service Worker should use a correct SessionID
        https://bugs.webkit.org/show_bug.cgi?id=180585

        Reviewed by Alex Christensen.

        Store SessionID in SWServer and send it as part of service worker instantiation.
        Use it when creating service worker thread in service worker process.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::swServerForSession):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

        FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker
        https://bugs.webkit.org/show_bug.cgi?id=179641
        <rdar://problem/35923570>

        Reviewed by Alex Christensen.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse): In case of opaque redirected response, handle it as a regular response.

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

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

        Reviewed by Youenn Fablet.

        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::userContentController):
        (WebKit::WebPageGroup::createNonNull): Deleted.
        (WebKit::WebPageGroup::preferencesDidChange): Deleted.
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):

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

        Modernize APIWebsiteDataStore.h and WebProcessPool.h
        https://bugs.webkit.org/show_bug.cgi?id=180588

        Reviewed by Chris Dumez.

        pragma once, Ref instead of RefPtr, initializer list in header instead of literals in constructor.

        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        * UIProcess/WebProcessPool.h:

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

        Remove pthread_once in favor of dispatch_once
        https://bugs.webkit.org/show_bug.cgi?id=180591

        Reviewed by Saam Barati.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::shouldCallRealDebugger):
        (WebKit::initShouldCallRealDebugger): Deleted.

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

        ProcessPoolConfiguration::copy() fails to copy the service worker path
        https://bugs.webkit.org/show_bug.cgi?id=180595

        Reviewed by Brady Eidson.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):

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

        Different WebKitTestRunner instances should use different service worker registrations databases
        https://bugs.webkit.org/show_bug.cgi?id=180589

        Reviewed by Brady Eidson.

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationCopyServiceWorkerDatabaseDirectory):
        (WKContextConfigurationSetServiceWorkerDatabaseDirectory):
        * UIProcess/API/C/WKContextConfigurationRef.h:

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

        Pass std::optional<WebsitePolicies> instead of WebsitePolicies
        https://bugs.webkit.org/show_bug.cgi?id=180563

        Reviewed by Andy Estes.

        WebsitePolicies are only passed along when a decidePolicyForNavigationAction SPI completion handler
        is called with a valid _WKWebsitePolicies object.  In other cases, we don't have one.  Rather than
        making WebsitePolicies have a default value for everything that won't change policies, pass
        a std::optional<WebsitePolicies> which indicates better when we don't have new policies.

        No change in behavior, but this will enable me to add things to WebsitePolicies that have no default value.

        * Shared/WebsitePolicies.h:
        Make WebsitePolicies a class with public members because the IPC code generators don't understand std::optional<struct type>
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryAppLink):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/WebFrameListenerProxy.cpp:
        (WebKit::WebFrameListenerProxy::receivedPolicyDecision):
        * UIProcess/WebFrameListenerProxy.h:
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::use):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::receivedPolicyDecision):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        [WTF] Remove remaining use of Mutex
        https://bugs.webkit.org/show_bug.cgi?id=180579

        Reviewed by Alex Christensen.

        Remove unused "BinarySemaphore.h".

        * Platform/IPC/win/ConnectionWin.cpp:

2017-12-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] WebInspectorProxyClient needs a virtual destructor
        https://bugs.webkit.org/show_bug.cgi?id=180533

        Reviewed by Carlos Garcia Campos.

        Otherwise the derived class portion of the object, WebKitInspectorClient, is not destroyed.

        * UIProcess/gtk/WebInspectorProxyClient.h:

2017-12-07  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Fix ResourceError handling in ArgumentCoder for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=180483

        Reviewed by Alex Christensen.

        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<ResourceError>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceError>::decodePlatformData):

2017-12-07  Youenn Fablet  <youenn@apple.com>

        StartFetch should take a ServiceWorkerIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=180478

        Reviewed by Brady Eidson.

        Before the patch, StartFetch was taking an optional ServiceWorkerIdentifier.
        Now that every navigation fetch is querying its matching registration, it can no longer be optional.

        In the case there is a problem in running the service worker at start fetch time,
        answer to the WebProcess to go to network so that the request does not get stalled.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-07  Saam Barati  <sbarati@apple.com>

        We need to grab the JSLock in InjectedBundle::createWebDataFromUint8Array
        https://bugs.webkit.org/show_bug.cgi?id=180492

        Reviewed by Alex Christensen.

        InjectedBundle::createWebDataFromUint8Array calls into WebCore APIs that allocate
        out of the JS heap. It's only legal to allocate out of the JS heap when holding the JS lock.

        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::createWebDataFromUint8Array):

2017-12-07  Simon Fraser  <simon.fraser@apple.com>

        Propagate WebKit2Logging channels to the Web Process
        https://bugs.webkit.org/show_bug.cgi?id=180517

        Reviewed by Tim Horton.

        If you set WebKit2Logging, you want those channels active in both the UI process and
        the web process, but without tricky 'defaults' gyrations, setting them in the web process
        was hard.

        Instead, send them through to the process via WebProcessCreationParameters, as we do
        for WebCoreLogging channels.

        * Platform/LogInitialization.h:
        * Platform/Logging.cpp:
        (WebKit::initializeLogChannelsIfNecessary):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2017-12-07  Simon Fraser  <simon.fraser@apple.com>

        Add logging for EditorState in RemoteLayerTree transactions
        https://bugs.webkit.org/show_bug.cgi?id=180515

        Reviewed by Wenson Hsieh.
       
        Make EditorState TextStream-able, and dump it in layer tree transactions.

        * Shared/EditorState.cpp:
        (WebKit::operator<<):
        * Shared/EditorState.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::description const):

2017-12-07  Youenn Fablet  <youenn@apple.com>

        CacheStorage Cache should not remove any disk entry when clearing its memory representation
        https://bugs.webkit.org/show_bug.cgi?id=180546

        Reviewed by Brady Eidson.

        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::clearMemoryRepresentation):

2017-12-07  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Add SPI to disallow user-installed fonts
        https://bugs.webkit.org/show_bug.cgi?id=180062
        <rdar://problem/35042408>

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetShouldDisallowUserInstalledFonts):
        (WKPreferencesGetShouldDisallowUserInstalledFonts):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _shouldDisallowUserInstalledFonts]):
        (-[WKPreferences _setShouldDisallowUserInstalledFonts:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-12-07  David Quesada  <david_quesada@apple.com>

        [Web App Manifest] Support display-mode media feature
        https://bugs.webkit.org/show_bug.cgi?id=180376
        rdar://problem/35837993

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/_WKApplicationManifest.h:
        * UIProcess/API/Cocoa/_WKApplicationManifest.mm:
        (-[_WKApplicationManifest initWithCoder:]):
        (-[_WKApplicationManifest encodeWithCoder:]):
        (-[_WKApplicationManifest displayMode]):

2017-12-07  Chris Dumez  <cdumez@apple.com>

        Unreviewed build fix after r225622.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):

2017-12-06  Chris Dumez  <cdumez@apple.com>

        We should be able to recover after a Service Worker process crash
        https://bugs.webkit.org/show_bug.cgi?id=180477

        Reviewed by Brady Eidson and Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):
        Update calls to SWServer::runServiceWorkerIfNecessary() that that it is asynchronous
        and takes in a lambda.

        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        (WebKit::WebSWServerConnection::ipcConnection const):
        Add getter for the underlying IPC connection.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didClose):
        (WebKit::StorageProcess::connectionToContextProcessWasClosed):
        Move some code to connectionToContextProcessWasClosed() to avoid duplication.
        Also, relaunch the Service Worker process if it has exited but we still
        have SWServer connections to regular Web Processes.

        (WebKit::StorageProcess::needsServerToContextConnection const):
        Utility function to determine if we still need the service worker process.
        The current rule is that we need the service worker (aka "context") process
        if we still have SWServer connections to regular Web Processes.

        * StorageProcess/StorageProcess.h:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didClose):
        If didClose() is called for the connection to the service worker context,
        let the StorageProcess know so that it can clear its state and relaunch
        the process if necessary.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextTerminateServiceWorkerProcess):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateServiceWorkerProcess]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        Add SPI to terminate the service worker process.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::m_serviceWorkerProcessTerminationTimer):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::terminateServiceWorkerProcess):
        * UIProcess/WebProcessPool.h:
        We used to shutdown the ServiceWorker process right away as soon as the last regular
        WebProcess was gone. We now give it a grace period of 5 seconds in case a new
        WebProcess gets launched shortly after.

2017-12-02  Darin Adler  <darin@apple.com>

        Modernize some aspects of text codecs, eliminate WebKit use of strcasecmp
        https://bugs.webkit.org/show_bug.cgi?id=180009

        Reviewed by Alex Christensen.

        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
        (WebKit::initializeProtectionSpace): Use equalLettersIgnoringASCIICase instead
        of strcasecmp.

2017-12-06  David Quesada  <david_quesada@apple.com>

        [Web App Manifest] Add SPI for applying a manifest to a top-level browsing context
        https://bugs.webkit.org/show_bug.cgi?id=180368
        rdar://problem/34748067

        Reviewed by Geoffrey Garen.

        Add a new property WKWebViewConfiguration._applicationManifest to specify manifest
        to apply to application contexts (aka. top-level browsing contexts, i.e. web views).
        The manifest is ultimately stored on the MainFrame of the Pages created from the
        web view configuration.

        No new tests, no change in behavior.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy const):
        (API::PageConfiguration::applicationManifest const):
        (API::PageConfiguration::setApplicationManifest):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _applicationManifest]):
        (-[WKWebViewConfiguration _setApplicationManifest:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):

2017-12-06  Jeff Miller  <jeffm@apple.com>

        -[WKWebViewConfiguration copyWithZone] doesn't copy _groupIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=180504

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        Copy _groupIdentifier.

2017-12-06  David Quesada  <david_quesada@apple.com>

        [Web App Manifest] Add SPI for fetching the manifest
        https://bugs.webkit.org/show_bug.cgi?id=180294
        rdar://problem/34747968

        Reviewed by Geoffrey Garen.

        Add a new method -[WKWebView _getApplicationManifestWithCompletionHandler:] to request
        the manifest associated with the current page.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * UIProcess/API/APIApplicationManifest.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
            Add a new API object type for application manifests.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetApplicationManifest_b):
            Add a C version of this SPI for WebKitTestRunner.
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _getApplicationManifestWithCompletionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKApplicationManifest.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
        * UIProcess/API/Cocoa/_WKApplicationManifest.mm: Added.
        (-[_WKApplicationManifest initWithCoder:]):
        (-[_WKApplicationManifest encodeWithCoder:]):
        (+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
        (-[_WKApplicationManifest _apiObject]):
        (nullableNSString):
        (-[_WKApplicationManifest name]):
        (-[_WKApplicationManifest shortName]):
        (-[_WKApplicationManifest applicationDescription]):
        (-[_WKApplicationManifest scope]):
        (-[_WKApplicationManifest startURL]):
        * UIProcess/API/Cocoa/_WKApplicationManifestInternal.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
        (API::wrapper):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::applicationManifestCallback):
        (WebKit::WebPageProxy::getApplicationManifest):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::finishedLoadingApplicationManifest):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getApplicationManifest):
        (WebKit::WebPage::didFinishLoadingApplicationManifest):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        The WebProcess should use the NSRunLoop runloop type.
        https://bugs.webkit.org/show_bug.cgi?id=179804
        <rdar://problem/14012823>

        Reviewed by Brent Fulgham.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::AccessibilityProcessSuspendedNotification):
        * Shared/ChildProcess.h:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::launchServicesCheckIn):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::shouldLeakBoost):
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeProcess):

2017-12-06  Nan Wang  <n_wang@apple.com>

        AX: [iOS] Post accessibility notification when a web process changes its suspended state
        https://bugs.webkit.org/show_bug.cgi?id=180458
        <rdar://problem/35869115>

        Reviewed by Chris Dumez.

        Post accessibility notification with the pid information when a web process
        becomes suspended or resumes running.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::accessibilityProcessSuspendedNotification):

2017-12-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed build fix, removed unused lambda capture.

        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::open):

2017-12-06  John Wilander  <wilander@apple.com>

        Storage Access API: Make document.hasStorageAccess a function and always allow access for same-origin iframes
        https://bugs.webkit.org/show_bug.cgi?id=176944
        <rdar://problem/34440658>

        Reviewed by Brent Fulgham.

        This change introduces document.hasStorageAccess() as a function which
        returns a promise instead of being a property. Since cookie access can
        be due to both a granted request and recent user interaction as first
        party, the WebKit::WebResourceLoadStatisticsStore needs to be consulted.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::hasStorageAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
            Now adds an entry for granted access. A bug found through testing.
            Switched from WTF::Function to WTF::CompletionHandler.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
            Switched from WTF::Function to WTF::CompletionHandler.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::hasStorageAccess):
        (WebKit::WebChromeClient::requestStorageAccess):
            Switched from WTF::Function to WTF::CompletionHandler.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        (WebKit::WebPage::requestStorageAccess):
            Switched from WTF::Function to WTF::CompletionHandler.
        * WebProcess/WebPage/WebPage.h:

2017-12-06  Youenn Fablet  <youenn@apple.com>

        CacheStorageEngineConnection should protect its IPC Connection when doing asynchronous tasks
        https://bugs.webkit.org/show_bug.cgi?id=180461

        Reviewed by Chris Dumez.

        Protecting the IPC connection instead of the CacheStorageEngineConnection
        since CacheStorageEngineConnection only keeps a reference to the NetworkConnectionToWebProcess.

        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::caches):
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
        (WebKit::CacheStorageEngineConnection::putRecords):
        (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):

2017-12-06  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Introduce Nicosia::PaintingContext, add Cairo implementation
        https://bugs.webkit.org/show_bug.cgi?id=180239

        Reviewed by Michael Catanzaro.

        With Nicosia::Buffer now only providing the memory area into which the
        tile content was rasterized, we can simplify the BitmapTexture update
        greatly -- we don't have to create a BitmapImage anymore and retrieve
        memory pointer from the contained cairo_surface_t object. Instead, we
        just copy to GPU the memory that Nicosia::Buffer controls.

        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::swapBuffers):

2017-12-05  Brent Fulgham  <bfulgham@apple.com>

        Limit user agent versioning to an upper bound
        https://bugs.webkit.org/show_bug.cgi?id=180365
        <rdar://problem/34550617>

        Reviewed by Joseph Pecoraro.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::standardUserAgent): Don't pass the WebKit bundle version when
        creatin the User Agent string.
        (WebKit::webKitBundleVersionString): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::standardUserAgent): Ditto.
        (WebKit::webKitBundleVersionString): Deleted.

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

        Fix crash when loading a file URL that does not have a fileSystemPath representation
        https://bugs.webkit.org/show_bug.cgi?id=180448
        <rdar://problem/22805921>

        Reviewed by Chris Dumez.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::assumeReadAccessToBaseURL):
        Check if a String is null before adding it to a HashSet.

2017-12-05  Youenn Fablet  <youenn@apple.com>

        Implement https://w3c.github.io/ServiceWorker/#clients-claim
        https://bugs.webkit.org/show_bug.cgi?id=180261

        Reviewed by Chris Dumez.

        Add IPC plumbery for clients claim between ServiceWorker process and Storage process.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::claimCompleted):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::claim):
        (WebKit::WebSWContextManagerConnection::claimCompleted):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-05  Chris Dumez  <cdumez@apple.com>

        Add support for ServiceWorkerContainer.prototype.ready
        https://bugs.webkit.org/show_bug.cgi?id=180383

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::whenRegistrationReady):
        (WebKit::WebSWServerConnection::resolveRegistrationReadyRequests):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::matchRegistration):
        (WebKit::WebSWClientConnection::whenRegistrationReady):
        (WebKit::WebSWClientConnection::registrationReady):
        (WebKit::WebSWClientConnection::getRegistrations):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-12-05  Youenn Fablet  <youenn@apple.com>

        Implement setting of service worker to client in SWServer without going to WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=180382

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        (WebKit::WebSWClientConnection::serviceWorkerStartedControllingClient): Deleted.
        (WebKit::WebSWClientConnection::serviceWorkerStoppedControllingClient): Deleted.
        * WebProcess/Storage/WebSWClientConnection.h:

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

        Support container.getRegistration() / getRegistrations() inside service workers
        https://bugs.webkit.org/show_bug.cgi?id=180360

        Reviewed by Youenn Fablet.

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::didMatchRegistration):
        (WebKit::WebSWClientConnection::didGetRegistrations):
        (WebKit::WebSWClientConnection::matchRegistration):
        (WebKit::WebSWClientConnection::getRegistrations):

2017-12-04  Brady Eidson  <beidson@apple.com>

        Followup to:
        Get a directory path to SWServers for storing ServiceWorker registrations
        https://bugs.webkit.org/show_bug.cgi?id=180362

        Unreviewed.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::swServerForSession): Change this ASSERT which is invalid in private browsing sessions.

2017-12-04  Simon Fraser  <simon.fraser@apple.com>

        Minor DisplayRefreshMonitor-related cleanup
        https://bugs.webkit.org/show_bug.cgi?id=179802

        Reviewed by Sam Weinig.

        Use RunLoopObserver::WellKnownRunLoopOrders. We want to fire before layer flushing.

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

2017-12-04  Brent Fulgham  <bfulgham@apple.com>

        Don't force creation of process pool when enabling resource load statistics
        https://bugs.webkit.org/show_bug.cgi?id=180374
        <rdar://problem/35545639>

        Reviewed by Alex Christensen.

        Pass appropriate arguments to the 'processPool' accessor so that we only get the
        set of existing process pools. We don't want to pay the cost of launching new
        process pools just to set this flag. The flag will be properly set when the pools
        are created as soon as a WebView is instantiated.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):

2017-12-04  David Quesada  <david_quesada@apple.com>

        Add a class for parsing application manifests
        https://bugs.webkit.org/show_bug.cgi?id=177973
        rdar://problem/34747949

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig: Add ENABLE_APPLICATION_MANIFEST feature flag.

2017-12-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        Rename a static helper in TouchBarMenuItemData.cpp to match style guidelines.
        https://bugs.webkit.org/show_bug.cgi?id=180305

        Reviewed by Andy Estes.

        Style guidelines state that we should use bare words for getters, so getItemType should just be
        itemType. Since this collides with the itemType member variable, this patch also renames that
        member variable to the more concise "type".

        No change in behavior.

        * Shared/TouchBarMenuItemData.cpp:
        (WebKit::itemType):
        (WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
        (WebKit::TouchBarMenuItemData::encode const):
        (WebKit::TouchBarMenuItemData::decode):
        (WebKit::getItemType): Deleted.
        * Shared/TouchBarMenuItemData.h:
        (WebKit::operator==):

2017-12-04  Brian Burg  <bburg@apple.com>

        Web Automation: add flag to preserve legacy page screenshot behavior
        https://bugs.webkit.org/show_bug.cgi?id=180313
        <rdar://problem/34379930>

        Reviewed by Joseph Pecoraro.

        For compatibility with JSON Wire Protocol implemented by Safari,
        we need to retain the ability to perform whole page contents
        snapshots using Automation.takeScreenshot. Add an extra flag,
        clipToViewport, which can be used by W3C-conforming drivers.

        * UIProcess/Automation/Automation.json: Add new flag.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::takeScreenshot):
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::snapshotRectForScreenshot):
        (WebKit::WebAutomationSessionProxy::takeScreenshot):
        If the flag is false, take a screenshot of the whole page contents.

2017-12-04  JF Bastien  <jfbastien@apple.com>

        Update std::expected to match libc++ coding style
        https://bugs.webkit.org/show_bug.cgi?id=180264

        Reviewed by Alex Christensen.

        Update various uses of Expected, mostly renaming valueOr and
        hasValue to the STL naming convention.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::retrieveCaches):
        (WebKit::CacheStorage::Engine::retrieveRecords):
        (WebKit::CacheStorage::Engine::putRecords):
        (WebKit::CacheStorage::Engine::deleteMatchingRecords):
        (WebKit::CacheStorage::Engine::fetchEntries):
        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::ReadRecordTaskCounter::appendRecord):
        (WebKit::CacheStorage::Cache::updateRecordToDisk):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::createResolver):
        * Platform/IPC/ArgumentCoders.h:

2017-12-04  Brady Eidson  <beidson@apple.com>

        Get a directory path to SWServers for storing ServiceWorker registrations.
        https://bugs.webkit.org/show_bug.cgi?id=180362

        Reviewed by Chris Dumez.

        This gets all of the plumbing in place for specifying a ServiceWorker registration storage path
        in a particular WebsiteDataStore.

        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::swServerForSession):
        * StorageProcess/StorageProcess.h:

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        * UIProcess/API/APIProcessPoolConfiguration.h:

        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resolvedServiceWorkerRegistrationDirectory const):

        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory):

        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::legacyPlatformDefaultServiceWorkerRegistrationDirectory):

2017-12-04  Frederic Wang  <fwang@igalia.com>

        Make ScrollingTreeNode::enclosingFrameNode return the node itself for frame nodes
        https://bugs.webkit.org/show_bug.cgi?id=180353

        Reviewed by Antonio Gomes.

        This function was introduced in bug 175135 to solve a rendering bug with fixed positioned
        nodes in overflow nodes. For a frame node, the reference frame to use for fixed nodes is
        actually the frame node itself or otherwise we will get the same rendering bug. This patch
        makes enclosingFrameNode return the node itself when it is a frame node and renames it to
        clarify this behavior. Currently, enclosingFrameNode is not used for frame nodes so the
        behavior is unchanged.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll): Use auto* and
        the new function name.

2017-12-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Implement PAL::SleepDisabler
        https://bugs.webkit.org/show_bug.cgi?id=178485

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseDispose):
        (webkitWebViewBaseEnterFullScreen):
        (webkitWebViewBaseExitFullScreen):
        (screenSaverInhibitedCallback): Deleted.
        (webkitWebViewBaseSendInhibitMessageToScreenSaver): Deleted.
        (screenSaverProxyCreatedCallback): Deleted.
        (webkitWebViewBaseInhibitScreenSaver): Deleted.
        (webkitWebViewBaseUninhibitScreenSaver): Deleted.

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

        WTF shouldn't have both Thread and ThreadIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=180308

        Reviewed by Darin Adler.

        * UIProcess/API/glib/IconDatabase.cpp:
        * UIProcess/GenericCallback.h:
        (WebKit::GenericCallback::~GenericCallback):
        (WebKit::GenericCallback::performCallbackWithReturnValue):

2017-12-03  Chris Dumez  <cdumez@apple.com>

        Support serviceWorker.postMessage() inside service workers
        https://bugs.webkit.org/show_bug.cgi?id=180328

        Reviewed by Darin Adler.

        Support serviceWorker.postMessage() inside service workers.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorker):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerFromClient):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerFromServiceWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-03  Chris Dumez  <cdumez@apple.com>

        Implement self.skipWaiting() inside service workers
        https://bugs.webkit.org/show_bug.cgi?id=180329

        Reviewed by Darin Adler.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::didFinishSkipWaiting):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::skipWaiting):
        (WebKit::WebSWContextManagerConnection::didFinishSkipWaiting):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-02  Youenn Fablet  <youenn@apple.com>

        Implement https://w3c.github.io/ServiceWorker/#clients-getall
        https://bugs.webkit.org/show_bug.cgi?id=180276

        Reviewed by Chris Dumez.

        Add IPC plumbery for clients.matchAll between ServiceWorker process and Storage process.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::matchAllCompleted):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::matchAll):
        (WebKit::WebSWContextManagerConnection::matchAllCompleted):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-02  Joseph Pecoraro  <pecoraro@apple.com>

        Remote Web Inspector window always shows up at the default size
        https://bugs.webkit.org/show_bug.cgi?id=180284
        <rdar://problem/35430255>

        Reviewed by Brian Burg.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        Give remote web inspector windows an autosave name so that their frame can
        be automatically saved and restored by the system.

2017-12-02  Simon Fraser  <simon.fraser@apple.com>

        Add a log channel for viewports
        https://bugs.webkit.org/show_bug.cgi?id=180295

        Reviewed by Zalan Bujtas.

        Add a "Viewports" log channel to log viewport scaling information, and enhance the
        WebKit "VisibleRects" channel to log additional data for the same reason.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        (-[WKWebView _dynamicViewportUpdateChangedTargetToScale:position:nextValidLayerTreeTransactionID:]):
        (-[WKWebView _dispatchSetMinimumLayoutSize:]):
        (-[WKWebView _endAnimatedResize]):
        (-[WKWebView _resizeWhileHidingContentWithUpdates:]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setFixedLayoutSize):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::scaleAfterViewportWidthChange):
        (WebKit::WebPage::setViewportConfigurationMinimumLayoutSize):
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::resetViewportDefaultConfiguration):
        (WebKit::WebPage::viewportConfigurationChanged):
        (WebKit::WebPage::updateVisibleContentRects):

2017-12-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle user prompts shown while executing scripts
        https://bugs.webkit.org/show_bug.cgi?id=179979

        Reviewed by Brian Burg.

        * UIProcess/Automation/Automation.json: Add UnexpectedAlertOpen error.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::willShowJavaScriptDialog): Finish pending evaluateJavaScriptFunction operations
        with UnexpectedAlertOpen error.

2017-12-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        Make some minor adjustments to TouchBarMenuData and TouchBarMenuItemData
        https://bugs.webkit.org/show_bug.cgi?id=180305

        Reviewed by Joseph Pecoraro.

        Mark some methods and parameters as const, use the default constructor in more places, and also remove a few
        extraneous imported headers.

        * Shared/TouchBarMenuData.cpp:
        (WebKit::TouchBarMenuData::TouchBarMenuData):

        Add a FIXME regarding the use of the 'id' attribute.

        (WebKit::TouchBarMenuData::decode):
        * Shared/TouchBarMenuData.h:
        (WebKit::TouchBarMenuData::items const):
        (WebKit::TouchBarMenuData::setID):
        (WebKit::TouchBarMenuData::isPageCustomized const):
        (WebKit::TouchBarMenuData::items): Deleted.
        (WebKit::TouchBarMenuData::isPageCustomized): Deleted.
        * Shared/TouchBarMenuItemData.cpp:
        (WebKit::getItemType):

        Change a helper method from a static class function to a static function in the implementation file.

        (WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
        (WebKit::TouchBarMenuItemData::encode const):
        (WebKit::TouchBarMenuItemData::decode):
        (WebKit::TouchBarMenuItemData::getItemType): Deleted.
        * Shared/TouchBarMenuItemData.h:
        (WebKit::operator==):

        Remove the commandName member variable, since it doesn't make sense to propagate an event handler
        attribute from WebCore to the client layer.

        * UIProcess/WebPageProxy.messages.in:

2017-12-01  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ debug build fix. Replace ASSERT_UNUSED() with UNUSED_PARAM()
        in WebKit::WebPage methods that used to operate on HTMLMenuElement pointer
        values (which have been converted to references).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didInsertMenuElement):
        (WebKit::WebPage::didRemoveMenuElement):
        (WebKit::WebPage::didInsertMenuItemElement):
        (WebKit::WebPage::didRemoveMenuItemElement):

2017-12-01  Simon Fraser  <simon.fraser@apple.com>

        Reduce the number of calls to ViewportConfiguration::updateConfiguration()
        https://bugs.webkit.org/show_bug.cgi?id=180299

        Reviewed by Zalan Bujtas.

        There are several calls to ViewportConfiguration::setDefaultConfiguration() during loading
        with the same arguments. We can avoid unnecessary calls to updateConfiguration() by returning
        early if the configuration hasn't changed.

        Also move the fetching of ViewportConfiguration::xhtmlMobileParameters() from didReceiveMobileDocType()
        into resetViewportDefaultConfiguration() where we grab all the other default configs.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didReceiveMobileDocType):
        (WebKit::WebPage::resetViewportDefaultConfiguration):

2017-12-01  Aishwarya Nirmal  <anirmal@apple.com>

        [Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
        https://bugs.webkit.org/show_bug.cgi?id=179714

        Reviewed by Wenson Hsieh.

        These changes define the TouchBarMenuData and TouchBarMenuItemData objects which draw information
        from touch bar HTMLMenuElement and HTMLMenuItemElement. These objects represent the contents of
        the page-customized touch bar. Changes to the html elements representing the touch bar are sent 
        to the UI process.

        * Shared/TouchBarMenuData.cpp: Copied from Source/WebCore/html/HTMLMenuItemElement.cpp.
        (WebKit::TouchBarMenuData::TouchBarMenuData):
        (WebKit::TouchBarMenuData::addMenuItem):
        (WebKit::TouchBarMenuData::removeMenuItem):
        (WebKit::TouchBarMenuData::encode const):
        (WebKit::TouchBarMenuData::decode):
        * Shared/TouchBarMenuData.h: Copied from Source/WebCore/html/HTMLMenuItemElement.h.
        (WebKit::TouchBarMenuData::items):
        (WebKit::TouchBarMenuData::isPageCustomized):
        (WebKit::TouchBarMenuData::setIsPageCustomized):
        * Shared/TouchBarMenuItemData.cpp: Added.
        (WebKit::TouchBarMenuItemData::getItemType):
        (WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
        (WebKit::TouchBarMenuItemData::encode const):
        (WebKit::TouchBarMenuItemData::decode):
        * Shared/TouchBarMenuItemData.h: Added.
        (WebKit::operator<):
        (WebKit::operator>):
        (WebKit::operator<=):
        (WebKit::operator>=):
        (WebKit::operator==):
        (WebKit::operator!=):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::touchBarMenuDataChanged):
        (WebKit::WebPageProxy::touchBarMenuItemDataAdded):
        (WebKit::WebPageProxy::touchBarMenuItemDataRemoved):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::touchBarMenuData const):
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::didInsertMenuElement):
        (WebKit::WebChromeClient::didRemoveMenuElement):
        (WebKit::WebChromeClient::didInsertMenuItemElement):
        (WebKit::WebChromeClient::didRemoveMenuItemElement):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didInsertMenuElement):
        (WebKit::WebPage::didRemoveMenuElement):
        (WebKit::WebPage::didInsertMenuItemElement):
        (WebKit::WebPage::didRemoveMenuItemElement):
        (WebKit::WebPage::sendTouchBarMenuDataRemovedUpdate):
        (WebKit::WebPage::sendTouchBarMenuDataAddedUpdate):
        (WebKit::WebPage::sendTouchBarMenuItemDataAddedUpdate):
        (WebKit::WebPage::sendTouchBarMenuItemDataRemovedUpdate):
        * WebProcess/WebPage/WebPage.h:

2017-12-01  Daniel Bates  <dabates@apple.com>

        Alternative Presentation Button: Provide a way to query for the replaced elements
        https://bugs.webkit.org/show_bug.cgi?id=180114
        <rdar://problem/35710539>

        Reviewed by Tim Horton.

        Add SPI to query for the elements that were replaced by an Alternative Presentation Button.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (-[WKWebProcessPlugInFrame elementsReplacedByAlternativePresentationButtonWithIdentifier:]): Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleElementsReplacedByAlternativePresentationButton): Added.
        * WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:

2017-12-01  Youenn Fablet  <youenn@apple.com>

        Implement https://w3c.github.io/ServiceWorker/#clients-get
        https://bugs.webkit.org/show_bug.cgi?id=180167

        Reviewed by Chris Dumez.

        Add IPC plumbery for clientFromId between ServiceWorker process and Storage process.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::clientFromIdCompleted):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::findClientByIdentifier):
        (WebKit::WebSWContextManagerConnection::findClientByIdentifierCompleted):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-12-01  Brian Burg  <bburg@apple.com>

        Web Inspector: move Inspector::Protocol::Array<T> to JSON namespace
        https://bugs.webkit.org/show_bug.cgi?id=173662

        Reviewed by Joseph Pecoraro.

        Adopt new type names.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::getNextContext):
        (WebKit::WebAutomationSession::getBrowsingContexts):
        (WebKit::buildArrayForCookies):
        (WebKit::WebAutomationSession::getSessionPermissions):
        * UIProcess/Automation/WebAutomationSession.h:

2017-12-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement SPI for clients to update a given attachment's data
        https://bugs.webkit.org/show_bug.cgi?id=180184
        <rdar://problem/35355731>

        Reviewed by Tim Horton.

        Add plumbing to the web process for setting the attachment data (and optionally, the content type and/or file
        name) of a given attachment. See WebCore ChangeLog for more detail. Changes covered by new API tests.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::setDataAndContentType):
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:

        Add nullability annotations around _WKAttachment SPI methods.

        * UIProcess/API/Cocoa/_WKAttachment.mm:
        (-[_WKAttachment setData:newContentType:newFilename:completion:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setAttachmentDataAndContentType):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setAttachmentDataAndContentType):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-12-01  Brady Eidson  <beidson@apple.com>

        Add Internals.terminateServiceWorker, and the ability to restart service workers for postMessage.
        https://bugs.webkit.org/show_bug.cgi?id=180170

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::syncTerminateWorker):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::syncTerminateWorker):
        * WebProcess/Storage/WebSWClientConnection.h:

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::terminateWorker):
        (WebKit::WebSWContextManagerConnection::syncTerminateWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveSyncMessage):
        * WebProcess/Storage/WebToStorageProcessConnection.h:

2017-12-01  Youenn Fablet  <youenn@apple.com>

        Clear WebSWClientConnection in case storage process IPC connection is closing
        https://bugs.webkit.org/show_bug.cgi?id=180210

        Reviewed by Chris Dumez.

        Clear the sw connection maps when connection is closing.
        Call related completion handlers for each connection.

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::connectionToServerLost):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:

2017-12-01  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use CaptureDevice instead of device ID to identify devices
        https://bugs.webkit.org/show_bug.cgi?id=180206
        <rdar://problem/35775758>

        Reviewed by Youenn Fablet.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::allow):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2017-12-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: link and partial links queries don't work in xhtml documents
        https://bugs.webkit.org/show_bug.cgi?id=180191

        Reviewed by Brian Burg.

        We convert the queries to use xpath, which works for html documents, but it doesn't work for xhtml. In case of
        xhtml we would need to provide a namespace resolver and elements would need to be prefixed with 'xhtml:'. It's
        easier to simply iterate the link elements and compare the text.

        Fixes: imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[link text-full link text]
               imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[partial link text-link text]
               imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[link text-full link text]
               imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[partial link text-link text]
               imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[link text-full link text]
               imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[partial link text-link text]
               imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[link text-full link text]
               imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[partial link text-link text]

        * UIProcess/Automation/atoms/FindNodes.js:
        (switch):
        (tryToFindNode):

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

        REGRESSION (r224791): cookies are shared between ephemeral sessions in the same process pool
        https://bugs.webkit.org/show_bug.cgi?id=180235

        Reviewed by Joseph Pecoraro.

        In r224791 I assumed that uiProcessCookieStorageIdentifier would be empty in the ephemeral session initialization message.
        This is not the case.  We did not catch this because almost all of our ephemeral session testing uses the legacyPrivateSessionID.
        I add checks for if the SessionID is ephemeral like we already have in WebFrameNetworkingContext::ensureWebsiteDataStoreSession.
        I also add an API test that makes sure cookies are not shared between ephemeral sessions the way they are made through the API.

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

2017-11-30  Stephan Szabo  <stephan.szabo@sony.com>

        Make LegacyCustomProtocolManager optional for network process
        https://bugs.webkit.org/show_bug.cgi?id=176230

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        (WebKit::NetworkProcessProxy::didClose):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient):
        (WebKit::WebProcessPool::registerSchemeForCustomProtocol):
        (WebKit::WebProcessPool::unregisterSchemeForCustomProtocol):

2017-11-30  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed build fix, suppress deprecation warnings.

        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::sandboxExtensionForType):

2017-11-30  Daniel Bates  <dabates@apple.com>

        Expose SPI didClickAlternativePresentationButtonWithUserInfo on iOS
        https://bugs.webkit.org/show_bug.cgi?id=180218
        <rdar://problem/35782555>

        Reviewed by Alex Christensen.

        We want to support the SPI didClickAlternativePresentationButtonWithUserInfo on Cocoa platforms.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didClickAlternativePresentationButton):

2017-11-30  Joseph Pecoraro  <pecoraro@apple.com>

        [Cocoa] Web Automation: _WKAutomationSessionConfiguration leak
        https://bugs.webkit.org/show_bug.cgi?id=180222

        Reviewed by Brian Burg.

        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::requestAutomationSessionWithCapabilities):

2017-11-30  Joseph Pecoraro  <pecoraro@apple.com>

        Fix some NSOperationQueue leaks
        https://bugs.webkit.org/show_bug.cgi?id=180221

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::performDragOperation):

2017-11-30  Brian Burg  <bburg@apple.com>

        Web Automation: computeElementLayout does not correctly translate iframe client coordinates to main frame coordinates
        https://bugs.webkit.org/show_bug.cgi?id=180213
        <rdar://problem/30260141>

        Reviewed by Simon Fraser.

        The current implementation computes points in terms of the frame in which the element is located.
        However, WebDriver expects coordinates to be relative to the top-level document since
        these coordinates are used for generating click events, among other things.

        To convert from frame client coordinates to main frame client coordinates, round-trip
        both inViewCenterPoint and elementBounds to root view coordinates and back
        to the main frame's contents/client coordinates. Then convert this to page coordinates if needed.

        This progresses several tests in the Selenium Python test suite:

         - event_firing_webdriver_tests.py::test_should_fire_navigation_events
         - frame_switching_tests.py::testShouldBeAbleToClickInAFrameThatRewritesTopWindowLocation
         - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUs
         - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithFrameIndex
         - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithWebelement
         - frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs
         - position_and_size_tests.py::testShouldGetCoordinatesOfAnInvisibleElement

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        Get both the frame and main frame FrameViews and convert coordinates to the root view.
        This is somewhat lossy as clientToDocument* deals with FloatPoints but contentsToRootView
        deals with IntPoints. For the purposes of WebDriver, lossiness is not a problem since
        integer values are expected anyway.

        The imperative nature of the coordinate calculations is difficult to debug, so I converted
        this function to only assign to each variable once.

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

        WKURLSchemeHandler.request should include HTTPBody
        https://bugs.webkit.org/show_bug.cgi?id=180220

        Reviewed by Brady Eidson.

        * Shared/URLSchemeTaskParameters.cpp: Added.
        (WebKit::URLSchemeTaskParameters::encode const):
        (WebKit::URLSchemeTaskParameters::decode):
        * Shared/URLSchemeTaskParameters.h: Added.
        * UIProcess/API/Cocoa/WKURLSchemeTask.mm:
        (-[WKURLSchemeTaskImpl request]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startURLSchemeTask):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::create):
        (WebKit::WebURLSchemeTask::WebURLSchemeTask):
        * UIProcess/WebURLSchemeTask.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
        (WebKit::WebURLSchemeTaskProxy::startLoading):

2017-11-30  Darin Adler  <darin@apple.com>

        [Mac] remove unneeded RetainPtr use introduced in r225142
        https://bugs.webkit.org/show_bug.cgi?id=180202

        Reviewed by Tim Horton.

        * WebProcess/Plugins/PDF/PDFPlugin.h: Got rid of unnecessary RetainPtr.
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::lookupTextAtLocation const): Ditto.
        * WebProcess/WebPage/WebPage.h: Ditto.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Ditto.
        (WebKit::WebPage::performDictionaryLookupForSelection): Ditto.
        (WebKit::WebPage::performImmediateActionHitTestAtLocation): Ditto.
        (WebKit::WebPage::lookupTextAtLocation): Ditto.

2017-11-30  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Move CoordinatedGraphicsLayer painting behind Nicosia::PaintingEngine
        https://bugs.webkit.org/show_bug.cgi?id=180141

        Reviewed by Carlos Garcia Campos.

        CompositingCoordinator must implement the paintingEngine() method now
        that the method's been added to the CoordinatedGraphicsLayerClient
        interface. The CompositingCoordinator manages the Nicosia::PaintingEngine
        object through the new m_paintingEngine member variable, and returns the
        reference to this object in the paintingEngine() method.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::CompositingCoordinator):
        (WebKit::CompositingCoordinator::paintingEngine):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        Drop unnecessary typedefs.

2017-11-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement SPI for clients to make an attachment element display in-place
        https://bugs.webkit.org/show_bug.cgi?id=180153
        <rdar://problem/35735252>

        Reviewed by Tim Horton.

        Add new WebKit SPI, -[_WKAttachment setDisplayOptions:completion:], and add plumbing for attachment display
        options to the web content process. Changes covered by 4 new API tests.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::setDisplayOptions):
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):

        Respect given display options when inserting a new attachment.

        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAttachment.mm:
        (-[_WKAttachmentDisplayOptions coreDisplayOptions]):

        Introduce a helper to convert from the Cocoa _WKAttachmentDisplayOptions object to platform-agnostic
        AttachmentDisplayOptions.

        (-[_WKAttachment setDisplayOptions:completion:]):
        (WebKit::if): Deleted.
        * UIProcess/API/Cocoa/_WKAttachmentInternal.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::insertAttachment):
        (WebKit::WebPageProxy::setAttachmentDisplayOptions):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::insertAttachment):
        (WebKit::WebPage::requestAttachmentData):
        (WebKit::WebPage::setAttachmentDisplayOptions):
        (WebKit::WebPage::attachmentElementWithIdentifier const):

        Pull common logic to retrieve an attachment element matching a given identifier out into a helper.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-11-29  Brent Fulgham  <bfulgham@apple.com>

        Part 2: Adopt updated NSKeyed[Un]Archiver API when available
        https://bugs.webkit.org/show_bug.cgi?id=180127
        <rdar://problem/35710738>

        Reviewed by Simon Fraser.

        The API that accepts a user-allocated NSMutableData is deprecated. Switch (for macOS 10.12 and newer)
        to the modern API. Use the original API for macOS builds prior to 10.12.

        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const):
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode):
        (IPC::ArgumentCoder<WebCore::PaymentContact>::encode):
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode):
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::encode):
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
        (IPC::ArgumentCoder<Credential>::encodePlatformData):
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode):
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData):
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setObject:forBundleParameter:]):
        (-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):

2017-11-29  Brady Eidson  <beidson@apple.com>

        When managing context startups, make ServiceWorkerJobDataIdentifier's optional.
        https://bugs.webkit.org/show_bug.cgi?id=180166

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        * WebProcess/Storage/WebSWContextManagerConnection.h:

2017-11-29  Youenn Fablet  <youenn@apple.com>

        Add support for service worker generated redirections
        https://bugs.webkit.org/show_bug.cgi?id=179498

        Reviewed by Darin Adler.

        Small refactoring to allow a service worker redirected fetch to follow the redirection through the service worker.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad): Make use of the loader request in case a network load is needed after a service worker redirection.
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::create):
        (WebKit::ServiceWorkerClientFetch::~ServiceWorkerClientFetch):
        (WebKit::ServiceWorkerClientFetch::ServiceWorkerClientFetch):
        (WebKit::ServiceWorkerClientFetch::start):
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse): Check for response.
        Generate redirected request if needed and call loader callback to process the redirection.
        Adding some states so that if didFinish is called before the willSendRequest callback, redirection is followed.
        (WebKit::ServiceWorkerClientFetch::didFinish):
        In case redirection should be followed, wait for didFinish to follow it.
        This simplifies the model although introducing some limited latency.
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):

2017-11-29  Youenn Fablet  <youenn@apple.com>

        Add support for FetchEvent.clientId
        https://bugs.webkit.org/show_bug.cgi?id=180052

        Reviewed by Chris Dumez.

        Using FetchOption persistency coders for cache API and modernizing IPC FetchOptions decoding.

        * WebKit/Shared/WebCoreArgumentCoders.cpp:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::encode):
        (WebKit::CacheStorage::Cache::decodeRecordHeader):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):

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

        Make WebFrameLoaderClient more robust against null pointer dereferencing
        https://bugs.webkit.org/show_bug.cgi?id=180157
        <rdar://problem/34895616>

        Reviewed by Tim Horton.

        There has always been rare null pointer crashes in this code, but they have become more common
        now that we are waiting for completion handlers for redirects, which makes it more likely that
        we are hitting this code after we have detached from the core frame.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::page const):

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

        Fix Mac CMake build.

        * PlatformMac.cmake:

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

        StorageToWebProcessConnection & WebSWServerToContextConnection should use the same underlying IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=180147

        Reviewed by Brady Eidson.

        StorageToWebProcessConnection & WebSWServerToContextConnection should use the same underlying IPC::Connection.
        Otherwise, we have with 2 IPC::Connections between the StorageProcess and the ServiceWorker (aka Context) process,
        which makes synchronization of IPC messages difficult.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::createServerToContextConnection):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::didFinishLaunching):
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getStorageProcessConnection):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::isServiceWorkerProcess const):
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didReceiveMessage):
        (WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        ensure*Connection() methods on WebProcess should return a reference
        https://bugs.webkit.org/show_bug.cgi?id=180149

        Reviewed by Alex Christensen.

        ensure*Connection() methods on WebProcess should return a reference instead of not returning
        anything. Also get rid of the non-ensure variants which called "ensure" internally and are
        no longer needed.

        * Shared/mac/CookieStorageShim.mm:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::connection):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        (WebKit::preregisterSandboxExtensionsIfNecessary):
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::registerFileBlobURL):
        (WebKit::BlobRegistryProxy::registerBlobURL):
        (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked):
        (WebKit::BlobRegistryProxy::unregisterBlobURL):
        (WebKit::BlobRegistryProxy::registerBlobURLForSlice):
        (WebKit::BlobRegistryProxy::blobSize):
        (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::remove):
        (WebKit::WebLoaderStrategy::setDefersLoading):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::preconnectTo):
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache):
        (WebKit::WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::messageSenderConnection):
        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::WebSocketStream):
        (WebKit::WebSocketStream::messageSenderConnection):
        * WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
        (WebKit::sendOnMainThread):
        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::sendOnMainThread):
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:
        (WebKit::LibWebRTCSocketFactory::CreateServerTcpSocket):
        (WebKit::LibWebRTCSocketFactory::CreateUdpSocket):
        (WebKit::LibWebRTCSocketFactory::CreateClientTcpSocket):
        (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket):
        * WebProcess/Network/webrtc/WebRTCMonitor.cpp:
        (WebKit::sendOnMainThread):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::handleFetch):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM):
        (WebKit::WebPlatformStrategies::setCookiesFromDOM):
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebKit::WebPlatformStrategies::getRawCookies):
        (WebKit::WebPlatformStrategies::deleteCookie):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::startDownload):
        (WebKit::WebFrame::convertMainResourceLoadToDownload):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensureLegacyPrivateBrowsingSessionInNetworkProcess):
        (WebKit::WebProcess::ensureNetworkProcessConnection):
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
        (WebKit::WebProcess::prefetchDNS):
        * WebProcess/WebProcess.h:

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

        Modernize API::SerializedScriptValue
        https://bugs.webkit.org/show_bug.cgi?id=180115

        Reviewed by Brady Eidson.

        Also remove some SPI that hasn't been used anywhere since Mountain Lion.

        * Shared/API/APISerializedScriptValue.h:
        (API::SerializedScriptValue::create):
        (API::SerializedScriptValue::internalRepresentation):
        (API::SerializedScriptValue::SerializedScriptValue):
        * Shared/API/c/WKSerializedScriptValue.cpp:
        (WKSerializedScriptValueDeserialize):
        (WKSerializedScriptValueCreateWithInternalRepresentation): Deleted.
        (WKSerializedScriptValueGetInternalRepresentation): Deleted.
        * Shared/API/c/WKSerializedScriptValuePrivate.h: Removed.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _evaluateJavaScript:forceUserGesture:completionHandler:]):
        * WebKit.xcodeproj/project.pbxproj:

2017-11-29  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r218064): [GTK] Broke entering fullscreen mode in debug builds
        https://bugs.webkit.org/show_bug.cgi?id=180120

        Reviewed by Carlos Garcia Campos.

        These assertions need to be swapped. Fixes /webkit2/WebKitWebView/fullscreen in debug mode.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseEnterFullScreen):
        (webkitWebViewBaseExitFullScreen):

2017-11-29  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Rename CoordinatedBuffer to Nicosia::Buffer
        https://bugs.webkit.org/show_bug.cgi?id=180135

        Reviewed by Carlos Garcia Campos.

        Adjust code to the CoordinatedBuffer -> Nicosia::Buffer transition.

        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::setBackBuffer):
        (WebKit::CoordinatedBackingStore::updateTile):
        * Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::createUpdateAtlas):
        (WebKit::CoordinatedGraphicsScene::updateImageBacking):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::updateImageBacking):
        (WebKit::CompositingCoordinator::createUpdateAtlas):
        (WebKit::CompositingCoordinator::getCoordinatedBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::UpdateAtlas):
        (WebKit::UpdateAtlas::getCoordinatedBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h:

2017-11-28  Brent Fulgham  <bfulgham@apple.com>

        Adopt updated NSKeyed[Un]Archiver API when available
        https://bugs.webkit.org/show_bug.cgi?id=180127
        <rdar://problem/35710738>

        Reviewed by Alex Christensen.

        Switch to new NSKeyed[Un]Archiver methods when available. We do not attempt
        to adopt secure coding in places we were not under the original API.

        * Platform/ios/AccessibilityIOS.mm:
        (WebKit::newAccessibilityRemoteToken): Use secure-by-default API.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Ditto.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const): Ditto.
        (WebKit::InteractionInformationAtPosition::decode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setObject:forBundleParameter:]): Ditto.
        (-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]): Ditto.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]): Ditto.
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::startAssistingNode): Ditto.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Ditto.
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Ditto.
        (WebKit::InjectedBundle::setBundleParameter): Ditto.
        (WebKit::InjectedBundle::setBundleParameters): Ditto.

2017-11-28  Youenn Fablet  <youenn@apple.com>

        NetworkCache::Storage should protect itself when removing operations from its maps
        https://bugs.webkit.org/show_bug.cgi?id=180118

        Reviewed by Antti Koivisto.

        The operations can contain ref to the Storage object and removing them from the map may destroy the Storage object

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::remove):
        (WebKit::NetworkCache::Storage::finishReadOperation):
        (WebKit::NetworkCache::Storage::finishWriteOperation):
        (WebKit::NetworkCache::Storage::traverse):

2017-11-28  Youenn Fablet  <youenn@apple.com>

        Register Documents as ServiceWorker clients to the StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=180047

        Reviewed by Brady Eidson.

        Adding IPC to register/unregister clients to the storage process.
        This will be used to enable service worker termination, and implementation of Clients API.

        WebSWServerConnection keeps a hash map of all its related clients.
        This allows unregistering these clients if the corresponding web process crashes.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        (WebKit::WebSWClientConnection::unregisterServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:

2017-11-28  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [CG] PostScript images should be supported if they are sub-resource images
        https://bugs.webkit.org/show_bug.cgi?id=178502
        <rdar://problem/35102988>

        Reviewed by Simon Fraser.

        Make convertPostScriptDataToPDF() be as static function of PDFDocumentImage
        in WebCore.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::convertPostScriptDataIfNeeded):
        (WebKit::convertPostScriptDataToPDF): Deleted.

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

        Add SPI for adding strings directly to a _WKVisitedLinkStore
        https://bugs.webkit.org/show_bug.cgi?id=180100

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:
        (-[_WKVisitedLinkStore addVisitedLinkWithString:]):
        This is a performance optimization for rdar://problem/16321391

2017-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        REGRESSION: Web Inspector: context menu actions "Download Image" and "Open Image in New Window" don't work
        https://bugs.webkit.org/show_bug.cgi?id=178808
        <rdar://problem/35176608>

        Reviewed by Brian Burg.

        * UIProcess/mac/WKInspectorViewController.mm:
        (-[WKInspectorViewController _webView:contextMenu:forElement:]):
        Continue to hide the image context menu actions like we used to.
        Investigating making these context menus work can be done as a
        follow-up task.

        * UIProcess/mac/WKWebInspectorWKWebView.mm:
        (-[WKWebInspectorWKWebView initWithFrame:configuration:]):
        Use nullptr instead of 0.

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

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Joseph Pecocaro.

        Based on patch by Brian Burg.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame):
        (WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout):
        (WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout):
        (WebKit::WebAutomationSession::navigationOccurredForFrame):
        (WebKit::WebAutomationSession::documentLoadedForFrame):
        (WebKit::WebAutomationSession::inspectorFrontendLoaded):
        (WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
        (WebKit::WebAutomationSession::evaluateJavaScriptFunction):
        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::setSessionPermissions):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        * UIProcess/Automation/WebAutomationSession.h:

2017-11-28  Daniel Bates  <dabates@apple.com>

        [Cocoa] First pass at implementing alternative presentation button element
        https://bugs.webkit.org/show_bug.cgi?id=179785
        Part of <rdar://problem/34917108>

        Reviewed by Brent Fulgham.

        Expose SPI to substitute the alternative presentation button for one or more elements
        and remove the alternative presentation button. Add a private delegate callback when
        the alternative presentation button is clicked.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didClickAlternativePresentationButton): Added.
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Wired up delegate callback.
        (WebKit::UIDelegate::UIClient::didClickAlternativePresentationButton): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleAlternativePresentationButtonClick): Added.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
        (API::InjectedBundle::PageUIClient::didClickAlternativePresentationButton): Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (-[WKWebProcessPlugInFrame substituteElements:withAlternativePresentationButtonWithIdentifier:]): Added.
        (-[WKWebProcessPlugInFrame removeAlternativePresentationButton:]): Added.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleSubstituteWithAlternativePresentationButton): Added.
        (WKBundleRemoveAlternativePresentationButton): Added.
        * WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::didClickAlternativePresentationButton): Added.
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::handleAlternativePresentationButtonClick): Added.
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-11-27  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: addResult.isNewEntry WebCore::SWServerRegistration::addClientUsingRegistration(WebCore::ServiceWorkerClientIdentifier const&) + 141
        https://bugs.webkit.org/show_bug.cgi?id=180049

        Reviewed by Brady Eidson.

        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::serviceWorkerStartedControllingClient):
        (WebKit::WebSWClientConnection::serviceWorkerStoppedControllingClient):
        * WebProcess/Storage/WebSWClientConnection.h:

2017-11-27  Jeremy Jones  <jeremyj@apple.com>

        downcast to WebKit::FullscreenClient can sometimes fail.
        https://bugs.webkit.org/show_bug.cgi?id=179849

        Reviewed by Darin Adler.

        There are cases during teardown where fullscreenClient() has been cleared back to an API::FullscreenClient.
        Because those cases, WKWebView should test before downcasting to WebKit::FullscreenClient.

        This is causing a crash when fullscreen delegate is cleared after a page is closed.

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

2017-11-27  Chris Dumez  <cdumez@apple.com>

        Give Document a strongly typed identifier instead of a uint64_t
        https://bugs.webkit.org/show_bug.cgi?id=180041

        Reviewed by Youenn Fablet.

        Give Document a strongly typed identifier instead of a uint64_t, for clarity.

        * Platform/IPC/ArgumentCoders.h:
        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::notifyClientsOfControllerChange):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWClientConnection::serviceWorkerStartedControllingClient):
        (WebKit::WebSWClientConnection::serviceWorkerStoppedControllingClient):
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-11-27  Yacine Bandou  <yacine.bandou_ext@softathome.com>

        [GTK][WPE] Add "enable-encrypted-media" property to WebKitWebSettings
        https://bugs.webkit.org/show_bug.cgi?id=18005

        Reviewed by Michael Catanzaro.

        EncryptedMedia is an experimental JavaScript API for playing encrypted media in HTML.
        This property will only work as intended if the EncryptedMedia feature is enabled at build time
        with the ENABLE_ENCRYPTED_MEDIA flag.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_encrypted_media):
        (webkit_settings_set_enable_encrypted_media):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitSettings.h:

2017-11-27  Tim Horton  <timothy_horton@apple.com>

        One too many zeroes in macOS version number in FeatureDefines
        https://bugs.webkit.org/show_bug.cgi?id=180011

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2017-11-27  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Prettify ID value handling in UpdateAtlas and UpdateAtlas::Client
        https://bugs.webkit.org/show_bug.cgi?id=180038

        Reviewed by Carlos Garcia Campos.

        In the UpdateAtlas class, provide an ID type that aliases to uint32_t.
        The m_id member variable (ex-m_ID) uses this type, and it's also now
        used in the Client interface.

        While poking around, the header is modified to use '#pragma once',
        and m_id is moved to the more logical first position among member
        variables.

        The static ID variable is modified to use the new type, and renamed
        to s_nextID. Comment alongside the namespace scope closure is fixed
        to use the appropriate name.

        createUpdateAtlas() and removeUpdateAtlas() methods in the
        CompositingCoordinator class are modified to use the UpdateAtlas::ID
        type, and the former has the second parameter changed from RefPtr<>
        to Ref<>.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::createUpdateAtlas):
        (WebKit::CompositingCoordinator::removeUpdateAtlas):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::UpdateAtlas):
        (WebKit::UpdateAtlas::~UpdateAtlas):
        (WebKit::UpdateAtlas::getCoordinatedBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h:

2017-11-27  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] CompositingCoordinator: clean up Client vtable, GraphicsLayerClient overrides
        https://bugs.webkit.org/show_bug.cgi?id=180037

        Reviewed by Carlos Garcia Campos.

        Remove the CompositingCoordinator::Client::paintLayerContents() method since
        the only implementation in CoordinatedLayerTreeHost was empty.

        Subsequently, the CompositingCoordinator::paintContents() override of the
        GraphicsLayerClient method can also be removed. The notifyAnimationStarted()
        override is empty, just like the base method, so it's removed as well.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::deviceScaleFactor const): Bring method up
        to the notifyFlushRequired() code, since both are overrides of the
        GraphicsLayerClient-inherited methods.
        (WebKit::CompositingCoordinator::pageScaleFactor const): Ditto.
        (WebKit::CompositingCoordinator::notifyAnimationStarted): Deleted.
        (WebKit::CompositingCoordinator::paintContents): Deleted.
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::paintLayerContents): Deleted.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:

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

        REGRESSION(r223073): disk cache directory is no longer copied in ProcessPoolConfiguration::copy()
        https://bugs.webkit.org/show_bug.cgi?id=180031

        Reviewed by Youenn Fablet.

        This has caused GTK/WPE test /webkit2/WebKitWebsiteData/configuration to fail, and the wrong directory is used
        by the network process. I think it was removed by mistake in r223073.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy): Copy m_diskCacheDirectory too.

2017-11-27  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Improve contents of pkg-config .pc files
        https://bugs.webkit.org/show_bug.cgi?id=180032

        Reviewed by Carlos Garcia Campos.

        * gtk/webkit2gtk-web-extension.pc.in: Add URL, edit Name and Description.
        * gtk/webkit2gtk.pc.in: Add URL, edit Name.
        * wpe/wpe-webkit.pc.in: Add URL, edit Name and Description.

2017-11-23  Darin Adler  <darin@apple.com>

        Fix dictionary leak in lookup, convert FindOptions to OptionSet, tweak code style nearby
        https://bugs.webkit.org/show_bug.cgi?id=179981

        Reviewed by Sam Weinig.

        * WebProcess/Plugins/PDF/PDFPlugin.h: Use some references instead of pointers. Made more
        things final and private. Changed functions with multiple return values to use tuples
        instead of out arguments for clarity, especially because some were using pointers and it
        was ambiguous whether the pointers could be nullptr. Tweaked formatting. Moved initialization
        of data members into the class definition.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::create): Take a reference.
        (WebKit::PDFPlugin::PDFPlugin): Ditto. Also moved some initialization to the class definition.
        (WebKit::PDFPlugin::countFindMatches): Added comment about ignored maxMatchCount argument.
        (WebKit::PDFPlugin::findString): Use contains instead of & to check bits in options.
        Simplified slightly confusing match count code that was doing some unnecessary comparisons
        with the maximum match count. Use auto a bit.
        (WebKit::coreCursor): Renamed from pdfLayerControllerCursorTypeToCursor since this is C++
        and overloading works based on the argument type.
        (WebKit::PDFPlugin::notifyCursorChanged): Updated for name change.
        (WebKit::PDFPlugin::lookupTextAtLocation const): Return a tuple instead of using two out
        arguments and use a RetainPtr so we don't leak the options dictionary.

        * WebProcess/Plugins/PluginProxy.h: Removed unneeded include of FindOptions.h.

        * WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
        (WebKit::WebContextMenuClient::lookUpInDictionary): Pass a reference.

        * WebProcess/WebPage/FindController.cpp:
        (WebKit::core): Use |= instead of | to build up a FindOptions.
        (WebKit::FindController::FindController): Initialize data members in the class definition.
        (WebKit::pluginViewForFrame): Deleted. Callers now use WebPage::pluginViewForFrame.
        (WebKit::FindController::updateFindUIAfterPageScroll): Added a FIXME about some peculiar code.
        (WebKit::FindController::findString): Use |= rather than | to add in an option.
        (WebKit::FindController::hideFindUI): Use { } rather than 0 for no options.
        * WebProcess/WebPage/FindController.h: Moved initialization to the header. Exported the core
        function that converts WebKit::FindOptions to WebCore::FindOptions.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::handlesPageScaleGesture const): Use WebPage::pluginViewForFrame.
        (WebKit::WebFrame::requiresUnifiedScaleFactor const): Use WebPage::pluginViewForFrame.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createPlugin): Removed unneeded local variable and UNUSED_PARAM.
        (WebKit::WebPage::focusedPluginViewForFrame): Use pluginViewForFrame.
        (WebKit::WebPage::pluginViewForFrame): Added a null check since this takes a pointer.
        Use is/downcast insteadof more ad hoc coding style.
        (WebKit::WebPage::findStringFromInjectedBundle): Call core to convert WebKit::FindOptions
        to WebCore::FindOptions. Before, this was accidentally relying on the bits from the two
        enumrations matching! The stricter type checking of OptionSet helps us catch mistakes
        like this.

        * WebProcess/WebPage/WebPage.h: Updated for the above. Also flattened out nested #if
        statements, made forward declarations unconditional, and re-sorted them. Changed the
        Mac-specific lookupTextAtLocation to return a tuple (see below).

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupForSelection): Take a reference instead of a pointer.
        (WebKit::WebPage::performDictionaryLookupForRange): Ditto.
        (WebKit::rangeNearPositionMatchesText): Use { } rather than 0 for no options.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Use RetainPtr<NSDictionary> to fix
        code that used to leak.
        (WebKit::WebPage::performDictionaryLookupForSelection): Ditto.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Use a reference.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Updated for changed argument types.
        (WebKit::WebPage::dictionaryPopupInfoForSelectionInPDFPlugin): Ditto.
        (WebKit::WebPage::performDictionaryLookupForRange): Ditto.
        (WebKit::WebPage::performImmediateActionHitTestAtLocation): Updated to handle the
        tuple result from the lookupTextAtLocation functions.
        (WebKit::WebPage::lookupTextAtLocation): Changed to return a tuple and use RetainPtr
        for the NSDictionary to help fix the leak.

2017-11-24  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] CoordinatedGraphicsLayer::updateContentBuffers() should always assume a non-null CoordinatedBuffer
        https://bugs.webkit.org/show_bug.cgi?id=179977

        Reviewed by Carlos Garcia Campos.

        Make CompositingCoordinator::getCoordinatedBuffer() return a Ref<CoordinatedBuffer>
        value. In case an UpdateAtlas with enough free area is found, its CoordinatedBuffer
        is dereferenced into the return value. In case a new UpdateAtlas is created, the
        returned CoordinatedBuffer pointer is asserted to be non-null and dereferenced.

        The retrieved CoordinatedBuffer pointer on a newly-created UpdateAtlas should never
        be null since the tiles are smaller in size than the UpdateAtlas area. The assert
        is done in release configurations as well since the code in CoordinatedGraphicsLayer
        assumes the returned pointer will be non-null, so it's just a matter of where to
        crash first in case somehow a null value is returned.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::getCoordinatedBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

2017-11-24  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] UpdateAtlas constructor should receive an IntSize, not a dimension value
        https://bugs.webkit.org/show_bug.cgi?id=179976

        Reviewed by Carlos Garcia Campos.

        Have the UpdateAtlas constructor receive an IntSize object that specifies
        the desired size for the CoordinatedBuffer. Passing in a dimension doesn't
        really make sense since this value isn't dynamically configurable, and
        the only value that is passed in is already a power-of-two.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::getCoordinatedBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::UpdateAtlas):
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h:

2017-11-23  Sam Weinig  <sam@webkit.org>

        Remove unneeded ScriptController::processingUserGesture() forwarding functions
        https://bugs.webkit.org/show_bug.cgi?id=179954

        Reviewed by Darin Adler.

        Replace ScriptController::processingUserGesture() and ScriptController::processingUserGestureForMedia()
        with direct calls to the corresponding UserGestureIndicator functions.

        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::isProcessingUserGesture):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addResourceRequest):

2017-11-23  Chris Dumez  <cdumez@apple.com>

        WebSWServerConnection should register/unregister itself with the StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=179965

        Reviewed by Darin Adler.

        WebSWServerConnection should register/unregister itself with the StorageProcess instead of relying
        on StorageToWebProcessConnection to do so on its behalf. This is less error-prone.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::removeSWServerConnection):

2017-11-23  Darin Adler  <darin@apple.com>

        Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII
        https://bugs.webkit.org/show_bug.cgi?id=179907

        Reviewed by Sam Weinig.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::isMediaMIMEType): Use startsWithLettersIgnoringASCIICase.
        * NetworkProcess/cache/NetworkCacheKey.cpp:
        (WebKit::NetworkCache::hashString): Use isAllASCII..
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesSetCustomHeaderFields): Use startsWithLettersIgnoringASCIICase..
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomHeaderFields:]): Ditto.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder): Use endsWithIgnoringASCIICase.
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::WebPreferences): Initialize m_identifier explicitly. Somehow
        changing the String default constructor to be "= default" led to a warning that we
        otherwise did not get about not initializing m_identifier. Arguably a compiler bug,
        but legitimately strange that the copy constructor does not copy m_identifier and so
        nice to be explicit about it, I guess.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplicationRaw): Use
        endsWithIgnoringASCIICase.
        (WebKit::WebPageProxy::openPDFFromTemporaryFolderWithNativeApplication): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createPlugin): Ditto.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const): Use isAllSpecialCharacters<isHTMLSpace>.

2017-11-23  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Simplify CoordinatedGraphicsLayer's content buffer updates
        https://bugs.webkit.org/show_bug.cgi?id=179972

        Reviewed by Carlos Garcia Campos.

        In CompositingCoordinator, add the getCoordinatedBuffer() method, replacing
        paintToSurface(). The new method traverses the list of UpdateAtlases and
        returns any CoordinatedBuffer object that was free to use. If none exist,
        a new UpdateAtlas object is created, and its CoordinatedBuffer is returned.

        In  UpdateAtlas, the paintOnAvailableBuffer() method is replaced with
        getCoordinatedBuffer(). The latter allocates the necessary area but then
        returns a reference to the CoordinatedBuffer buffer, along with the atlas ID
        and the allocated rectangle information, and does not invoke any painting
        operation like paintOnAvailableBuffer() did.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::getCoordinatedBuffer):
        (WebKit::CompositingCoordinator::paintToSurface): Deleted.
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::getCoordinatedBuffer):
        (WebKit::UpdateAtlas::paintOnAvailableBuffer): Deleted.
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h:

2017-11-23  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Remove relay CoordinatedBuffer::Client implementations
        https://bugs.webkit.org/show_bug.cgi?id=179970

        Reviewed by Carlos Garcia Campos.

        Drop the helper UpdateAtlasSurfaceClient class and instead directly use
        the CoordinatedBuffer's GraphicsContext to perform clip and translation
        operations based on the allocated rectangle, to pre-fill the target rect
        with transparent color in case the alpha channel is supported, and to
        then invoke CoordinatedBuffer::Client::paintToSurfaceContext() method,
        passing the GraphicsContext as the argument.

        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::paintOnAvailableBuffer):
        (): Deleted.

2017-11-23  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Replace CoordinatedSurface, ThreadSafeCoordinatedSurface with CoordinatedBuffer
        https://bugs.webkit.org/show_bug.cgi?id=179967

        Reviewed by Carlos Garcia Campos.

        Replace uses of CoordinatedSurface class with CoordinatedBuffer. The
        ThreadSafeCoordinatedSurface class is removed, along with the code in
        CoordinatedLayerTreeHost that established a CoordinatedSurface factory.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::swapBuffers):
        (WebKit::CoordinatedBackingStoreTile::setBackBuffer):
        (WebKit::CoordinatedBackingStore::updateTile):
        * Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
        Rename m_surface to m_buffer, m_surfaceOffset to m_bufferOffset.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::createUpdateAtlas):
        (WebKit::CoordinatedGraphicsScene::updateImageBacking):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp: Removed.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.h: Removed.
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::updateImageBacking):
        (WebKit::CompositingCoordinator::createUpdateAtlas):
        (WebKit::CompositingCoordinator::paintToSurface):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
        (WebKit::CoordinatedLayerTreeHost::createCoordinatedSurface): Deleted.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp:
        (WebKit::UpdateAtlas::UpdateAtlas):
        (WebKit::UpdateAtlas::~UpdateAtlas):
        (WebKit::UpdateAtlas::paintOnAvailableBuffer):
        * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h:
        Rename m_surface to m_buffer.
        (WebKit::UpdateAtlas::size const):
        (WebKit::UpdateAtlas::supportsAlpha const):

2017-11-22  Ali Juma  <ajuma@chromium.org>

        Implement VisualViewport API attributes
        https://bugs.webkit.org/show_bug.cgi?id=179385

        Reviewed by Frédéric Wang.

        Add a VisualViewportAPI experimental feature.

        * Shared/WebPreferences.yaml:

2017-11-22  Tim Horton <timothy_horton@apple.com> and Michael Catanzaro <mcatanzaro@igalia.com>

        Remove build-webkit's notion of feature flags having a default value
        https://bugs.webkit.org/show_bug.cgi?id=177338

        Reviewed by Carlos Alberto Lopez Perez.

        Use ENABLE_EXPERIMENTAL_FEATURES instead of ENABLE_DEVELOPER_MODE to enable runtime
        experimental features.

        * Shared/WebPreferencesDefaultValues.h:

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

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

        Compilation failed on WinCairo 64-bit Release (Requested by
        fredw on #webkit).

        Reverted changeset:

        "Implement VisualViewport API attributes"
        https://bugs.webkit.org/show_bug.cgi?id=179385
        https://trac.webkit.org/changeset/225093

2017-11-21  Ali Juma  <ajuma@chromium.org>

        Implement VisualViewport API attributes
        https://bugs.webkit.org/show_bug.cgi?id=179385

        Reviewed by Frédéric Wang.

        Add a VisualViewportAPI experimental feature.

        * Shared/WebPreferences.yaml:

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

        [PAL] Remove FileSystem's dependency on WebCoreNSStringExtras
        https://bugs.webkit.org/show_bug.cgi?id=179504

        Reviewed by Darin Adler.

        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:

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

        [WPE] WPEWebProcess: Couldn't find current GLX or EGL context
        https://bugs.webkit.org/show_bug.cgi?id=179883

        Reviewed by Žan Doberšek.

        I'm seeing that message quite often when running the unit tests. The problem seems to be that some tests run so
        fast that the web process never renders the first frame, so the context is created but never made current. I've
        checked with apitrace that there are calls to eglQueryContext with null display, causing a EGL_BAD_DISPLAY, but
        I don't know where those calls are originated. Making the context current right after it's created fixes the
        problem.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::createGLContext): Always call makeContextCurrent() right after the context is created.

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

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.2 release.

        * gtk/NEWS: Add release notes for 2.19.2.

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

        Add declspec within WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=179893

        Reviewed by Darin Adler.

        * Shared/API/c/WKDeclarationSpecifiers.h:

2017-11-20  Mario Sanchez Prada  <mario@endlessm.com>

        [GTK] New API to add, retrieve and delete cookies via WebKitCookieManager
        https://bugs.webkit.org/show_bug.cgi?id=177932

        Reviewed by Carlos Garcia Campos.

        Added new API to WebKitCookieManager to add, retrieve and delete complete
        cookies into/out-of a running session, and updated documentation sections.

        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (webkit_cookie_manager_add_cookie): New function.
        (webkit_cookie_manager_add_cookie_finish): Ditto.
        (webkit_cookie_manager_get_cookies): Ditto.
        (webkit_cookie_manager_get_cookies_finish): Ditto.
        (webkit_cookie_manager_delete_cookie): Ditto.
        (webkit_cookie_manager_delete_cookie_finish): Ditto.
        * UIProcess/API/gtk/WebKitCookieManager.h: Added new functions.
        * UIProcess/API/wpe/WebKitCookieManager.h: Ditto.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Ditto.

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

        [WPE] webkit_web_view_new() should enable specifying wpe_view_backend object
        https://bugs.webkit.org/show_bug.cgi?id=178655

        Reviewed by Michael Catanzaro.

        Update all WebKitWebView constructors to receive a WebKitWebViewBackend as argument. It's now required to
        provide a backend to create a web view, but it can be NULL to use the default one. WebKitWebViewBackend is a
        boxed type wrapping a struct wpe_view_backend* used as construct only property of WebKitWebView. The view always
        takes the ownership of the WebKitWebViewBackend which owns the struct wpe_view_backend*. An optional
        GDestroyNotify and user data pointer can be passed to the WebKitWebViewBackend constructor to provide a custom
        deleter for the backend. In the C API the struct wpe_view_backend* is also mandatory now, but it can't be NULL
        and it's owned by the caller, not the view.

        * PlatformWPE.cmake:
        * UIProcess/API/C/wpe/WKView.cpp:
        (WKViewCreate):
        * UIProcess/API/C/wpe/WKView.h:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (_WebKitWebViewPrivate::~_WebKitWebViewPrivate):
        (webkitWebViewConstructed):
        (webkitWebViewSetProperty):
        (webkitWebViewGetProperty):
        (webkit_web_view_class_init):
        (webkitWebViewCreatePage):
        (webkit_web_view_get_backend):
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        (WKWPE::View::~View):
        * UIProcess/API/wpe/WebKitWebView.h:
        * UIProcess/API/wpe/WebKitWebViewBackend.cpp: Added.
        (_WebKitWebViewBackend::_WebKitWebViewBackend):
        (_WebKitWebViewBackend::~_WebKitWebViewBackend):
        (webkitWebViewBackendRef):
        (webkitWebViewBackendUnref):
        (webkitWebViewBackendCreateDefault):
        (webkit_web_view_backend_new):
        (webkit_web_view_backend_get_wpe_backend):
        * UIProcess/API/wpe/WebKitWebViewBackend.h: Added.
        * UIProcess/API/wpe/WebKitWebViewBackendPrivate.h: Added.
        * UIProcess/API/wpe/WebKitWebViewWPE.cpp:
        (webkit_web_view_new):
        (webkit_web_view_new_with_context):
        (webkit_web_view_new_with_related_view):
        (webkit_web_view_new_with_settings):
        (webkit_web_view_new_with_user_content_manager):
        * UIProcess/API/wpe/webkit.h:

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

        [GTK][WPE] webkit_cookie_manager_delete_all_cookies doesn't delete the cookies if called before a web process is running
        https://bugs.webkit.org/show_bug.cgi?id=175265

        Reviewed by Michael Catanzaro.

        This is what happens:

        1- We create our WebKitWebContext that creates its WebProcessPool.
        2- We set a persistent cookies storage.
        3- We ask the website data store to delete all cookies, but since website data store is a web process observer
           and we haven't spawned any web process yet, it creates a new WebProcessPool with the default configuration
           (no persistent cookies) and sends the message to delete the cookies there.
        4- The network process of the second process pool does nothing because it doesn't have cookies at all.

        We need to set the primary data store of the WebProcessPool when WebKitWebContext is constructed to ensure that
        one is used before the web process is launched.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextConstructed):

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused TOUCH_ICON_LOADING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179873

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused LEGACY_VENDOR_PREFIXES feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179872

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

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

        ASSERTION FAILED: registration in WebCore::SWServerJobQueue::scriptContextStarted(ServiceWorkerIdentifier)
        https://bugs.webkit.org/show_bug.cgi?id=179846

        Reviewed by Darin Adler.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::rejectJobInClient):
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        * WebProcess/Storage/WebSWContextManagerConnection.h:

2017-11-18  Tim Horton  <timothy_horton@apple.com>

        Rename some Network Capture debugging defines
        https://bugs.webkit.org/show_bug.cgi?id=179870

        Reviewed by Darin Adler.

        * NetworkProcess/capture/NetworkCaptureLogging.h:
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        (WebKit::NetworkCapture::Manager::findMatch):
        (WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
        These shouldn't have WTF in their name - they have nothing to do with WTF.
        These shouldn't use ENABLE(), since they're not features, just debugging macros.

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

        [Service Workers] Implement "Notify Controller Change" algorithm
        https://bugs.webkit.org/show_bug.cgi?id=179822

        Reviewed by Youenn Fablet.

        * Scripts/webkit/messages.py:
        (class_template_headers):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::notifyClientsOfControllerChange):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

        Use a strongly typed identifier for SWServer::Connection
        https://bugs.webkit.org/show_bug.cgi?id=179848

        Reviewed by Brady Eidson.

        Use a strongly typed identifier for SWServer::Connection, for clarity.

        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        (forward_declarations_and_headers.templates):
        (headers_for_type):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFailFetch):
        (WebKit::StorageProcess::didNotHandleFetch):
        (WebKit::StorageProcess::didReceiveFetchResponse):
        (WebKit::StorageProcess::didReceiveFetchData):
        (WebKit::StorageProcess::didReceiveFetchFormData):
        (WebKit::StorageProcess::didFinishFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::removeSWServerConnection):
        (WebKit::generateIDBConnectionToServerIdentifier):
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer):
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:

2017-11-17  John Wilander  <wilander@apple.com>

        Storage Access API: UI process should update network process about granted access
        https://bugs.webkit.org/show_bug.cgi?id=176943
        <rdar://problem/34440612>

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
            Updates storage access on the session.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::setStorageAccessAPIEnabled):
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerSetStorageAccessAPIEnabled):
        * UIProcess/API/C/WKCookieManager.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsHasHadNonRecentUserInteraction):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _isStorageAccessAPIEnabled]):
        (-[WKProcessPool _setStorageAccessAPIEnabled:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetHasHadNonRecentUserInteractionForHost:]):
            Test infrastructure.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::setStorageAccessAPIEnabled):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::nextRequestStorageAccessContextId):
        (WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains):
            Sends a message to the network process to update storage access.
        (WebKit::NetworkProcessProxy::storageAccessRequestResult):
            Receives a message from the network process that storage access
            was updated.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::setStorageAccessAPIEnabled):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
            Test infrastructure.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
            Now makes the API call even if the only operation is to clear first.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler):
            Propagates the storage access directive to the network process proxy.
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-11-16  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add network (curl) files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=179474

        Reviewed by Alex Christensen.

        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::decode): Fidex return value since currently no operation is needed for wincairo webkit.
        (IPC::ArgumentCoder<ResourceError>::decodePlatformData): Fidex return value since currently no operation is needed for wincairo webkit.
        * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp: Renamed from Source/WebKit/WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.cpp.
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.h: Renamed from Source/WebKit/WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.h.

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

        [WinCairo] Update WinCairoRequirements
        https://bugs.webkit.org/show_bug.cgi?id=179790

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:

2017-11-16  Youenn Fablet  <youenn@apple.com>

        Service Worker should get the body of intercepted requests
        https://bugs.webkit.org/show_bug.cgi?id=179776

        Reviewed by Alex Christensen.

        Pass a FormDataReference when starting fetch IPC.
        Convert this FormDataReference in a FormData and using it to set the FetchRequest body properly in Service Worker process.
        Forbid fetch interception when URL is not HTTP/HTTPS.

        * Platform/IPC/FormDataReference.h:
        (IPC::FormDataReference::FormDataReference):
        (IPC::FormDataReference::takeData):
        (IPC::FormDataReference::encode const):
        (IPC::FormDataReference::decode):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):

2017-11-16  Daniel Bates  <dabates@apple.com>

        Add feature define for alternative presentation button element
        https://bugs.webkit.org/show_bug.cgi?id=179692
        Part of <rdar://problem/34917108>

        Reviewed by Andy Estes.

        Only enabled on Cocoa platforms by default.

        * Configurations/FeatureDefines.xcconfig:

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

        [Service Worker] Implement "Try Clear Registration" algorithm
        https://bugs.webkit.org/show_bug.cgi?id=179791

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::serviceWorkerStartedControllingClient):
        (WebKit::WebSWClientConnection::serviceWorkerStoppedControllingClient):
        * WebProcess/Storage/WebSWClientConnection.h:

2017-11-16  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r224179): layer flush now requires sync IPC to compute undo/redo availability in EditorState
        https://bugs.webkit.org/show_bug.cgi?id=179797

        Reviewed by Simon Fraser.

        r224179 introduced a performance regression. The newly-added code in WebPage::editorState is
        part of a performance-critical path. (The editor state is computed and sent to the UI
        process during the layer flush.) Calls to Editor::canUndo and Editor::canRedo were added,
        but these calls are both implemented with sync IPC calls to WebPageProxy in the UI process.
        WebPageProxy passes them along to PageClientImpl to compute the availability of the
        commands.

        That's all pointless because this code only exists for the purpose of getting editing
        command availability to the UI process. In the case of undo and redo, it's not needed at
        all. I did not realize that when writing the code. So canUndo and canRedo should be removed
        from EditorState. This ought to be sufficient to avoid the perf regression.

        No changes are needed to the GTK/WPE WebKitEditorState API. The API is reimplemented using
        WebPageProxy::canUndoRedo instead of EditorState. There should be no changes in behavior,
        only performance.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:
        * UIProcess/API/glib/WebKitEditorState.cpp:
        (webkitEditorStateCreate):
        (webkitEditorStateChanged):
        * UIProcess/API/glib/WebKitEditorStatePrivate.h:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_get_editor_state):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::canUndo):
        (WebKit::WebPageProxy::canRedo):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):

2017-11-16  Megan Gardner  <megan_gardner@apple.com>

        Remove allowBlockSelection as block selection is not supported anymore
        https://bugs.webkit.org/show_bug.cgi?id=179738

        Reviewed by Tim Horton.

        Remove all instances of the alloweBlockSelection flag. Blocks selection is fully disabled
        and thus this flag will do nothing. This was only added as a debug measure last year, and nothing
        ever actually used it.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _allowsBlockSelection]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _allowsBlockSelection]): Deleted.
        (-[WKWebViewConfiguration _setAllowsBlockSelection:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::allowsBlockSelection): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:

2017-11-16  Brent Fulgham  <bfulgham@apple.com>

        Whitelist additional IOKit properties based on customer feedback
        https://bugs.webkit.org/show_bug.cgi?id=179782
        <rdar://problem/35508246>

        Reviewed by Dean Jackson.

        Expand the IOKit property whitelist to recognize a few more properties as valid based on review of logs
        from customer systems and our test infrastructure.

        * WebProcess/com.apple.WebProcess.sb.in:

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

        Implement basics of "Terminate Service Worker" algorithm.
        https://bugs.webkit.org/show_bug.cgi?id=179551

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::terminateWorker):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::terminateWorker):
        (WebKit::WebSWContextManagerConnection::workerTerminated):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-15  Brent Fulgham  <bfulgham@apple.com>

        Remove access to 'com.apple.mediaaccessibility.public' preferences in WebContent sandbox
        https://bugs.webkit.org/show_bug.cgi?id=179747
        <rdar://problem/35367346>

        Reviewed by Dean Jackson.

        The 'mediaaccessibilityd' process handles access to MediaAccessibility preferences. We don't need
        to grant the WebContent Process sandbox access to them.

        * WebProcess/com.apple.WebProcess.sb.in: 

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

        Revert r224885
        https://bugs.webkit.org/show_bug.cgi?id=179719

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::compiledToFile):
        r224885 was a speculative fix that did not fix anything on the bots.

2017-11-15  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r224830.

        * WebProcess/com.apple.WebProcess.sb.in: Add missing sysctl-read permissions needed
        to support testing on Mac Mini hardware.

2017-11-15  Youenn Fablet  <youenn@apple.com>

        Add ServiceWorker to WebProcess plumbery for FormData fetch responses
        https://bugs.webkit.org/show_bug.cgi?id=179694

        Reviewed by Alex Christensen.

        Added plumbery from Service Worker up to Web Process to pass form data response bodies.
        A follow-up patch should read the data from Network Process and send it to the ResourceLoader.

        * Platform/IPC/FormDataReference.h: Added.
        (IPC::FormDataReference::FormDataReference):
        (IPC::FormDataReference::takeData):
        (IPC::FormDataReference::encode const):
        (IPC::FormDataReference::decode):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::didReceiveFetchFormData):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didReceiveFetchFormData):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveFormData):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormData):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

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

        Move a compiled WKContentRuleList to its destination before calling mmap
        https://bugs.webkit.org/show_bug.cgi?id=179719

        Reviewed by Brady Eidson.

        Right now we compile a WKContentRuleList to a temporary file, call mmap, close the file, then move it.
        Sometimes, especially on bots running tests, the move fails because the temporary file doesn't exist
        any more.  Moving the file before mmaping and closing the file might prevent this failure.

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::compiledToFile):

2017-11-15  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Implement Client API
        https://bugs.webkit.org/show_bug.cgi?id=179709

        Reviewed by Alex Christensen.

        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-15  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r224863.

        Introduced LayoutTest crashes on iOS Simulator.

        Reverted changeset:

        "Move JSONValues to WTF and convert uses of InspectorValues.h
        to JSONValues.h"
        https://bugs.webkit.org/show_bug.cgi?id=173793
        https://trac.webkit.org/changeset/224863

2017-11-14  Brent Fulgham  <bfulgham@apple.com>

        Remove access to "com.apple.pbs.fetch_services" from WebContent sandbox
        https://bugs.webkit.org/show_bug.cgi?id=179689
        <rdar://problem/35369172>

        Reviewed by Per Arne Vollan.

        WebKit's WebContent process should not have any need to interact with the fetch_services
        API exposed to the system. These interactions (if needed) should be happening in the UIProcess,
        so we should prevent the untrusted Web Content Process from being able to connect.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-11-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove GTK web inspector images
        https://bugs.webkit.org/show_bug.cgi?id=179716

        Reviewed by Carlos Garcia Campos.

        * InspectorGResources.cmake:

2017-11-15  Gabriel Ivascu  <givascu@igalia.com>

        [GTK] Automatically adjust font size when gtk-xft-dpi changes
        https://bugs.webkit.org/show_bug.cgi?id=142673

        Some follow-up fixes for the previous patch.

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsDispose):
        (webKitSettingsConstructed):

2017-11-14  Nan Wang  <n_wang@apple.com>

        AX: AOM: Implement AccessibleNode class and support label and role attributes
        https://bugs.webkit.org/show_bug.cgi?id=179494

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetAccessibilityObjectModelEnabled):
        (WKPreferencesGetAccessibilityObjectModelEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

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

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Brian Burg.

        Based on patch by Brian Burg.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame):
        (WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout):
        (WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout):
        (WebKit::WebAutomationSession::navigationOccurredForFrame):
        (WebKit::WebAutomationSession::documentLoadedForFrame):
        (WebKit::WebAutomationSession::inspectorFrontendLoaded):
        (WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
        (WebKit::WebAutomationSession::evaluateJavaScriptFunction):
        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::setSessionPermissions):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        * UIProcess/Automation/WebAutomationSession.h:

2017-11-14  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Implement container.getRegistrations()
        https://bugs.webkit.org/show_bug.cgi?id=179672

        Reviewed by Brady Eidson.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::getRegistrations):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::didGetRegistrations):
        (WebKit::WebSWClientConnection::getRegistrations):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-11-14  Youenn Fablet  <youenn@apple.com>

        Implement ServiceWorker handle fetch for navigation loads
        https://bugs.webkit.org/show_bug.cgi?id=179404

        Reviewed by Alex Christensen and Chris Dumez.

        Update handle fetch algorithm to support navigation requests.
        In case of navigation requests, set service worker response mime type to text/html if none is provided.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::shouldHandleFetch):
        (WebKit::WebServiceWorkerProvider::handleFetch):

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

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

        Reviewed by Antti Koivisto.

        * NetworkProcess/Downloads/Download.h:

2017-11-14  Daniel Bates  <dabates@apple.com>

        Update comment in FeatureDefines.xcconfig to reflect location of Visual Studio property files
        for feature defines

        Following r195498 and r201917 the Visual Studio property files for feature defines have
        moved from directory WebKitLibraries/win/tools/vsprops to directory Source/cmake/tools/vsprops.
        Update the comment in FeatureDefines.xcconfig to reflect the new location and names of these
        files.

        * Configurations/FeatureDefines.xcconfig:

2017-11-14  Brent Fulgham  <bfulgham@apple.com>

        Whitelist some IOKIt properties to avoid sandbox violations on YouTube
        https://bugs.webkit.org/show_bug.cgi?id=179683
        <rdar://problem/35415368>

        Reviewed by Dean Jackson.

        YouTube video playback on some hardware (and some video encodings) generates sandbox violations. Add
        whitelist entries for the relevant IOKit properties needed to support these activities.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-11-14  Daniel Bates  <dabates@apple.com>

        Mark WebChromeClient::requestStorageAccess() as final
        https://bugs.webkit.org/show_bug.cgi?id=179673

        Reviewed by Sam Weinig.

        Mark WebChromeClient::requestStorageAccess() as final so that it overrides the virtual function
        in ChromeClient with the same name and hence we actually call it through a ChromeClient pointer.

        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-11-14  Youenn Fablet  <youenn@apple.com>

        WebSWClientConnection should do IPC to StorageProcess if its WebSWOriginTable is not yet initialized
        https://bugs.webkit.org/show_bug.cgi?id=179668

        Reviewed by Chris Dumez.

        There may be cases where the origin table is not initialized and we would think there is no service worker registration.
        In such a case, we should go to the StorageProcess.
        StorageProcess is now sending an IPC message back to each registered SW connection so that WebProcess will know whether its map
        is correctly initialized or not.

        Renaming hasServiceWorkerRegisteredForOrigin in mayHaveServiceWorkerRegisteredForOrigin.

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
        (WebKit::WebSWClientConnection::matchRegistration):
        (WebKit::WebSWClientConnection::hasServiceWorkerRegisteredForOrigin const): Deleted.
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWOriginTable.h:
        (WebKit::WebSWOriginTable::isInitialized const):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::shouldHandleFetch):

2017-11-14  Brent Fulgham  <bfulgham@apple.com>

        Consolidate sysctl-read rules in WebProcess sandbox
        https://bugs.webkit.org/show_bug.cgi?id=179674
        <rdar://problem/35367154>

        Reviewed by Dean Jackson.

        Consolidate the various calls to 'allow sysctl-read' imported during Bug 179548 into
        the main function in the sandbox profile.

        Remove the statement to grant global sysctl-read permissions that was copied into this
        sandbox profile in an earlier checkin. We started blocking the blanket read permissions in
        macOS 10.13, and want to continue to do so.
        
        The earlier "grant global read access" in 'system.sb' apparently allowed some sysctl reads
        to occur before we hit the block declaration in the WebContent sandbox. Now that we are
        consistently blocking systcl reads from the start, we need to add whitelist entries for a
        few more entries to avoid creating new sandbox violations.

        * WebProcess/com.apple.WebProcess.sb.in:

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

        Remove WebKit CFURLConnection code
        https://bugs.webkit.org/show_bug.cgi?id=179645

        Reviewed by Alexey Proskuryakov.

        The CFURLConnection code is Windows-specific now. Nobody can use it in modern WebKit.

        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/mac/DownloadMac.mm:
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::serverTrustCredential):
        * NetworkProcess/mac/NetworkLoadMac.mm:
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::useCredentialForSingleChallenge):
        (WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
        (WebKit::AuthenticationManager::cancelSingleChallenge):
        (WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
        * config.h:

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

        Remove assertions added in r224791
        https://bugs.webkit.org/show_bug.cgi?id=178751#c10

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        I had added assertions that sandbox extension handle consumption succeeds.
        In the API test IndexedDB.StructuredCloneBackwardCompatibility we get a sandbox extension handle
        to give access to a directory that does not exist and consumption fails.  We want it to fail,
        so my optimistic addition of a success assertion was incorrect.  The test passes without it
        and behaves like it used to.

2017-11-14  Tim Horton  <timothy_horton@apple.com>

        Don't use -[NSString stringWithFormat:] to build defaults keys
        https://bugs.webkit.org/show_bug.cgi?id=179680

        Reviewed by Simon Fraser.

        * UIProcess/mac/WebPreferencesMac.mm:
        (WebKit::makeKey):
        (WebKit::debugUserDefaultsValue):
        Use string concatenation instead of stringWithFormat to build
        preference keys. This wasn't a huge cost, but it shaves a few milliseconds
        off process launch.

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

        Clean up old URL parser remnants
        https://bugs.webkit.org/show_bug.cgi?id=179573

        Reviewed by Darin Adler.

        * WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
        (WebKit::WebContextMenuClient::searchWithGoogle):
        Use https if we do end up searching with google.

2017-11-14  Antti Koivisto  <antti@apple.com>

        Enable display:contents by default
        https://bugs.webkit.org/show_bug.cgi?id=179655

        Reviewed by Sam Weinig.

        * Shared/WebPreferences.yaml:

        Make non-experimental and enabled.

2017-11-10  Brent Fulgham  <bfulgham@apple.com>

        Consolidate mach-lookup calls in WebProcess sandbox
        https://bugs.webkit.org/show_bug.cgi?id=179650
        <rdar://problem/35367154>

        Reviewed by Dean Jackson.

        Consolidate the various calls to 'allow mach-lookup' imported during Bug 179548 into the main
        function in the sandbox profile. Remove some entries that are not needed by WebKit.

        Remove the statement to grant global permission to perform mach-lookup for any xpc
        service name that was copied into this sandbox profile in Bug 179548. We started blocking
        this in macOS 10.13 and want to continue to do so.
        
        The earlier "grant global permission" in 'system.sb' apparently allowed some xpc lookups to occur
        before we hit the block declaration in the WebContent sandbox. Now that we are consistently blocking
        mach lookups we need to add whitelist entries for a few more services to avoid creating new
        sandbox violations.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-11-14  Tim Horton  <timothy_horton@apple.com>

        Long pressing a phone number with spaces in it results in a link sheet instead of a data detectors sheet
        https://bugs.webkit.org/show_bug.cgi?id=179646
        <rdar://problem/35337288>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant showLinkSheet]):
        (-[WKActionSheetAssistant showDataDetectorsSheet]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        Make use of canBePresentedByDataDetectors with our WebCore URL instead
        of (sometimes unsucessfully) reparsing the URL with NSURL's parser.
        Also, avoid a few unnecessary round-trips through String when converting
        from URL to NSURL.

2017-11-14  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r224799): WebKit crashes on Sierra due to sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=179656
        
        Unreviewed build fix.

        * WebProcess/com.apple.WebProcess.sb.in: Switch to Dan's recommended version check.

2017-11-13  Joseph Pecoraro  <pecoraro@apple.com>

        Give a ServiceWorker WebContentProcess a different display name
        https://bugs.webkit.org/show_bug.cgi?id=179653

        Reviewed by Brady Eidson.

        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::create):
        Call connect after construction so virtual methods will use subclass implementations.

        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::create):
        Copy the pattern from WebProcessProxy to ensure connect() gets called after construction.

        (WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
        Set a launch option to signal this is a Service Worker process.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        Consume the launch option to configuration the process name.

2017-11-13  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r224799): WebKit crashes at launch on macOS Sierra due to a sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=179656

        Unreviewed. Revert r224799 on macOS Sierra.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-11-13  Chris Dumez  <cdumez@apple.com>

        Send ServiceWorkerData structs to the WebProcesses instead of ServiceWorkerIdentifiers
        https://bugs.webkit.org/show_bug.cgi?id=179649

        Reviewed by Brady Eidson.

        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::updateRegistrationStateInClient):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-11-13  Brady Eidson  <beidson@apple.com>

        Massive "Server-process-to-context-process" connection overhaul.
        https://bugs.webkit.org/show_bug.cgi?id=179554

        Reviewed by Chris Dumez.

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

        * Shared/WebCoreArgumentCoders.h:

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::sendToContextProcess):
        (WebKit::WebSWServerConnection::installServiceWorkerContext): Deleted.
        (WebKit::WebSWServerConnection::fireInstallEvent): Deleted.
        (WebKit::WebSWServerConnection::fireActivateEvent): Deleted.
        (WebKit::WebSWServerConnection::setContextConnection): Deleted.
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp: Copied from Source/WebCore/workers/service/server/SWServerWorker.cpp.
        (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderDestinationID):
        (WebKit::WebSWServerToContextConnection::connectionClosed):
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        (WebKit::WebSWServerToContextConnection::fireInstallEvent):
        (WebKit::WebSWServerToContextConnection::fireActivateEvent):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.h: Copied from Source/WebCore/workers/service/ServiceWorkerTypes.h.
        (WebKit::WebSWServerToContextConnection::create):
        (WebKit::WebSWServerToContextConnection::ipcConnection const):
        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: Copied from Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didClose):
        (WebKit::StorageProcess::didReceiveMessage):
        (WebKit::StorageProcess::globalServerToContextConnection):
        (WebKit::StorageProcess::createServerToContextConnection):
        (WebKit::StorageProcess::didGetWorkerContextProcessConnection):
        (WebKit::StorageProcess::workerContextProcessConnection): Deleted.
        (WebKit::StorageProcess::createWorkerContextProcessConnection): Deleted.
        (WebKit::StorageProcess::serviceWorkerContextFailedToStart): Deleted.
        (WebKit::StorageProcess::serviceWorkerContextStarted): Deleted.
        (WebKit::StorageProcess::didFinishServiceWorkerInstall): Deleted.
        (WebKit::StorageProcess::didFinishServiceWorkerActivation): Deleted.
        (WebKit::StorageProcess::setServiceWorkerHasPendingEvents): Deleted.
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::workerContextProcessConnectionCreated):

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::fireInstallEvent):
        (WebKit::WebSWContextManagerConnection::fireActivateEvent):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        (WebKit::WebSWContextManagerConnection::didFinishActivation):
        (WebKit::WebSWContextManagerConnection::setServiceWorkerHasPendingEvents):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-13  Brent Fulgham  <bfulgham@apple.com>

        WebContent sandbox should not include 'system.sb'
        https://bugs.webkit.org/show_bug.cgi?id=179548
        <rdar://problem/35367154>

        Reviewed by Darin Adler.

        Stop including 'system.sb', and just include the portions of that sandbox that we
        actually use in WebContent Process. This is the first step in some further sandbox
        tightening.

        * WebProcess/com.apple.WebProcess.sb.in:

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

        When navigating back to a page, compositing layers may not use accelerated drawing
        https://bugs.webkit.org/show_bug.cgi?id=178749
        rdar://problem/35158946

        Reviewed by Dean Jackson.

        Avoid assertions when a test enables accelerated drawing (which we can't support
        in the iOS simulator).

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::ensureBackingStore):

2017-11-13  Youenn Fablet  <youenn@apple.com>

        matchRegistration does not need to go to StorageProcess if no service worker is registered
        https://bugs.webkit.org/show_bug.cgi?id=179480

        Reviewed by Chris Dumez.

        Removed origin store handling from StorageProcess since it is now handled within SWServer.
        Updated clearing of web site data accordingly.
        Optimized matchRegistration by looking at the origin store before doing any IPC.
        Do IPC to the StorageProcess if the origin store is not yet initialized on the WebProcess.

        * StorageProcess/ServiceWorker/WebSWOriginStore.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::swServerForSession):
        (WebKit::StorageProcess::swOriginStoreForSession):
        (WebKit::StorageProcess::registerSWServerConnection):
        (WebKit::StorageProcess::unregisterSWServerConnection):
        (WebKit::StorageProcess::ensureSWOriginStoreForSession): Deleted.
        (WebKit::StorageProcess::swOriginStoreForSession const): Deleted.
        * StorageProcess/StorageProcess.h:
        * StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
        (WebKit::WebSWOriginStore::addToStore):
        (WebKit::WebSWOriginStore::removeFromStore):
        (WebKit::WebSWOriginStore::clearStore):
        (WebKit::WebSWOriginStore::add): Deleted.
        (WebKit::WebSWOriginStore::remove): Deleted.
        (WebKit::WebSWOriginStore::clear): Deleted.
        * StorageProcess/ServiceWorker/WebSWOriginStore.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::matchRegistration):

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

        Merge NetworkProcess::EnsurePrivateBrowsingSession and NetworkProcess::AddWebsiteDataStore into one message type
        https://bugs.webkit.org/show_bug.cgi?id=178751

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::ensurePrivateBrowsingSession): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession): Deleted.
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::legacyPrivateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensurePrivateBrowsingSession): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        Add logs to debug content extension test failures
        https://bugs.webkit.org/show_bug.cgi?id=179624

        Reviewed by Chris Dumez.

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::compiledToFile):
        Right now I'm seeing this log:
        "Rule list compilation failed: Unspecified error during compile."
        I need more information to debug what is failing on the bots.

2017-11-07  Brian Burg  <bburg@apple.com>

        Web Automation: inViewCenterPoint should not include topContentInset when computed in viewport coordinates
        https://bugs.webkit.org/show_bug.cgi?id=179129
        <rdar://problem/35297038>

        Reviewed by Simon Fraser.

        When computing the in view center point per W3C specification, the top content inset
        is inadvertently added back in when converting to the root view coordinate system.

        This patch reworks the protocol command so that it explicitly requests a coordinate
        system, with options for "Page" (root / contents), "LayoutViewport", and "VisualViewport".
        The latter is not implemented in this patch, since it is intended for use on iOS someday.

        * UIProcess/Automation/Automation.json:
        Change usesViewport to CoordinateSystem.
        Add a new coordinate system enum type and use it.
        Fix relevant comments for Automation.computElementLayout.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::protocolStringToCoordinateSystem):
        (WebKit::WebAutomationSession::computeElementLayout):
        Parse the requested coordinate system and send it in the message to the web process.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in:
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        Rework the implementation. Get the element bounds and in-view center point in
        client coordinates and convert back to root view coordinates for CoordinateSystem::Page.

2017-11-08  Keith Miller  <keith_miller@apple.com>

        Async iteration should only fetch the next method once and add feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179451

        Reviewed by Geoffrey Garen.

        Add feature flag for Async iteration.

        * Configurations/FeatureDefines.xcconfig:

2017-11-13  Mark Lam  <mark.lam@apple.com>

        Add more overflow check book-keeping for MarkedArgumentBuffer.
        https://bugs.webkit.org/show_bug.cgi?id=179634
        <rdar://problem/35492517>

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::construct):
        (WebKit::NPJSObject::invoke):

2017-11-13  Timothy Horton  <timothy_horton@apple.com>

        Address some post-landing review comments from r224728
        https://bugs.webkit.org/show_bug.cgi?id=179576

        * Platform/IPC/mac/MachMessage.h:
        (IPC::MachMessage::setMessageReceiverName):
        (IPC::MachMessage::setMessageName):
        More moving!

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

        Occasional MobileSafari crash under -[WKPDFView web_setMinimumSize:]
        https://bugs.webkit.org/show_bug.cgi?id=179628
        <rdar://problem/34773037>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _computePageAndDocumentFrames]):
        Similar to r223444, avoid propagating null CGRects into the view hierarchy.
        In this case, the null rect comes from applying margins to a rect that is 
        smaller than the margins. We could check for that specifically, but a
        more-general check for a null rect seems reasonable.

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

        Use the real mach type instead of reinterpret_casting in MachMessage
        https://bugs.webkit.org/show_bug.cgi?id=179629

        Reviewed by Dan Bernstein.

        * Platform/IPC/mac/MachMessage.cpp:
        (IPC::MachMessage::header):
        * Platform/IPC/mac/MachMessage.h:
        Just use mach_msg_header_t proper, and avoid the reinterpret_cast.
        This also corrects the alignment of the struct on platforms where
        alignof(mach_msg_header_t) != alignof(uint8_t).

2017-11-13  Gabriel Ivascu  <givascu@igalia.com>

        [GTK] Automatically adjust font size when gtk-xft-dpi changes
        https://bugs.webkit.org/show_bug.cgi?id=142673

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsDispose):
        (webKitSettingsConstructed):
        (webkit_settings_class_init):

2017-11-13  Chris Dumez  <cdumez@apple.com>

        Implement "Service Worker Has No Pending Events" / "Update Service Worker Extended Events Set" algorithms
        https://bugs.webkit.org/show_bug.cgi?id=179618

        Reviewed by Brady Eidson.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::setServiceWorkerHasPendingEvents):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::setServiceWorkerHasPendingEvents):
        * WebProcess/Storage/WebSWContextManagerConnection.h:

2017-11-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement SPI for clients to request data for a given attachment
        https://bugs.webkit.org/show_bug.cgi?id=179586
        <rdar://problem/35355720>

        Reviewed by Darin Adler.

        Adds support in WebKit for fetching data for a given attachment element. See WebCore/ChangeLog for more details.
        Most of the changes here are boilerplate plumbing of -requestAttachmentData through the client layers.

        Test coverage by augmenting existing API tests in WKAttachmentTests, and adding 3 new tests.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::requestData):
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAttachment.mm:
        (-[_WKAttachment requestData:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::sharedBufferCallback):

        Add a new IPC callback helper type, SharedBufferCallback. This is similar to the existing DataCallback, but
        instead of deserializing to an API::Data, we convert to a SharedBuffer instead. Additionally,
        SharedBufferCallback is able to draw a distinction between null data and empty data. This allows -requestData:
        to distinguish between cases where (for instance) the data for a given attachment is an empty blob, and when
        the attachment doesn't exist at all.

        (WebKit::WebPageProxy::dataCallback):
        (WebKit::WebPageProxy::insertAttachment):
        (WebKit::WebPage::invokeSharedBufferCallback):
        (WebKit::WebPageProxy::requestAttachmentData):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestAttachmentData):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-11-12  Darin Adler  <darin@apple.com>

        More is<> and downcast<>, less static_cast<>
        https://bugs.webkit.org/show_bug.cgi?id=179600

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivate.cpp:
        (WebKit::wrap): Use is/downcast.
        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent): Ditto.
        * WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::handleEditingKeyboardEvent): Ditto.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::frameForEvent): Ditto.

2017-11-12  Gabriel Ivascu  <givascu@igalia.com>

        [GTK] Add functionality to handle font sizes in points
        https://bugs.webkit.org/show_bug.cgi?id=179285

        Reviewed by Carlos Garcia Campos and Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init):
        (webkit_settings_font_size_to_points):
        (webkit_settings_font_size_to_pixels):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:

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

        Increase the alignment requirement of WKObject's wrapped C++ object
        https://bugs.webkit.org/show_bug.cgi?id=179518

        Reviewed by Dan Bernstein.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::allocateWKObject):
        (API::Object::fromWKObjectExtraSpace):
        (API::Object::newObject):
        * Shared/Cocoa/WKObject.mm:
        (-[WKObject dealloc]):
        (-[WKObject _apiObject]):
        * UIProcess/API/Cocoa/WKConnection.mm:
        (-[WKConnection dealloc]):
        (-[WKConnection _apiObject]):
        (-[WKConnection _connection]):
        Increase the alignment of the C++ object stored inside WKObject's extra space
        to 8-bytes, for platforms where some types require greater-than-pointer alignment.
        To achieve this, increase the size of the extra-space allocation by the difference
        between 8 bytes and pointer-alignment, and then align within that.

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

        Avoid composing the message + recipient name for crash logs until a failure actually occurs
        https://bugs.webkit.org/show_bug.cgi?id=179576

        Reviewed by Dan Bernstein.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendMessage):
        (IPC::Connection::sendOutgoingMessage):
        * Platform/IPC/mac/MachMessage.h:
        (IPC::MachMessage::messageReceiverName const):
        (IPC::MachMessage::setMessageReceiverName):
        (IPC::MachMessage::messageName const):
        (IPC::MachMessage::setMessageName):
        Store the message name and receiver name separately on MachMessage,
        only composing them into a string if the message is unhandled. This
        makes the time spent composing the string in sendOutgoingMessage
        completely disappear. In absolute terms, it wasn't huge, but if you
        do enough IPC it starts to add up.

2017-11-10  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Implement "Try Activate" / "Activate" algorithms
        https://bugs.webkit.org/show_bug.cgi?id=179436

        Reviewed by Brady Eidson.

        Implement proper "Try Activate" / "Activate" algorithms as per:
        - https://w3c.github.io/ServiceWorker/#try-activate-algorithm
        - https://w3c.github.io/ServiceWorker/#activation-algorithm

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::fireActivateEvent):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFinishServiceWorkerActivation):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::fireActivateEvent):
        (WebKit::WebSWContextManagerConnection::didFinishActivation):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-10  John Wilander  <wilander@apple.com>

        Ignore HSTS for partitioned, cross-origin subresource requests
        https://bugs.webkit.org/show_bug.cgi?id=178993
        <rdar://problem/34962462>

        Reviewed by Brent Fulgham.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (downgradeRequest):
            Convenience function to downgrade a request if
            CFNetwork as already upgraded it during
            canonicalization. This allows the rest of 
            WebKit's processing to function, such as UIR
            and mixed content blocking.
        (updateIgnoreStrictTransportSecuritySettingIfNecessary):
            Adds and removed the ignore request accordingly.
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.

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

        _WKThumbnailView initialization with WKWebView needs to call correct initWithFrame
        https://bugs.webkit.org/show_bug.cgi?id=179537
        <rdar://problem/35275219>

        Reviewed by Darin Adler.

        I introduced this in r223439 and made an ObjC mistake.  This is what I get for adding SPI with no tests.
        I fixed this by making the existing WKView/_WKThumbnailView API tests work with WKWebView.

        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        (-[_WKThumbnailView initWithFrame:fromWKWebView:]):

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

        [GTK][WPE] Switch to use API::NavigationClient
        https://bugs.webkit.org/show_bug.cgi?id=178720

        Reviewed by Alex Christensen.

        Replace WebKitLoaderClient and WebKitPolicyClient with WebKitNavigationClient that implements
        API::NavigationClient.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * UIProcess/API/APINavigationAction.h: Add new constructor that receives a target frame name instead of a target
        frame info.
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didDisplayInsecureContent): Added.
        (API::NavigationClient::didRunInsecureContent): Added.
        (API::NavigationClient::decidePolicyForNavigationResponse): Change NavigationResponse parameter to be a
        Ref<NavigationResponse>&& instead of a NavigationResponse&.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient): Update NavigationResponse parameter.
        * UIProcess/API/glib/WebKitBackForwardList.cpp:
        (webkitBackForwardListChanged):
        * UIProcess/API/glib/WebKitBackForwardListPrivate.h:
        * UIProcess/API/glib/WebKitNavigationAction.cpp:
        (webkitNavigationActionCreate): Wrap the given API::NavigationAction.
        (webkit_navigation_action_get_navigation_type): Use the wrapped API::NavigationAction.
        (webkit_navigation_action_get_mouse_button): Ditto.
        (webkit_navigation_action_get_modifiers): Ditto.
        (webkit_navigation_action_get_request): Ditto.
        (webkit_navigation_action_is_user_gesture): Ditto.
        (webkit_navigation_action_is_redirect): Ditto.
        * UIProcess/API/glib/WebKitNavigationActionPrivate.h:
        (_WebKitNavigationAction::_WebKitNavigationAction):
        * UIProcess/API/glib/WebKitNavigationClient.cpp: Renamed from Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.cpp.
        (NavigationClient::NavigationClient):
        (attachNavigationClientToView):
        * UIProcess/API/glib/WebKitNavigationClient.h: Renamed from Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.h.
        * UIProcess/API/glib/WebKitNavigationPolicyDecision.cpp:
        (webkit_navigation_policy_decision_get_frame_name): Add FIXME.
        (webkitNavigationPolicyDecisionCreate): Get the target frame name from the API::NavigationAction.
        * UIProcess/API/glib/WebKitNavigationPolicyDecisionPrivate.h:
        * UIProcess/API/glib/WebKitPolicyClient.cpp: Removed.
        * UIProcess/API/glib/WebKitPolicyClient.h: Removed.
        * UIProcess/API/glib/WebKitPolicyDecision.cpp:
        (webkitPolicyDecisionSetListener): Remove the madePolicyDecision boolean member, we can null-check the listener instead.
        (webkit_policy_decision_use): Ensure listener is nullptr after being invoked to prevent the decision from being made
        more than once.
        (webkit_policy_decision_ignore): Ditto.
        (webkit_policy_decision_download): Ditto.
        * UIProcess/API/glib/WebKitPolicyDecisionPrivate.h:
        * UIProcess/API/glib/WebKitResponsePolicyDecision.cpp:
        (webkit_response_policy_decision_get_request): Use the wrapped API::NavigationResponse.
        (webkit_response_policy_decision_get_response): Ditto.
        (webkit_response_policy_decision_is_mime_type_supported): Ditto.
        (webkitResponsePolicyDecisionCreate): Wrap the given API::NavigationResponse.
        * UIProcess/API/glib/WebKitResponsePolicyDecisionPrivate.h:
        * UIProcess/API/glib/WebKitUIClient.cpp:
        (UIClient::createNewPage): Create the WebKitNavigationAction from a new API::NavigationAction.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewConstructed): Attach navigation client.
        * UIProcess/Cocoa/NavigationState.h: Update API::NavigationResponse parameter of decidePolicyForNavigationResponse.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame): Notify the navigation client if it's used.
        (WebKit::WebPageProxy::didRunInsecureContentForFrame): Ditto.
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction): Use the new API::NavigationAction constructor to pass
        the target frame name, instead of a null target frame info.
        (WebKit::WebPageProxy::decidePolicyForResponse): Move the API::NavigationResponse.

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

        Unreviewed, rolling out r224661.

        Broke build on several internal Mac/iOS bots

        Reverted changeset:

        "Ignore HSTS for partitioned, cross-origin subresource
        requests"
        https://bugs.webkit.org/show_bug.cgi?id=178993
        https://trac.webkit.org/changeset/224661

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

        ServiceWorkerRegistration objects may get recycled for different SWServerRegistration objects
        https://bugs.webkit.org/show_bug.cgi?id=179517

        Reviewed by Brady Eidson.

        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::updateRegistrationStateInClient):
        (WebKit::WebSWServerConnection::fireUpdateFoundEvent):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-11-09  John Wilander  <wilander@apple.com>

        Ignore HSTS for partitioned, cross-origin subresource requests
        https://bugs.webkit.org/show_bug.cgi?id=178993
        <rdar://problem/34962462>

        Reviewed by Brent Fulgham.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (downgradeRequest):
            Convenience function to downgrade a request if
            CFNetwork as already upgraded it during
            canonicalization. This allows the rest of 
            WebKit's processing to function, such as UIR
            and mixed content blocking.
        (updateIgnoreStrictTransportSecuritySettingIfNecessary):
            Adds and removed the ignore request accordingly.
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.

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

        Implement real post 'install' event steps of the Install algorithm (steps 14+)
        https://bugs.webkit.org/show_bug.cgi?id=179401

        Reviewed by Brady Eidson.

        Implement step 14+ of Install algorithm, as per:
        - https://w3c.github.io/ServiceWorker/#installation-algorithm

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::didResolveRegistrationPromise):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-11-09  Megan Gardner  <megan_gardner@apple.com>

        Clean out unused selection items from UIKitSPI
        https://bugs.webkit.org/show_bug.cgi?id=179459

        Reviewed by Tim Horton.

        Many of these should have been removed from previous commits, but they were missed.
        None of these enums or methods are being used by WebKit anymore, and removing them will keep things
        clean and allow UIKit to remove things that are not used at all by anyone anymore.

        * Platform/spi/ios/UIKitSPI.h:

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

        Use enum classes within FileSystem
        https://bugs.webkit.org/show_bug.cgi?id=175172

        Reviewed by Darin Adler.

        * NetworkProcess/Downloads/BlobDownloadClient.cpp:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        * NetworkProcess/capture/NetworkCaptureRecorder.cpp:
        * Shared/WebMemorySampler.cpp:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:

2017-11-09  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerClientFetch should create not null ResourceError
        https://bugs.webkit.org/show_bug.cgi?id=179485

        Reviewed by Darin Adler.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):

2017-11-09  Andy Estes  <aestes@apple.com>

        [iOS] Adopt UIPreviewDataAttachmentListIsContentManaged
        https://bugs.webkit.org/show_bug.cgi?id=179458
        <rdar://problem/35034691>

        Reviewed by Dan Bernstein.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):

2017-11-08  Joseph Pecoraro  <pecoraro@apple.com>

        Include a more complete block signature in public headers to avoid potential -Wstrict-prototypes warnings
        https://bugs.webkit.org/show_bug.cgi?id=179466

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        (-[WKHTTPCookieStore setCookie:completionHandler:]):
        (-[WKHTTPCookieStore deleteCookie:completionHandler:]):

2017-11-08  Jeremy Jones  <jeremyj@apple.com>

        Make WKFullScreenWidnowController more robust against modification by the embedding app.
        https://bugs.webkit.org/show_bug.cgi?id=179413
        rdar://problem/35408061

        Reviewed by Darin Adler.

        Present fullscreen UViewController in a separate UIWindow to prevent interaction with the embedding app's
        UIViewController hierarchy.

        Immediately tear down the fullscreen interface if the embedding app removes the WKWebView from the fullscreen window.
        This prevents the fullscreen interface from getting into an invalid state.

        Preserve scrollView.zoomScale because it is not effectively preserved by the more indirect _viewScale.

        Use a custom root view controller to allow hiding of the status bar.

        Remove the no-longer-necessary dispatch_after calls during enter and exit fullscreen.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView removeFromSuperview]):
        * UIProcess/ios/WKFullScreenWindowControllerIOS.h:
        * UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
        (WebKit::WKWebViewState::applyTo):
        (WebKit::WKWebViewState::store):
        (-[_WKFullScreenViewController loadView]):
        (-[_WKFullscreenRootViewController prefersStatusBarHidden]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController completedExitFullScreen]):
        (-[WKFullScreenWindowController exitFullscreenImmediately]):
        (-[WKFullScreenWindowController close]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[_WKFullScreenViewController viewDidDisappear:]): Deleted.

2017-11-08  Jeremy Jones  <jeremyj@apple.com>

        HTMLMediaElement should not use element fullscreen on iOS
        https://bugs.webkit.org/show_bug.cgi?id=179418
        rdar://problem/35409277

        Reviewed by Eric Carlson.

        Add ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN to determine if HTMLMediaElement should use element full screen or not.

        * Configurations/FeatureDefines.xcconfig:

2017-11-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement delegate hooks for attachment element insertion and removal
        https://bugs.webkit.org/show_bug.cgi?id=179016
        <rdar://problem/35250890>

        Reviewed by Tim Horton.

        See WebCore/ChangeLog for more details.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didInsertAttachment:]):
        (-[WKWebView _didRemoveAttachment:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::didInsertAttachment):
        (WebKit::PageClientImplCocoa::didRemoveAttachment):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::didInsertAttachment):
        (WebKit::PageClient::didRemoveAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didInsertAttachment):
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::didInsertAttachment):
        (WebKit::WebEditorClient::didRemoveAttachment):
        * WebProcess/WebCoreSupport/WebEditorClient.h:

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

        REGRESSION(r223773): [GTK] WebKitWebInspector bring-to-front signal is emitted right after open-window
        https://bugs.webkit.org/show_bug.cgi?id=179365

        Reviewed by Michael Catanzaro.

        In the GTK+ API, open-window already implies presenting the window to bring it to the front, so it's not
        expected that bring-to-front is emitted on open. This is happening since r223773 that moved common code from
        platform specific inspector files to the main file, but in the case of open the mac implementation was not
        exactly the same as the GTK+ one. This broke /webkit2/WebKitWebInspector/default and
        /webkit2/WebKitWebInspector/manual-attach-detach.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::open): Set m_isOpening for the scope of the function.
        * UIProcess/WebInspectorProxy.h: Add m_isOpening.
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformBringToFront): Return early if m_isOpening is true.

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

        REGRESSION(r224179): [GTK] Several WebViewEditor tests are failing since r224179
        https://bugs.webkit.org/show_bug.cgi?id=179366

        Reviewed by Michael Catanzaro.

        In r224179, webkit_web_view_can_execute_editing_command() was optimized to use the sync path for commands
        supported by the WebViewEditorState, but the state requires a redraw to be up to date. We can't know if
        WebViewEditorState is in sync, when webkit_web_view_can_execute_editing_command() is called, so we always need
        to ask the web process.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_can_execute_editing_command):

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

        [GTK][WPE] Build inspector resources using copy-user-interface-resources.pl script
        https://bugs.webkit.org/show_bug.cgi?id=179317

        Reviewed by Michael Catanzaro.

        This is the script used by Apple and it has several advantages:

          - It allows to combine and minify most of the js and css files, which improves performance and binary size.
          - It removes the debug resources and assertions in production builds.
          - It allows to remove the test resources in production builds.

        The patch also moves the common cmake code to generate the resources to a new file InspectorGResources.cmake included
        by GTK+ and WPE platform cmake files.

        * InspectorGResources.cmake: Added.
        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2017-11-07  Jeremy Jones  <jeremyj@apple.com>

        Add downcast support for FullscreenClient.
        https://bugs.webkit.org/show_bug.cgi?id=178824

        Reviewed by Simon Fraser.

        Add SPECIALIZE_TYPE_TRAITS macros for API::FullscreenClient and WebKit::Fullscreen client so 
        downcasts can be done safely.

        * UIProcess/API/APIFullscreenClient.h:
        (API::FullscreenClient::isType const):
        * UIProcess/API/C/mac/WKPagePrivateMac.mm:
        (WKPageSetFullscreenDelegate):
        (WKPageGetFullscreenDelegate):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setFullscreenDelegate:]):
        (-[WKWebView _fullscreenDelegate]):
        * UIProcess/Cocoa/FullscreenClient.h:
        (isType):
        * UIProcess/Cocoa/FullscreenClient.mm:

2017-11-07  Brady Eidson  <beidson@apple.com>

        Implement "UpdateWorkerState" and use it
        https://bugs.webkit.org/show_bug.cgi?id=179318

        Reviewed by Chris Dumez.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.h:
 
       * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::updateWorkerStateInClient):
        (WebKit::WebSWServerConnection::installServiceWorkerContext):
        (WebKit::WebSWServerConnection::setContextConnection):
        (WebKit::WebSWServerConnection::updateServiceWorkerContext): Deleted.
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:

        * WebProcess/Storage/WebSWClientConnection.messages.in:

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        (WebKit::WebSWContextManagerConnection::updateServiceWorker): Deleted.
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

        Unreviewed, rolling out r224512 and r224521.
        https://bugs.webkit.org/show_bug.cgi?id=179388

        An API test added with this change is failing an assertion on
        the bots. (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "[Attachment Support] Implement delegate hooks for attachment
        element insertion and removal"
        https://bugs.webkit.org/show_bug.cgi?id=179016
        https://trac.webkit.org/changeset/224512

        "Remove stray logging from a newly added API test"
        https://trac.webkit.org/changeset/224521

2017-11-07  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Add support for "install" event
        https://bugs.webkit.org/show_bug.cgi?id=179338

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::firePostInstallEvents):
        (WebKit::WebSWServerConnection::fireInstallEvent):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFinishServiceWorkerInstall):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::fireInstallEvent):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-07  Youenn Fablet  <youenn@apple.com>

        Support the case of fetch events that are not responded
        https://bugs.webkit.org/show_bug.cgi?id=179336

        Reviewed by Chris Dumez.

        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didNotHandle):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

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

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

        Reviewed by Andy Estes.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResource):
        (WebKit::WebLoaderStrategy::schedulePluginStreamLoad):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::Stream::start):

2017-11-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement delegate hooks for attachment element insertion and removal
        https://bugs.webkit.org/show_bug.cgi?id=179016
        <rdar://problem/35250890>

        Reviewed by Tim Horton.

        Adds boilerplate plumbing to WebEditorClient, WebPage, and the usual machinery in the UI process to notify
        WebKit2 clients when attachment elements have been inserted or removed from the document. See the WebCore
        ChangeLog for more details about the implementation, or the Tools ChangeLog for more information about new API
        tests.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didInsertAttachment:]):
        (-[WKWebView _didRemoveAttachment:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::didInsertAttachment):
        (WebKit::PageClientImplCocoa::didRemoveAttachment):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::didInsertAttachment):
        (WebKit::PageClient::didRemoveAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didInsertAttachment):
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::didInsertAttachment):
        (WebKit::WebEditorClient::didRemoveAttachment):
        * WebProcess/WebCoreSupport/WebEditorClient.h:

2017-11-06  Jeremy Jones  <jeremyj@apple.com>

        iOS element fullscreen should use a UIGestureRecognizer to detect user interaction.
        https://bugs.webkit.org/show_bug.cgi?id=179029
        rdar://problem/35307882

        Reviewed by Simon Fraser.

        Replace _WKTapDelegatingView with a UILongPressGestureRecognizer. When set with a duration of 0, it effectively
        recognizes UITouchBegin events.

        * UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
        (-[_WKFullScreenViewController loadView]):
        (-[_WKFullScreenViewController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[_WKTapDelegatingView setTarget:action:]): Deleted.
        (-[_WKTapDelegatingView hitTest:withEvent:]): Deleted.

2017-11-06  Chris Dumez  <cdumez@apple.com>

        [Service Workers] Add proper implementation for 'updatefound' event
        https://bugs.webkit.org/show_bug.cgi?id=179302

        Reviewed by Brady Eidson.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::fireUpdateFoundEvent):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

        Use enum classes within FileSystem
        https://bugs.webkit.org/show_bug.cgi?id=175172

        Reviewed by Myles C. Maxfield.

        * NetworkProcess/Downloads/BlobDownloadClient.cpp:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        * NetworkProcess/capture/NetworkCaptureRecorder.cpp:
        * Shared/WebMemorySampler.cpp:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:

2017-11-06  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Properly use SYSTEM_INCLUDE_DIRECTORIES for WebKit build target
        https://bugs.webkit.org/show_bug.cgi?id=179097

        Reviewed by Žan Doberšek.

        * PlatformWPE.cmake:

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

        JIT call inline caches should cache calls to objects with getCallData/getConstructData traps
        https://bugs.webkit.org/show_bug.cgi?id=144458

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        (WebKit::JSNPMethod::JSNPMethod):
        (WebKit::JSNPMethod::getCallData): Deleted.
        * WebProcess/Plugins/Netscape/JSNPMethod.h:
        (WebKit::JSNPMethod::createStructure):

2017-11-04  Chris Dumez  <cdumez@apple.com>

        REGRESSION(r223718): Leaking WebProcessPool after reconfiguration
        https://bugs.webkit.org/show_bug.cgi?id=179123
        <rdar://problem/35294685>

        Reviewed by Geoff Garen.

        Make sure we destroy the ServiceWorker WebProcess once all other WebProcesses
        go away at there is no use keeping it running at this point. Also, this prevents
        leaking the WebProcessPool since the WebProcessProxy holds a strong reference
        to the WebProcessPool.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::disconnectProcess):

2017-11-01  Darin Adler  <darin@apple.com>

        Simplify event dispatch code and make it a bit more consistent
        https://bugs.webkit.org/show_bug.cgi?id=178991

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
        (webkit_dom_event_get_src_element): Call target instead of srcElement.

2017-11-04  Aishwarya Nirmal  <anirmal@apple.com>

        [Touch Bar Web API] Add support for menuitem tag
        https://bugs.webkit.org/show_bug.cgi?id=179020

        Reviewed by Ryosuke Niwa.

        Adds in the MenuItemElementEnabled flag so that the menu item element is a runtime-
        enabled feature. It has a default value of false.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetMenuItemElementEnabled):
        (WKPreferencesGetMenuItemElementEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

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

        Unreviewed, rolling out r224438.

        Has caused assertions on the bots

        Reverted changeset:

        "REGRESSION(r223718): Leaking WebProcessPool after
        reconfiguration"
        https://bugs.webkit.org/show_bug.cgi?id=179123
        https://trac.webkit.org/changeset/224438

2017-11-03  Youenn Fablet  <youenn@apple.com>

        Requests handled by Service Worker should not go through preflighting
        https://bugs.webkit.org/show_bug.cgi?id=179250

        Reviewed by Alex Christensen.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::shouldHandleFetch):

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

        REGRESSION(r223718): Leaking WebProcessPool after reconfiguration
        https://bugs.webkit.org/show_bug.cgi?id=179123
        <rdar://problem/35294685>

        Reviewed by Geoffrey Garen.

        Make sure we destroy the ServiceWorker WebProcess once all other WebProcesses
        go away at there is no use keeping it running at this point. Also, this prevents
        leaking the WebProcessPool since the WebProcessProxy holds a strong reference
        to the WebProcessPool.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::disconnectProcess):

2017-11-03  Youenn Fablet  <youenn@apple.com>

        Implement Service Worker Matching Registration algorithm
        https://bugs.webkit.org/show_bug.cgi?id=178882

        Reviewed by Chris Dumez.

        Added IPC plumbery for matchRegistration request and response.
        Added some limited clearing of workers and registrations.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::matchRegistration):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::didMatchRegistration):
        (WebKit::WebSWClientConnection::matchRegistration):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerProvider.h:

2017-11-03  Jeremy Jones  <jeremyj@apple.com>

        Element fullscreen should use FloatRects instead of IntRects in beganEnterFullScreenWithInitialFrame
        https://bugs.webkit.org/show_bug.cgi?id=179033
        rdar://problem/35309279
        
        Reviewed by Darin Adler.

        Screen coordinates are floats, so use NSRect instead of IntRect on Mac.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):

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

        Use a single identifier type to identify Service Workers
        https://bugs.webkit.org/show_bug.cgi?id=179192

        Reviewed by Brady Eidson.

        Use a single identifier type to identify Service Workers. We had both a String
        identifier and a uint64_t identifier for each service worker. We now consistently
        use a ServiceWorkerIdentifier which is a strongly typed identifier backed by a
        uint64_t.

        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers):
        (forward_declarations_and_headers.templates):
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::serviceWorkerContextFailedToStart):
        (WebKit::StorageProcess::serviceWorkerContextStarted):
        (WebKit::StorageProcess::postMessageToServiceWorkerClient):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::updateServiceWorker):
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::startFetch):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-03  Antti Koivisto  <antti@apple.com>

        Enable display:contents by default as experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=179239
        <rdar://problem/35334612>

        Reviewed by Darin Adler.

        We pass most of the WPT tests. What remains is mostly flexbox related edge cases.

        * Shared/WebPreferences.yaml:

2017-11-03  Frederic Wang  <fwang@igalia.com>

        Use WK_IOS_TBA instead of WK_MAC_TBA to indicate availability of private functions on iOS
        https://bugs.webkit.org/show_bug.cgi?id=179238

        Reviewed by Darin Adler.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

2017-11-02  Maciej Stachowiak  <mjs@apple.com>

        Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
        https://bugs.webkit.org/show_bug.cgi?id=178333

        Reviewed by Darin Adler.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::pluginDidReceiveUserInteraction): loadedMIMEType --> serviceType
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn): ditto

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

        SW: Implement "Update Registration State" algorithm (unused for now)
        https://bugs.webkit.org/show_bug.cgi?id=179186

        Reviewed by Chris Dumez.

        * Scripts/webkit/messages.py:
        (headers_for_type):

        * Shared/WebCoreArgumentCoders.h:

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::updateRegistrationStateInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

        Use CompletionHandlers for redirects
        https://bugs.webkit.org/show_bug.cgi?id=179163

        Reviewed by Tim Horton.

        * NetworkProcess/Downloads/BlobDownloadClient.cpp:
        (WebKit::BlobDownloadClient::willSendRequestAsync):
        * NetworkProcess/Downloads/BlobDownloadClient.h:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::~NetworkLoad):
        (WebKit::NetworkLoad::continueWillSendRequest):
        (WebKit::NetworkLoad::willSendRequestAsync):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
        * UIProcess/API/APIDownloadClient.h:
        (API::DownloadClient::willSendRequest):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetDownloadClient):
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::willSendRequest):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::Stream::~Stream):
        (WebKit::PluginView::Stream::continueLoad):
        (WebKit::PluginView::Stream::willSendRequest):
        * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

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

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

        Reviewed by Darin Adler.

        * NetworkProcess/Downloads/BlobDownloadClient.cpp:
        * NetworkProcess/Downloads/BlobDownloadClient.h:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        * NetworkProcess/cache/NetworkCacheData.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        * NetworkProcess/capture/NetworkCaptureManager.h:
        * NetworkProcess/capture/NetworkCaptureRecorder.cpp:
        * NetworkProcess/capture/NetworkCaptureResource.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        * Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp:
        * Shared/Plugins/unix/PluginSearchPath.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMemorySampler.h:
        * Shared/gtk/ProcessExecutablePathGtk.cpp:
        * Shared/ios/ChildProcessIOS.mm:
        * Shared/mac/ChildProcessMac.mm:
        * Shared/mac/SandboxExtensionMac.mm:
        * Shared/wpe/ProcessExecutablePathWPE.cpp:
        * StorageProcess/StorageProcess.cpp:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        * UIProcess/API/glib/IconDatabase.cpp:
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        * UIProcess/Automation/WebAutomationSession.cpp:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        * UIProcess/mac/WebPageProxyMac.mm:
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp:
        * WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:

2017-11-02  Joseph Pecoraro  <pecoraro@apple.com>

        Make ServiceWorker a Remote Inspector debuggable target
        https://bugs.webkit.org/show_bug.cgi?id=179043
        <rdar://problem/34126008>

        Reviewed by Brian Burg.

        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
        (debuggableTypeString):
        Provide a way to start a Remote Web Inspector frontend for a ServiceWorker target type.

2017-11-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r224353.

        Breaks internal builds.

        Reverted changeset:

        "Ignore HSTS for partitioned, cross-origin subresource
        requests"
        https://bugs.webkit.org/show_bug.cgi?id=178993
        https://trac.webkit.org/changeset/224353

2017-11-02  John Wilander  <wilander@apple.com>

        Ignore HSTS for partitioned, cross-origin subresource requests
        https://bugs.webkit.org/show_bug.cgi?id=178993
        <rdar://problem/34962462>

        Reviewed by Brent Fulgham and Alex Christensen.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (downgradeRequest):
            Convenience function to downgrade a request if
            CFNetwork as already upgraded it during
            canonicalization. This allows the rest of 
            WebKit's processing to function, such as UIR
            and mixed content blocking.
        (updateIgnoreStrictTransportSecuritySettingIfNecessary):
            Adds and removed the ignore request accordingly.
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
            Now asks CFNetwork to ignore HSTS on resource loads we
            partition cookies for.

2017-11-02  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add IPC files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=177919

        Reviewed by Alex Christensen.

        * Platform/IPC/Attachment.cpp:
        * Platform/IPC/Attachment.h:
        (IPC::Attachment::Attachment):
        (IPC::Attachment::handle):
        * Platform/IPC/Connection.h:
        (IPC::Connection::identifierIsNull):
        (IPC::Connection::sendWithReply):
        * Platform/IPC/win/AttachmentWin.cpp: Added.
        (IPC::Attachment::encode const):
        (IPC::getDuplicatedHandle):
        (IPC::Attachment::decode):
        * Platform/IPC/win/ConnectionWin.cpp: Added.
        (IPC::Connection::createServerAndClientIdentifiers):
        (IPC::Connection::platformInitialize):
        (IPC::Connection::platformInvalidate):
        (IPC::Connection::readEventHandler):
        (IPC::Connection::writeEventHandler):
        (IPC::Connection::open):
        (IPC::Connection::platformCanSendOutgoingMessages const):
        (IPC::Connection::sendOutgoingMessage):
        (IPC::Connection::willSendSyncMessage):
        (IPC::Connection::didReceiveSyncReply):
        * PlatformWin.cmake:

2017-11-02  Megan Gardner  <megan_gardner@apple.com>

        Early out selection update when data is not present
        https://bugs.webkit.org/show_bug.cgi?id=179084

        Reviewed by Ryosuke Niwa.

        We should early out of a selection update when we do not have the data that is necessary to make that
        update. This mostly helps avoid debug asserts, but will be helpful with the selection changes that are
        ongoing.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _updateChangedSelection:]):

2017-11-02  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] audioTrack.label is always empty on macOS
        https://bugs.webkit.org/show_bug.cgi?id=179175
        <rdar://problem/35315438>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource): Pass settings.label to Source constructor.

2017-11-02  Frederic Wang  <fwang@igalia.com>

        Add references to bug 179167 in FIXME comments
        https://bugs.webkit.org/show_bug.cgi?id=179168

        Reviewed by Daniel Bates.

        * Configurations/FeatureDefines.xcconfig:

2017-11-01  Jeremy Jones  <jeremyj@apple.com>

        Implement WKFullscreenWindowController for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=178924
        rdar://problem/34697120

        Reviewed by Simon Fraser.

        Plumb relevant calls through WKWebView and PageClientImplIOS.

        This forms the base implementation for element fullscreen. This will animate an element into fullscreen and back to inline.
        It does this by replacing the WKWebView with a placeholder image and presenting the WKWebView with a fullscreen view controller.
        This also attempts to preserve UI state of the WKWebView when it is placed back inline.

        To enable _WKFullscreenDelegate for iOS, this adds an iOS version of the delegate methods that passes WKWebView instead of NSView.
        The iOS version of these functions are renamed to be more specific and disambiguate them from the video fullscreen delegate methods.

        This also adds an image asset for the done button.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView hasFullScreenWindowController]):
        (-[WKWebView fullScreenWindowController]):
        (-[WKWebView closeFullScreenWindowController]):
        (-[WKWebView fullScreenPlaceholderView]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
        * UIProcess/Cocoa/FullscreenClient.h:
        * UIProcess/Cocoa/FullscreenClient.mm:
        (WebKit::FullscreenClient::FullscreenClient):
        (WebKit::FullscreenClient::setDelegate):
        (WebKit::FullscreenClient::willEnterFullscreen):
        (WebKit::FullscreenClient::didEnterFullscreen):
        (WebKit::FullscreenClient::willExitFullscreen):
        (WebKit::FullscreenClient::didExitFullscreen):
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::closeFullScreenManager):
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        (WebKit::PageClientImpl::beganEnterFullScreen):
        (WebKit::PageClientImpl::beganExitFullScreen):
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKFullScreenWindowControllerIOS.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKFullscreenDelegate.h.
        * UIProcess/ios/WKFullScreenWindowControllerIOS.mm: Added.
        (WebKit::replaceViewWithView):
        (WebKit::WKWebViewState::applyTo):
        (WebKit::WKWebViewState::store):
        (-[_WKTapDelgatingView setTarget:action:]):
        (-[_WKTapDelgatingView hitTest:withEvent:]):
        (-[_WKFullScreenViewController dealloc]):
        (-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
        (+[_WKFullScreenViewController configureView:withBackgroundFillOfColor:opacity:filter:]):
        (-[_WKFullScreenViewController _updateTransparencyOfVisualEffectView:]):
        (-[_WKFullScreenViewController createVisualEffectViewWithFrame:]):
        (-[_WKFullScreenViewController loadView]):
        (-[_WKFullScreenViewController viewWillAppear:]):
        (-[_WKFullScreenViewController viewDidDisappear:]):
        (-[_WKFullScreenViewController cancelAction:]):
        (-[_WKFullScreenViewController hideCancelButton]):
        (-[_WKFullScreenViewController showCancelButton]):
        (-[_WKFullScreenViewController setTarget:action:]):
        (-[_WKFullScreenViewController prefersStatusBarHidden]):
        (-[WKFullscreenAnimationController transitionDuration:]):
        (-[WKFullscreenAnimationController animateTransition:]):
        (-[WKFullscreenAnimationController animationEnded:]):
        (-[WKFullScreenWindowController initWithWebView:page:]):
        (-[WKFullScreenWindowController dealloc]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController webViewPlaceholder]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController completedEnterFullScreen]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController requestExitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController completedExitFullScreen]):
        (-[WKFullScreenWindowController close]):
        (-[WKFullScreenWindowController _manager]):
        (-[WKFullScreenWindowController animationControllerForPresentedController:presentingController:sourceController:]):
        (-[WKFullScreenWindowController animationControllerForDismissedController:]):
        * WebKit.xcassets/Contents.json: Added.
        * WebKit.xcassets/Done.imageset/Contents.json: Added.
        * WebKit.xcassets/Done.imageset/Done.pdf: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):

2017-11-01  Daniel Bates  <dabates@apple.com>

        XMLHttpRequest should not sniff content encoding
        https://bugs.webkit.org/show_bug.cgi?id=175597
        <rdar://problem/34912624>

        Reviewed by Alex Christensen.

        Fixes an issue where the body of an HTTP response with headers "Content-Type: application/octet-stream" and
        "Content-Encoding: gzip" associated with an XHR request to a .gz file would not be automatically gzipped
        decompressed. Specifically, such a response would be treated analogous to a response with headers
        "Content-Type: application/gzip" and "Content-Encoding: identity". This behavior does not conform to the
        behavior of the Content-Encoding header as defined in the HTTP 1.1 and later specs. Moreover this behavior
        breaks the Epic Zen Garden demo: <https://s3.amazonaws.com/mozilla-games/ZenGarden/EpicZenGarden.html>.

        On macOS 10.13.2 opt out of content encoding sniffing when making an XHR request. We likely can
        selectively opt out of content encoding sniffing for other network requests. This will be done
        in subsequent commits to make it straightforward to identify site breakage (if any).

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::start): Enable content encoding sniff to match existing behavior.
        (WebKit::Download::startWithHandle): Ditto.
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create): Pass through the content encoding sniffing policy.
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad): Ditto.
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const): Encode content encoding sniffing policy.
        (WebKit::NetworkResourceLoadParameters::decode): Decode content encoding sniffing policy.
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): Enable content encoding sniff to match existing
        behavior. We should look to disable content encoding sniffing in a subsequent change.
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded): Added helper function
        to apply sniffing policies and bind request to interface, if applicable.
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Modified to take the content encoding sniffing
        policy. Calls applySniffingPoliciesAndBindRequestToInferfaceIfNeeded() to apply this policy. Also use
        convenience function URL::isLocalFile() to determine if the URL is a file URL.
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Pass through the content encoding sniffing policy.
        * NetworkProcess/soup/NetworkDataTaskSoup.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): Pass through the content encoding sniffing policy.
        (WebKit::WebLoaderStrategy::loadResourceSynchronously): Enable content encoding sniff to match existing
        behavior.

2017-11-01  Brady Eidson  <beidson@apple.com>

        Plumbing for handling SW scripts failing to evaluate
        https://bugs.webkit.org/show_bug.cgi?id=178926

        Reviewed by Chris Dumez.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::updateServiceWorkerContext):
        (WebKit::WebSWServerConnection::setContextConnection):
        (WebKit::WebSWServerConnection::startServiceWorkerContext): Deleted.
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::updateServiceWorker):
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::startServiceWorker): Deleted.
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-11-01  Frederic Wang  <fwang@igalia.com>

        Make iOS Find UI reveal matches in scrollable elements
        https://bugs.webkit.org/show_bug.cgi?id=178789

        Reviewed by Tim Horton.

        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::didFindString): Reveal selection up to the main frame. The main frame
        is handled by the SmartMagnificationController.

2017-11-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r224192): [WPE] Fix WebEventFactory::createWebWheelEvent
        https://bugs.webkit.org/show_bug.cgi?id=179098

        Reviewed by Sam Weinig.

        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebWheelEvent):

2017-10-31  Tim Horton  <timothy_horton@apple.com>

        Clean up some drag and drop feature flags
        https://bugs.webkit.org/show_bug.cgi?id=179082

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        Followup to r224238: API::Attachment should generate a _WKAttachment ObjC wrapper
        https://bugs.webkit.org/show_bug.cgi?id=179080

        Reviewed by Tim Horton.

        Fixes a failing API test. The new Attachment object type added in r224238 was not actually being handled in
        Object::newObject, so a plain WKObject Objective C wrapper was being created; fix this by allocating a new
        _WKAttachment object for Type::Attachment.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):

2017-10-31  Tim Horton  <timothy_horton@apple.com>

        Fix up some content filtering feature flags
        https://bugs.webkit.org/show_bug.cgi?id=179079

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-10-31  Youenn Fablet  <youenn@apple.com>

        rwt should allow service worker to load localhost HTTPS resources with any certificate
        https://bugs.webkit.org/show_bug.cgi?id=179018

        Reviewed by Chris Dumez.

        Allowing ServiceWorkerProcessProxy to handle authentication challenge.
        Temporarily adding a boolean flag through WebProcessPool to lower the SSL certificate verifications for service workers.
        This allows reducing flakiness in our layout tests for rwt.
        Future work should be done to expose a correct API for the application level to handle authentication challenges properly.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
        (WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebProcessPool.h:

2017-10-31  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: UIProcess ASSERT in ~RemoteWebInspectorProxy when InspectorProcess crashes
        https://bugs.webkit.org/show_bug.cgi?id=179044

        Reviewed by Alex Christensen.

        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::frontendDidClose):
        Add a protector to keep the proxy alive for the duration of this method.

2017-10-31  Youenn Fablet  <youenn@apple.com>

        Crash in:  com.apple.WebKit: WebKit::CacheStorage::Caches::initializeSize(WTF::Function<void (std::optional<WebCore::DOMCacheEngine::Error>&&)>&&) + 30 (CacheStorageEngineCaches.cpp:163)
        https://bugs.webkit.org/show_bug.cgi?id=179037

        Reviewed by Chris Dumez.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initializeSize): the storage backend may be cleared when clearing caches by the UI Process.
        Returning early in that case. A web application will typically fail to open a cache in this case.
        On retry, the cache should be opened.

2017-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Implement WKWebView SPI for inserting attachment elements
        https://bugs.webkit.org/show_bug.cgi?id=179013
        <rdar://problem/35249668>

        Reviewed by Tim Horton.

        Adds native SPI to insert attachment elements given a filename, an optional MIME type, and a data blob. See
        change-by-change comments below for more detail. Covered by a new API test.

        * PlatformMac.cmake:
        * Shared/API/APIObject.h:
        * Shared/API/Cocoa/WebKitPrivate.h:
        * UIProcess/API/APIAttachment.cpp: Copied from Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h.
        (API::Attachment::create):
        (API::Attachment::Attachment):
        (API::Attachment::~Attachment):

        Introduce API::Attachment, which represents a platform-agnostic Attachment.

        * UIProcess/API/APIAttachment.h: Copied from Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):

        Adds support for inserting a new attachment element. Calls out to WebPageProxy to insert the attachment from the
        given data blob, and creates a new API-object-backed _WKAttachment.

        (-[WKWebView _executeEditCommand:argument:completion:]):

        Support passing in a nil completion block.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKAttachment.h: Copied from Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h.
        * UIProcess/API/Cocoa/_WKAttachment.mm: Copied from Source/WebCore/html/HTMLAttachmentElement.h.

        Introduces _WKAttachment, an Objective C wrapper around the API::Attachment.

        (-[_WKAttachment _apiObject]):
        (-[_WKAttachment isEqual:]):
        (-[_WKAttachment uniqueIdentifier]):
        (-[_WKAttachment hash]):

        Add _WKAttachment, a WebKit SPI object that wraps an attachment element unique identifier. Also, allow
        _WKAttachment to be used as a hashable NSDictionary key.

        (-[_WKAttachment description]):
        * UIProcess/API/Cocoa/_WKAttachmentInternal.h: Copied from Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h.
        (API::wrapper):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::insertAttachment):

        Implement IPC support for inserting an attachment.

        * UIProcess/WebPageProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::insertAttachment):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        Fix custom header field setting with reloads and asynchronous navigation action policy decisions
        https://bugs.webkit.org/show_bug.cgi?id=179064

        Reviewed by Tim Horton.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):

2017-10-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.1 release.

        * gtk/NEWS: Add release notes for 2.19.1.

2017-10-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ make distcheck.

        Include WebCore/TextEncodingRegistry.h to ensure the forwarding header is generated.

        * UIProcess/API/glib/WebKitSettings.cpp:

2017-10-31  Commit Queue  <commit-queue@webkit.org>

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

        It broke GTK+ make distcheck (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK][WPE] generate-forwarding-headers.pl should also scan
        derived sources in WebKit framework"
        https://bugs.webkit.org/show_bug.cgi?id=178579
        https://trac.webkit.org/changeset/223884

2017-10-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        Use LazyNeverDestroyed instead of DEFINE_GLOBAL for XMLNames, HTMLNames, MathMLNames and SVGNames
        https://bugs.webkit.org/show_bug.cgi?id=175118

        Reviewed by Alex Christensen.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPrivate.cpp:
        (WebKit::wrap):

2017-10-27  Megan Gardner  <megan_gardner@apple.com>

        Correctly determine affinity when inserting text via Keyboard Suggestions
        https://bugs.webkit.org/show_bug.cgi?id=178969

        Reviewed by Ryosuke Niwa.

        Use the logic of VisiblePosition to correctly determine cursor affinity. We were
        defaulting to upstream, but that in incorrect and resulted in hitting asserts that
        we should not. This should give us the correct affinity in all cases.

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

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

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

        MotionMark regression (Requested by shallawa on #webkit).

        Reverted changeset:

        "When navigating back to a page, compositing layers may not
        use accelerated drawing"
        https://bugs.webkit.org/show_bug.cgi?id=178749
        https://trac.webkit.org/changeset/224078

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

        [Setting] Only expose experimental features that are compiled in
        https://bugs.webkit.org/show_bug.cgi?id=179023

        Reviewed by Tim Horton.

        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        
            Update template to conditionally expose experimental features based on their
            'condition' option in WebPreferences.yaml

2017-10-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Fix build warnings
        https://bugs.webkit.org/show_bug.cgi?id=178899

        Reviewed by Carlos Alberto Lopez Perez.

        * PlatformWPE.cmake:

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

        [Settings] Replace macro driven experimental features code with generated code
        https://bugs.webkit.org/show_bug.cgi?id=178994

        Reviewed by Simon Fraser.

        As a first step toward allowing experimental features to vary based on compile
        time flags, replace the macro driven implementation of the WebPreferences part
        of experimental features, with one generated from a template file.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Scripts/GeneratePreferences.rb:
        * WebKit.xcodeproj/project.pbxproj:

            Generate the new template.
        
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb: Added.
        * UIProcess/WebPreferences.cpp:
        (WebKit::createExperimentalFeaturesVector): Deleted.
        (WebKit::WebPreferences::experimentalFeatures): Deleted.
        (WebKit::WebPreferences::isEnabledForFeature const): Deleted.
        (WebKit::WebPreferences::setEnabledForFeature): Deleted.
        (WebKit::WebPreferences::enableAllExperimentalFeatures): Deleted.
        
            Replace macro implementation with template generated one.

2017-10-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Build more files under WebCore as unified sources and get rid of WebCorePlatformWPE build target
        https://bugs.webkit.org/show_bug.cgi?id=178964

        Reviewed by Carlos Alberto Lopez Perez.

        * PlatformWPE.cmake:

2017-10-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Expose availability of certain editing commands in WebKitEditorState
        https://bugs.webkit.org/show_bug.cgi?id=168219

        Reviewed by Ryosuke Niwa.

        Expose canCut, canCopy, canPaste, canUndo, and canRedo in EditorState::PostLayouData.

        Add corresponding new WPE/GTK API.

        Remove allowsCopy from WebKitTestResultData. It's unused, does not work correctly in all
        circumstances, and irritates Ryosuke.

        Also, remove a bunch of #ifs guarding post layout data, since it's now used on all ports.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::encode const):
        (WebKit::EditorState::decode):
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:
        (WebKit::EditorState::postLayoutData const const):
        * Shared/WebHitTestResultData.cpp:
        (WebKit::WebHitTestResultData::WebHitTestResultData):
        (WebKit::WebHitTestResultData::encode const):
        (WebKit::WebHitTestResultData::decode):
        * Shared/WebHitTestResultData.h:
        * UIProcess/API/APIHitTestResult.h:
        (API::HitTestResult::allowsCopy const): Deleted.
        * UIProcess/API/glib/WebKitEditorState.cpp:
        (webkitEditorStateChanged):
        (webkit_editor_state_is_cut_available):
        (webkit_editor_state_is_copy_available):
        (webkit_editor_state_is_paste_available):
        (webkit_editor_state_is_undo_available):
        (webkit_editor_state_is_redo_available):
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_can_execute_editing_command):
        * UIProcess/API/gtk/WebKitEditorState.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitEditorState.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performImmediateActionHitTestAtLocation):

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

        [Settings] Generate more of the WebKit preferences code
        https://bugs.webkit.org/show_bug.cgi?id=178945

        Reviewed by Chris Dumez.

        Generate WebPreferencesKeys.{h,cpp} and WebPreferencesStoreDefaultsMap.cpp

        * CMakeLists.txt:
        * DerivedSources.make:
        * WebKit.xcodeproj/project.pbxproj:
        * Scripts/GeneratePreferences.rb:
        
            Generate new files.
        
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        
            Update include.
        
        * Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb: Added.
        * Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb: Added.
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb: Added.

            Add template files for new generated files.

        * Shared/WebPreferencesDefaultValues.h: Copied from Source/WebKit/Shared/WebPreferencesDefinitionsBase.h.
        * Shared/WebPreferencesDefinitionsBase.h:
        
            Renamed WebPreferencesDefinitionsBase.h to WebPreferencesDefaultValues.h to better indicate what it is.
        
        * Shared/WebPreferencesKeys.cpp: Removed.
        * Shared/WebPreferencesKeys.h: Removed.
        
            Replaced with generated versions.

        * Shared/WebPreferencesStore.cpp:
        (WebKit::defaults): Deleted.
        * Shared/WebPreferencesStore.h:
        
            Replace macro driven defaults map with generated WebPreferencesStoreDefaultsMap.cpp.

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

        self.ExtendableEvent / Client / Clients / WindowClient do not exist in a Service Worker
        https://bugs.webkit.org/show_bug.cgi?id=178976

        Reviewed by Sam Weinig.

        Actually enable the Service Worker RuntimeEnabledFeature in the Service Worker
        WebProcess.

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::updatePreferences):

2017-10-28  Joseph Pecoraro  <pecoraro@apple.com>

        Make postprocess-framework-headers.sh a little easier to read
        https://bugs.webkit.org/show_bug.cgi?id=178971

        Reviewed by Sam Weinig.

        * mac/postprocess-framework-headers.sh:

2017-10-27  Daniel Bates  <dabates@apple.com>

        Attempt to fix the Apple El Capitan build following <https://trac.webkit.org/changeset/224134>
        (https://bugs.webkit.org/show_bug.cgi?id=178919)

        Move definition of NetworkLoad::isAllowedToAskUserForCredentials() outside of USE(NETWORK_SESSION)-guarded section.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::isAllowedToAskUserForCredentials const):

2017-10-27  Daniel Bates  <dabates@apple.com>

        Only allow non-mixed content protected subresources to ask for credentials
        https://bugs.webkit.org/show_bug.cgi?id=178919
        <rdar://problem/35015245>

        Reviewed by Alex Christensen.

        Only allow non-mixed content protected subresources to ask for credentials. It is not meaningful
        to allow protected mixed-content subresources to ask for credentials.

        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::PendingDownload): Initialize m_isAllowedToAskUserForCredentials based on
        the specified resource load parameters or NetworkLoad object.
        * NetworkProcess/Downloads/PendingDownload.h: Add override for NetworkLoadClient::isAllowedToAskUserForCredentials().
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::isAllowedToAskUserForCredentials const): Added.
        (WebKit::NetworkLoad::completeAuthenticationChallenge): Ask NetworkLoadClient whether the load is
        allowed to prompt for credentials.
        (WebKit::NetworkLoad::didReceiveAuthenticationChallenge): Ditto.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader): Initialize m_isAllowedToAskUserForCredentials
        based on the specified resource load parameters.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest): We do not support prompting for credentials
        for synchronous loads.
        (WebKit::NetworkResourceLoader::continueWillSendRequest): Modified to take an argument as to whether the
        load is allowed to ask the user for credentials and updates state.
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkResourceLoader.messages.in: Modified message ContinueWillSendRequest to take a
        boolean as to whether the load is allowed to ask the user for credentials.
        * NetworkProcess/PreconnectTask.h: Override NetworkLoadClient::isAllowedToAskUserForCredentials()
        such that we never ask for credentials. This matches our current behavior.
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: Ditto.
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest): Query ResourceLoader as to whether the load is allowed to
        ask the user for credentials and pass this state to NetworkResourceLoader.

2017-10-27  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][CMake] Incorrect conditional check when adding build dir to GIR runtime library path
        https://bugs.webkit.org/show_bug.cgi?id=178936

        Reviewed by Michael Catanzaro.

        * PlatformGTK.cmake: Fix spelling of variable used in conditional.

2017-10-27  Chris Dumez  <cdumez@apple.com>

        Add initial support for serviceWorkerClient.postMessage()
        https://bugs.webkit.org/show_bug.cgi?id=178794

        Reviewed by Youenn Fablet.

        Add initial support for serviceWorkerClient.postMessage():
        - https://w3c.github.io/ServiceWorker/#client-postmessage

        It is now possible to do bi-directional communication with a service worker
        via postMessage().

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ServiceWorkerClientIdentifier>::encode):
        (IPC::ArgumentCoder<ServiceWorkerClientIdentifier>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::postMessageToServiceWorkerClient):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2017-10-27  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r224077): DeprecatedGlobalSettings::setAVKitEnabled() not protected by HAVE(AVKIT)

        Unreviewed build fix.

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

2017-10-26  Jeremy Jones  <jeremyj@apple.com>

        Implement seek tolerance methods in WebAVPlayerController.
        https://bugs.webkit.org/show_bug.cgi?id=178838
        rdar://problem/33781777

        Reviewed by Eric Carlson.

        This implementes additional methods on WebAVPlayerController that allows AVKit more control over seeking.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::seekToTime):
        (WebKit::PlaybackSessionManagerProxy::seekToTime):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.messages.in:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionManager::seekToTime):

2017-10-26  Brian Burg  <bburg@apple.com>

        Web Automation: denying user permission for getUserMedia doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=178895

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        The ordering of special cases is incorrect. Safari configures its automation views to
        allow mock devices and never prompt for them. These checks were before the check for
        the automation session's getUserMedia permission. Switch these checks.

        Also change the deny reason so that subsequent requests are also denied. This matches
        behavior when a user denies a permission request on a real dialog. With this change,
        the DOM error changes from SecurityError to NotAllowedError, which makes more sense.

2017-10-26  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix GCC warning spam after r224077
        https://bugs.webkit.org/show_bug.cgi?id=178823

        Need to leave a blank line at the bottom of the file.

        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:

2017-10-25  Simon Fraser  <simon.fraser@apple.com>

        When navigating back to a page, compositing layers may not use accelerated drawing
        https://bugs.webkit.org/show_bug.cgi?id=178749
        rdar://problem/35158946

        Reviewed by Dean Jackson.

        Avoid assertions when a test enables accelerated drawing (which we can't support
        in the iOS simulator).

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::ensureBackingStore):

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

        [Settings] Generate the bulk of WebPage::updatePreferences(...)
        https://bugs.webkit.org/show_bug.cgi?id=178823

        Reviewed by Tim Horton.

        * CMakeLists.txt:
        * DerivedSources.make:
        * WebKit.xcodeproj/project.pbxproj:

            Add new file generation.

        * Scripts/GeneratePreferences.rb:
        
            Replace 'webkitOnly' boolean option with a new 'webcoreBinding' option.
            'webcoreBinding' supports the following values:
                - none (same as webkit only)
                - custom (means that you do bind to a webcore concept, but currently it must
                  be done in a custom manner)
                - DeprecatedGlobalSettings (binds to a DeprecatedGlobalSettings setting)
                - RuntimeEnabledFeatures (binds to a RuntimeEnabledFeatures setting)
            If 'webcoreBinding' is not provided, the preference binds to WebCore Setting
            of either the same name or the override name provided by the new 'webcoreName'
            option (we should try to remove the need for 'webcoreName' by unifying with 
            WebCore on preference/setting naming).
            
            A 'condition' option was also added to indicate that the preference is only available
            when that macro condition is true.
            
            Since we are generating most of WebPage::updatePreferences, we can simplify the
            macros in WebPreferencesDefinitions.h to only have normal/debug/experimental variants
            and remove the need for per-type macros, which were only used in WebPage::updatePreferences.
        
        * Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb: Added.
        
            Generates bindings from WebPreferences to WebCore::Settings/DeprecatedGlobalSettings/RuntimeEnabledFeatures.
            Does not generate a binding if the 'webcoreBinding' option is set to either 'none' or 'custom'.
        
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
    
            Simplify down to just normal/debug/experimental macros.
        
        * Shared/WebPreferences.yaml:
        
            Annotate perferences with new optional 'webcoreBinding', 'webcoreName', and 'condition'
            options.
        
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        
            Replace a ton of hand written preference to settings bindings with a call to updatePreferencesGenerated().
        
        * WebProcess/WebPage/WebPage.h:
        
            Add declaration of updatePreferencesGenerated, remove platformPreferencesDidChange.

        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformPreferencesDidChange): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformPreferencesDidChange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformPreferencesDidChange): Deleted.
        * WebProcess/WebPage/win/WebPageWin.cpp:
        (WebKit::WebPage::platformPreferencesDidChange): Deleted.
        * WebProcess/WebPage/wpe/WebPageWPE.cpp:
        (WebKit::WebPage::platformPreferencesDidChange): Deleted.
        
            Remove all the empty platformPreferencesDidChange functions.

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

        Move WKWebViewConfiguration validation to WKWebView construction
        https://bugs.webkit.org/show_bug.cgi?id=178840

        Reviewed by Tim Horton.
        
        I'm trying to remove WKWebViewConfigurationInternal methods so I can make WKWebViewConfiguration
        a wrapper around an APIObject like all the other API objects.  A small step towards making this easier
        is to remove the unnecessary method _validate and move its logic to its one callsite.  I added an API test
        that ensures no change in behavior.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _validate]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:

2017-10-26  Megan Gardner  <megan_gardner@apple.com>

        Remove unneeded block selection calculation code
        https://bugs.webkit.org/show_bug.cgi?id=178889

        Reviewed by Tim Horton.

        Removing more block selection code. Much of this should have been removed
        before, as the only things that were using these functions were removed in the
        last patch. Also remove the code decided if you should move to block mode or not,
        as the answer now is always NO.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::WebPage::rangeForBlockAtPoint): Deleted.
        (WebKit::distanceBetweenRectsForPosition): Deleted.
        (WebKit::rectsEssentiallyTheSame): Deleted.
        (WebKit::unionDOMRanges): Deleted.
        (WebKit::computeEdgeCenter): Deleted.
        (WebKit::WebPage::expandedRangeFromHandle): Deleted.
        (WebKit::WebPage::contractedRangeFromHandle): Deleted.
        (WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
        (WebKit::WebPage::switchToBlockSelectionAtPoint): Deleted.
        (WebKit::WebPage::shouldSwitchToBlockModeForHandle): Deleted.

2017-10-26  Jeremy Jones  <jeremyj@apple.com>

        Call setFullscreenClient on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=178089

        Reviewed by Simon Fraser.

        This was only being set for MacOS.

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

2017-10-26  Eric Carlson  <eric.carlson@apple.com>

        NowPlayingInfo should contain a unique identifier
        https://bugs.webkit.org/show_bug.cgi?id=178872

        Reviewed by Jer Noble.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _requestActiveNowPlayingSessionInfo:]): Take a completion handler.
        (-[WKWebView _requestActiveNowPlayingSessionInfo]): Deleted.
        (-[WKWebView _handleActiveNowPlayingSessionInfoResponse:title:duration:elapsedTime:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/PageClient.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): Ditto.
        (WebKit::WebPageProxy::nowPlayingInfoCallback): Lookup and call completion handler.
        (WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse const): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): Deleted.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): Deleted.

        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::requestActiveNowPlayingSessionInfo): Take callback ID. Pass unique ID.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-10-26  Andy Estes  <aestes@apple.com>

        [Payment Request] Enable Payment Request whenever Apple Pay is enabled
        https://bugs.webkit.org/show_bug.cgi?id=178880

        Reviewed by Tim Horton.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetPaymentRequestEnabled): Deleted.
        (WKPreferencesGetPaymentRequestEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-10-26  Chris Dumez  <cdumez@apple.com>

        Bring back SWContextManager abstraction in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=178876

        Reviewed by Geoffrey Garen.

        Bring back SWContextManager abstraction in WebCore. It was killed in <https://trac.webkit.org/changeset/223718> but
        is actually useful when the ServiceWorker wants to message the storage process.

        * CMakeLists.txt:
        * DerivedSources.make:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startServiceWorkerContext):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.cpp.
        (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
        (WebKit::WebSWContextManagerConnection::updatePreferences):
        (WebKit::WebSWContextManagerConnection::startServiceWorker):
        (WebKit::WebSWContextManagerConnection::startFetch):
        (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWContextManagerConnection.h: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.h.
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.messages.in.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didReceiveMessage):
        (WebKit::WebProcess::getWorkerContextConnection):
        * WebProcess/WebProcess.h:

2017-10-26  Alexey Proskuryakov  <ap@apple.com>

        Remove deprecated WebKit symbols
        https://bugs.webkit.org/show_bug.cgi?id=178875
        rdar://problem/31139070

        Reviewed by Dan Bernstein.

        * PlatformMac.cmake:
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKContextSetProcessModel):
        (WKPageGroupCopyIdentifier): Deleted.
        (WKPageGroupAddUserContentFilter): Deleted.
        (WKPageGroupRemoveUserContentFilter): Deleted.
        * UIProcess/API/C/WKPageGroup.h:
        * UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm: Removed.
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed, rolling out r223984.

        Caused LayoutTest assertion failures.

        Reverted changeset:

        "When navigating back to a page, compositing layers may not
        use accelerated drawing"
        https://bugs.webkit.org/show_bug.cgi?id=178749
        https://trac.webkit.org/changeset/223984

2017-10-26  Megan Gardner  <megan_gardner@apple.com>

        Remove code to update block selection
        https://bugs.webkit.org/show_bug.cgi?id=178843

        Reviewed by Tim Horton.

        Removes code for updating block selection, which has been disabled.
        This code is being slowly pruned to avoid regressions and accidental removal of code that is being used.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (toSelectionHandlePosition): Deleted.
        (-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
        (-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
        (WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::shouldExpand): Deleted.
        (WebKit::WebPage::changeBlockSelection): Deleted.
        (WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.

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

        Unreviewed, rolling out r223994.

        The LayoutTest for this change is failing.

        Reverted changeset:

        "Add service worker handle fetch support for all subresource
        requests"
        https://bugs.webkit.org/show_bug.cgi?id=178769
        https://trac.webkit.org/changeset/223994

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

        Unreviewed, rolling out r223908.

        Causes LayoutTest crashes with newer SDKs.

        Reverted changeset:

        "Adopt new secure coding APIs"
        https://bugs.webkit.org/show_bug.cgi?id=178484
        https://trac.webkit.org/changeset/223908

2017-10-26  Christopher Reid  <chris.reid@sony.com>

        Remove scopeguard from platform
        https://bugs.webkit.org/show_bug.cgi?id=178681

        Reviewed by Brady Eidson.

        * Shared/mac/ChildProcessMac.mm:

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

        Network process crash under WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge.
        https://bugs.webkit.org/show_bug.cgi?id=160234
        rdar://problem/30675510

        Reviewed by Geoffrey Garen.

        An exception is raised because we call the method rejectProtectionSpaceAndContinueWithChallenge on the CFNetwork
        challenge sender, which does not implement this optional method. The methods on the authentication challenge
        sender are deprecated when network session is used, so we should not call them in that case.

        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::useCredentialForSingleChallenge):
        (WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
        (WebKit::AuthenticationManager::cancelSingleChallenge):
        (WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::receivedCredential):
        (WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
        (WebKit::AuthenticationManager::receivedCancellation):
        (WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
        (WebKit::AuthenticationManager::receivedChallengeRejection):
        * Shared/Authentication/soup/AuthenticationManagerSoup.cpp:

2017-10-25  Youenn Fablet  <youenn@apple.com>

        Move DNS resolution outside of NetworkRTCProvider
        https://bugs.webkit.org/show_bug.cgi?id=178796

        Reviewed by Geoffrey Garen.

       Tested through manual testing on external STUN servers.
       Moving NetworkRTCProvider::Resolver into NetworkRTCResolver.
       Updating the implementation to use a completion handler.

        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::createResolver):
        * NetworkProcess/webrtc/NetworkRTCProvider.h:
        * NetworkProcess/webrtc/NetworkRTCResolver.cpp:
        (WebKit::NetworkRTCResolver::NetworkRTCResolver):
        (WebKit::NetworkRTCResolver::~NetworkRTCResolver):
        (WebKit::NetworkRTCResolver::start):
        (WebKit::NetworkRTCResolver::stop):
        (WebKit::NetworkRTCResolver::completed):
        (WebKit::NetworkRTCProvider::Resolver::~Resolver): Deleted.
        (WebKit::NetworkRTCProvider::stop): Deleted.
        (WebKit::NetworkRTCProvider::resolutionCompleted): Deleted.
        * NetworkProcess/webrtc/NetworkRTCResolver.h:
        * WebKit.xcodeproj/project.pbxproj:

2017-10-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clear cached gUM prompt state
        https://bugs.webkit.org/show_bug.cgi?id=178754
        <rdar://problem/32742356>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml: Define new settings.

        * Shared/WebPreferencesDefinitionsBase.h: New default values.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetInactiveMediaCaptureSteamRepromptIntervalInMinutes): New.
        (WKPreferencesGetInactiveMediaCaptureSteamRepromptIntervalInMinutes): Ditto.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _inactiveMediaCaptureSteamRepromptIntervalInMinutes]): Ditto.
        (-[WKPreferences _setInactiveMediaCaptureSteamRepromptIntervalInMinutes:]): Ditto.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy): Initialize
        the timer.
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Remove unneeded namespace.
        (WebKit::toWebCore): Remove unneeded breaks.
        (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): Remove unneeded namespace.
        (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs const): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged): Set the watchdog timer
        to the correct interval based on capture state.
        (WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired): Clear cached state.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2017-10-25  Simon Fraser  <simon.fraser@apple.com>

        When navigating back to a page, compositing layers may not use accelerated drawing
        https://bugs.webkit.org/show_bug.cgi?id=178749
        rdar://problem/35158946

        Reviewed by Dean Jackson.

        Avoid assertions when a test enables accelerated drawing (which we can't support
        in the iOS simulator).

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::ensureBackingStore):

2017-10-25  Youenn Fablet  <youenn@apple.com>

        Enable ServiceWorker to fetch resources
        https://bugs.webkit.org/show_bug.cgi?id=178673

        Reviewed by Brady Eidson.

        ServiceWorkerContextManager makes use of the new ServiceWorkerThreadProxy.
        It creates the necessary environment for the thread to make use of network loads, web sockets and cache storage.
        Fetch is functional with these changes.

        ServiceWorkerProcessProxy is introduced as a UIProcess proxy to the service worker process.
        This process proxy is responsible to give the pageID used by all service worker thread instances for network loads.
        ServiceWorkerContextManager is responsible to give a unique frameID for all service worker threads.
        This is necessary as these two ids are currently needed for any network load.

        ServiceWorkerThreadProxy creates its own FrameLoaderClient which is now used to get pageID, frameID and sessionID.

        * UIProcess/ServiceWorkerProcessProxy.cpp: Added.
        (WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
        (WebKit::m_serviceWorkerPageID):
        (WebKit::ServiceWorkerProcessProxy::~ServiceWorkerProcessProxy):
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/ServiceWorkerProcessProxy.h: Added.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getWorkerContextProcessConnection):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
        (WebKit::WebProcessPool::createWebPage):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::generatePageID):
        * UIProcess/WebProcessProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::startPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Storage/ServiceWorkerContextManager.cpp:
        (WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
        (WebKit::ServiceWorkerContextManager::startServiceWorker):
        (WebKit::ServiceWorkerContextManager::startFetch):
        * WebProcess/Storage/ServiceWorkerContextManager.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::pageID const):
        (WebKit::WebFrameLoaderClient::frameID const):
        (WebKit::WebFrameLoaderClient::sessionID const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-10-25  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add WebKit platform files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=178000

        Reviewed by Alex Christensen.

        * Platform/Module.h:
        * Platform/SharedMemory.h:
        (WebKit::SharedMemory::handle const):
        * Platform/win/LoggingWin.cpp: Added. It is based on Source/WebCore/platform/win/LoggingWin.cpp
        (WebKit::logLevelString):
        * Platform/win/ModuleWin.cpp: Added.
        (WebKit::Module::load):
        (WebKit::Module::unload):
        (WebKit::Module::platformFunctionPointer const):
        * Platform/win/SharedMemoryWin.cpp: Added.
        (WebKit::SharedMemory::Handle::Handle):
        (WebKit::SharedMemory::Handle::~Handle):
        (WebKit::SharedMemory::Handle::isNull const):
        (WebKit::SharedMemory::Handle::encode const):
        (WebKit::SharedMemory::Handle::clear):
        (WebKit::getDuplicatedHandle):
        (WebKit::SharedMemory::Handle::decode):
        (WebKit::protectAttribute):
        (WebKit::SharedMemory::allocate):
        (WebKit::SharedMemory::create):
        (WebKit::accessRights):
        (WebKit::SharedMemory::map):
        (WebKit::SharedMemory::adopt):
        (WebKit::SharedMemory::~SharedMemory):
        (WebKit::SharedMemory::createHandle):
        (WebKit::SharedMemory::systemPageSize):
        * PlatformWin.cmake:

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

        Add support for unregistering a service worker
        https://bugs.webkit.org/show_bug.cgi?id=178735

        Reviewed by Brady Eidson.

        Add support for unregistering a service worker:
        - https://w3c.github.io/ServiceWorker/#navigator-service-worker-unregister

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

        Make SharedStringHashTable less error prone
        https://bugs.webkit.org/show_bug.cgi?id=178764

        Reviewed by Youenn Fablet.

        SharedStringHashTable is backed by SharedMemory and this SharedMemory
        may be readonly (and is when used in the WebContent process). As a result,
        some of the operations on SharedStringHashTable that write to this shared
        memory will crash if called and the SharedMemory is readonly.

        To make this less error prone, introduce a new SharedStringHashTableReadOnly
        base class for SharedStringHashTable and only keep the operations that
        write to the shared memory on SharedStringHashTableReadOnly (namely, add() /
        remove() / clear(). Update VisitedLinkTableController and WebSWOriginTable
        to use SharedStringHashTableReadOnly since they are instantiated in the
        WebContent process and use readonly shared memory.

        * Shared/SharedStringHashTable.cpp:
        (WebKit::SharedStringHashTableReadOnly::SharedStringHashTableReadOnly):
        (WebKit::SharedStringHashTableReadOnly::~SharedStringHashTableReadOnly):
        (WebKit::SharedStringHashTableReadOnly::setSharedMemory):
        (WebKit::doubleHash):
        (WebKit::SharedStringHashTableReadOnly::contains const):
        (WebKit::SharedStringHashTableReadOnly::findSlot const):
        (WebKit::SharedStringHashTable::SharedStringHashTable):
        (WebKit::SharedStringHashTable::~SharedStringHashTable):
        (WebKit::SharedStringHashTable::add):
        (WebKit::SharedStringHashTable::remove):
        (WebKit::SharedStringHashTable::clear):
        * Shared/SharedStringHashTable.h:
        * WebProcess/Storage/WebSWOriginTable.h:
        * WebProcess/WebPage/VisitedLinkTableController.cpp:
        (WebKit::VisitedLinkTableController::removeAllVisitedLinks):
        * WebProcess/WebPage/VisitedLinkTableController.h:

2017-10-25  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Remove GLib API functions which use Cairo
        https://bugs.webkit.org/show_bug.cgi?id=178205

        Reviewed by Michael Catanzaro.

        Add PLATFORM(GTK) guards for the parts of of the GLib API which use cairo_surface_t (web
        page snapshots and favicons), and remove the affected function prototypes from public API
        headers. This way, the WPE version of the API is not tied to Cairo.

        * PlatformWPE.cmake:
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        * UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:
        * UIProcess/API/glib/WebKitInjectedBundleClient.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        (webkitWebViewGetProperty):
        (webkitWebViewDispose):
        (webkit_web_view_class_init):
        (webkitWebViewLoadChanged):
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/wpe/WebKitFaviconDatabase.h:
        * UIProcess/API/wpe/WebKitWebView.h:
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        (webkitWebPageDidReceiveMessage):

2017-10-25  Zan Dobersek  <zdobersek@igalia.com>

        Make SERVICE_WORKER feature buildable on GTK, WPE
        https://bugs.webkit.org/show_bug.cgi?id=178574

        Reviewed by Carlos Garcia Campos.

        * CMakeLists.txt: Add missing files to the build.
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didGetWorkerContextProcessConnection):
        IPC::Attachment object should be accessed through an rvalue reference,
        making it mutable and enabling releasing the file descriptor.
        * StorageProcess/StorageProcess.h: Adjust the method signature.
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        Explicitly include the ResourceError header from WebCore (using a forwarding header).
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        Include the CachedResource header from WebCore (again using a forwarding header).
        * WebProcess/Storage/WebServiceWorkerProvider.h: Forward-declare the WebCore::CachedResource type.

2017-10-24  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerClientFetch should return an error that is not null in case of failure
        https://bugs.webkit.org/show_bug.cgi?id=178761

        Reviewed by Geoffrey Garen.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didFail): Generating a General error.

2017-10-24  Youenn Fablet  <youenn@apple.com>

        Enable service worker to use cache storage api
        https://bugs.webkit.org/show_bug.cgi?id=178684

        Reviewed by Brady Eidson.

        Passing the WebPreferences store of the default page group of the WebProcessPool to its ServiceWorker process.
        ServiceWorkerContextManager then uses it to initialize the preferences accordingly.
        Patch is covered by new test which is using cache api previously disabled and now enabled through the store.

        Made use of the new ServiceWorkerThreadProxy in ServiceWorkerContextManager to enable a cache storage connection.
        Fixed the default size of quota in WebsiteDataStore.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getWorkerContextProcessConnection):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/Storage/ServiceWorkerContextManager.cpp:
        (WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
        (WebKit::ServiceWorkerContextManager::updatePreferences):
        (WebKit::ServiceWorkerContextManager::startServiceWorker):
        (WebKit::ServiceWorkerContextManager::startFetch):
        * WebProcess/Storage/ServiceWorkerContextManager.h:
        (WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        Selecting and right-clicking URL-like strings with IDNA-disallowed characters in host or authority causes rendering engine crash
        https://bugs.webkit.org/show_bug.cgi?id=174267

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCanHandleRequest):

2017-10-24  Chris Dumez  <cdumez@apple.com>

        Add initial implementation for serviceWorker.postMessage()
        https://bugs.webkit.org/show_bug.cgi?id=178534

        Reviewed by Youenn Fablet.

        Add initial implementation for serviceWorker.postMessage():
        - https://w3c.github.io/ServiceWorker/#service-worker-postmessage

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/ServiceWorkerContextManager.cpp:
        (WebKit::ServiceWorkerContextManager::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/ServiceWorkerContextManager.h:
        * WebProcess/Storage/ServiceWorkerContextManager.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):
        * WebProcess/Storage/WebSWClientConnection.h:

2017-10-24  Brent Fulgham  <bfulgham@apple.com>

        Adopt new secure coding APIs
        https://bugs.webkit.org/show_bug.cgi?id=178484
        <rdar://problem/34837193>

        Reviewed by Tim Horton.

        Switch to new NSKeyed[Un]Archiver methods that active and use
        NSSecureCoding by default.

        * Platform/ios/AccessibilityIOS.mm:
        (WebKit::newAccessibilityRemoteToken): Use secure-by-default API.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Ditto.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const): Ditto.
        (WebKit::InteractionInformationAtPosition::decode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setObject:forBundleParameter:]): Ditto.
        (-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]): Ditto.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]): Ditto.
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::startAssistingNode): Ditto.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Ditto.
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Ditto.
        (WebKit::InjectedBundle::setBundleParameter): Ditto.
        (WebKit::InjectedBundle::setBundleParameters): Ditto.

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

        [Settings] Add initial support for generating preferences related code
        https://bugs.webkit.org/show_bug.cgi?id=178656

        Reviewed by Dean Jackson.

        As a first step towards getting off the macros in WebPreferencesDefinitions.h
        and reducing the overhead of adding a preference, this change generates adds
        WebPreferences.yaml where preference changes will go, and generates much of
        WebPreferencesDefinitions.h from it (all the custom defaults moved to 
        WebPreferencesDefinitionsBase.h). Subsequent changes will remove the need for 
        the macros in WebPreferencesDefinitions.h entirely.

        * CMakeLists.txt:
        * DerivedSources.make:
        * WebKit.xcodeproj/project.pbxproj:
        
            Add new files / rules to generate WebPreferencesDefinitions.h.
        
        * Scripts/GeneratePreferences.rb: Added.
        * Scripts/PreferencesTemplates: Added.
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb: Added.
        
            Add scripts and template to generate WebPreferencesDefinitions.h from
            WebPreferences.yaml.

        * Shared/WebPreferences.yaml: Added.
        
            Configuration file for preferences.
        
        * Shared/WebPreferencesDefinitions.h: Removed.
        * Shared/WebPreferencesDefinitionsBase.h: Copied from Source/WebKit/Shared/WebPreferencesDefinitions.h.
        
            Moved custom defaults to new WebPreferencesDefinitionsBase.h. Removed the need for 
            FOR_EACH_WEBKIT_STRING_PREFERENCE by using custom defaults for the font family values.

2017-10-24  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r223889.

        This caused multiple crashes on all platforms

        Reverted changeset:

        "Adopt new secure coding APIs"
        https://bugs.webkit.org/show_bug.cgi?id=178484
        https://trac.webkit.org/changeset/223889

2017-10-24  Youenn Fablet  <youenn@apple.com>

        ASSERTION FAILED: !m_serviceWorkerManager in WebProcess::getWorkerContextConnection() on API tests
        https://bugs.webkit.org/show_bug.cgi?id=178586
        <rdar://problem/35115902>

        Reviewed by Brady Eidson.

       Covered by API tests no longer crashing.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getWorkerContextProcessConnection): Sending a worker context process connection message only at creation of the service worker process.

2017-10-24  Brent Fulgham  <bfulgham@apple.com>

        Adopt new secure coding APIs
        https://bugs.webkit.org/show_bug.cgi?id=178484
        <rdar://problem/34837193>

        Reviewed by Tim Horton.

        Switch to new NSKeyed[Un]Archiver methods that active and use
        NSSecureCoding by default.

        * Platform/ios/AccessibilityIOS.mm:
        (WebKit::newAccessibilityRemoteToken): Use secure-by-default API.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Ditto.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const): Ditto.
        (WebKit::InteractionInformationAtPosition::decode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setObject:forBundleParameter:]): Ditto.
        (-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]): Ditto.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]): Ditto.
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::startAssistingNode): Ditto.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Ditto.
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Ditto.
        (WebKit::InjectedBundle::setBundleParameter): Ditto.
        (WebKit::InjectedBundle::setBundleParameters): Ditto.

2017-10-24  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WPE] generate-forwarding-headers.pl should also scan derived sources in WebKit framework
        https://bugs.webkit.org/show_bug.cgi?id=178579

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: When generating forwarding headers, derived sources
        should be scanned as well. The DERIVED_SOURCES_WEBKIT_DIR value has to
        be passed as an include path to the generate-forward-headers.pl script
        to achieve that. This target then also has to depend on all the derived
        source files to be generated before this can be performed.
        * PlatformWPE.cmake: Ditto.

2017-10-23  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: add SPI to tell whether the automation session is currently simulating user interactions
        https://bugs.webkit.org/show_bug.cgi?id=178616

        Reviewed by Joseph Pecoraro.

        This is needed to disambiguate whether an action (such as selectAll:) came from
        a user clicking on "Edit > Select All" in a menu or whether it was produced by
        simulating the keystrokes to produce the chord for "Command + a". Some clients,
        such as Safari, would allow the latter but not the former during automation.

        * UIProcess/API/Cocoa/_WKAutomationSession.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
        (-[_WKAutomationSession isSimulatingUserInteraction]):
        Add new SPI property that's backed by the same WebAutomationSession method.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        Set m_simulatingUserInteraction prior to sending the synthesized events. It will
        be cleared when keyboardEventsFlushedForPage() is called by WebPageProxy.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveEvent):
        Notify the automation session that the key event queue was flushed *after* giving
        delegates a chance to do something with the key event. This is necessary so that
        any actions that are created from the NSEvent by the delegates are handled prior
        to the automation session finishing its keyboard interaction command.

2017-10-23  Brian Burg  <bburg@apple.com>

        [Mac] Web Automation: key modifiers for synthesized NSEvents are incorrect
        https://bugs.webkit.org/show_bug.cgi?id=178615

        Reviewed by Joseph Pecoraro.

        In both PLATFORM(MAC) platform methods for simulating keyboard interactions,
        we errantly relied on +[NSEvent modifierFlags] to get the current state of
        sticky modifiers when creating synthesized events. This is incorrect for two reasons:
        modifierFlags is never updated when simulating a sequence of events (because
        all the events are synthesized before any are delivered); and the NSEvent class
        method only reflects the modifier state of the primary physical keyboard, which
        is not affected by synthesized NSEvents that happen to have modifier flags.

        Instead, just keep our own m_currentModifiers state in the session and compute
        the necessary NSEventModifierFlags to put on each synthesized event. This aligns
        the implementation with the treatment of sticky keys in the iOS and GTK platform methods.

        * UIProcess/Automation/WebAutomationSession.h: Every port gets this variable now.
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::platformSimulateKeyStroke):
        (WebKit::WebAutomationSession::platformSimulateKeySequence):
        Use and update m_currentModifiers.

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

        Fix ASAN test after r222824
        https://bugs.webkit.org/show_bug.cgi?id=178688
        <rdar://problem/35104706>

        Reviewed by Tim Horton.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::clear):
        Resizing a list of Ref<T> after we've WTFMoved all the elements doesn't make ASAN happy.

2017-10-23  Tim Horton  <timothy_horton@apple.com>

        Stop using _UIApplicationUsesLegacyUI()
        https://bugs.webkit.org/show_bug.cgi?id=178680
        <rdar://problem/35131949>

        Reviewed by Dan Bernstein.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
        (-[WKSelectPopover initWithView:hasGroups:]):
        Resolve _UIApplicationUsesLegacyUI to false and simplify.

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

        Unreviewed, suppress deprecation warnings to fix the build.
        <rdar://problem/35131949>

        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
        (-[WKSelectPopover initWithView:hasGroups:]):

2017-10-23  Youenn Fablet  <youenn@apple.com>

        TestController should clear all fetch caches when resetting its state
        https://bugs.webkit.org/show_bug.cgi?id=178486
        <rdar://problem/35066305>

        Reviewed by Chris Dumez.

        Adding a new DidNotHandle message to disambiguate with the DidFail fetch case.
        With DidNotHandle, the loading should go the network process.
        With DidFail, the loading should return a network error.

        On receiving an order to start a fetch, ServiceWorkerThread will dispatch a fetch event.
        The client of this event will retrieve the response and return it to the WebProcess through IPC.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::didNotHandleFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didNotHandleFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didFail):
        (WebKit::ServiceWorkerClientFetch::didNotHandle):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in:
        * WebProcess/Storage/ServiceWorkerContextManager.cpp:
        (WebKit::ServiceWorkerContextManager::startFetch):
        * WebProcess/Storage/ServiceWorkerContextManager.h:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp: Added.
        (WebKit::WebServiceWorkerFetchTaskClient::~WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h: Added.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::startFetchInServiceWorker):
        * WebProcess/WebProcess.h:

2017-10-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] WebProcess::initializeWebProcess spends ~150ms spinning up AVSystemController on some devices
        https://bugs.webkit.org/show_bug.cgi?id=178640
        <rdar://problem/35113105>

        Reviewed by Youenn Fablet.

        In r213933, we added a mechanism to allow the web process to drive media capture, by setting an attribute on the
        shared AVSystemController. This requires us to fault in the Celestial framework, which is a slight performance
        hit on some hardware. Instead of doing this at the start of every web process launch, we can just do this work
        lazily, the first time the web process requests permissions for user media access.

        * WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
        (WebKit::WebUserMediaClient::requestUserMediaAccess):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::prepareToSendUserMediaPermissionRequest):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::prepareToSendUserMediaPermissionRequest):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2017-10-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence a -Wunused-but-set-variable warning

        * WebProcess/WebPage/EventDispatcher.cpp:
        (WebKit::EventDispatcher::wheelEvent):

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

        Add FIXME comment after r223803
        https://bugs.webkit.org/show_bug.cgi?id=178418

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        We need some work to better support customized persistent data stores.  Add a comment indicating such.

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

        Fix API tests after r223791.
        https://bugs.webkit.org/show_bug.cgi?id=178418

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        Whatever NetworkSessionInitializationParameters we send with the NetworkProcess initialization message,
        that's the default session.  This is needed for WebKit.WebsiteDataStoreCustomPaths.
        (WebKit::WebProcessPool::createNewWebProcess):
        Don't change behavior or NetworkProcess initialization like I did in r223791.

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

        Fix download tests on El Capitan after r223730
        https://bugs.webkit.org/show_bug.cgi?id=178547

        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
        Revert to original behavior.  This uses suggestedFilename, which may have come from places like
        the download attribute, instead of always using the filename from CFNetwork.

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

        Expose _boundInterfaceIdentifier and _allowsCellularAccess to WKWebsiteDataStorePrivate
        https://bugs.webkit.org/show_bug.cgi?id=178418
        <rdar://problem/29599569>

        Reviewed by Tim Horton.
        
        In r213747 I introduced allowsCellularAccess to _WKProcessPoolConfiguration because there
        was no way to add parameters to the default (and other) NetworkSession constructors.  Since
        clients have not adopted this SPI, we can introduce such a way in NetworkSessionCreationParameters
        and move the SPI to WKWebsiteDataStore, which is where it and other NetworkSession properties
        ought to be instead of making them WKProcessPool global.

        We also need to expose access to NSURLRequest.boundInterfaceIdentifier.  Instead of serializing and
        deserializing that property for each NSURLRequest and then having subresources mysteriously jump back
        to having no bound interface identifiers, I'm adding this to WKWebsiteDataStore, too, to make it a
        session networking property.
        
        I manually verified that these properties are being set properly with a custom test app and added logs.
        Unfortunately, these properties don't do anything under circumstances anywhere close to what we test.
        The architecture change of having NetworkSessionCreationParameters is verified to not have a change in
        behavior by existing tests, such as any test that uses TestProtocol (which we should eventually remove).

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::clearCachedCredentials):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::create):
        (WebKit::NetworkSession::defaultSession): Deleted.
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSessionCreationParameters.h: Added.
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::setSourceApplicationSecondaryIdentifier):
        (WebKit::NetworkSessionCocoa::create):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        (WebKit::NetworkSessionCocoa::setLegacyCustomProtocolManager): Deleted.
        (WebKit::NetworkSessionCocoa::setAllowsCellularAccess): Deleted.
        (WebKit::NetworkSessionCocoa::defaultSession): Deleted.
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/SessionTracker.cpp:
        (WebKit::SessionTracker::networkSession):
        (WebKit::SessionTracker::setSession):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setBoundInterfaceIdentifier:]):
        (-[WKWebsiteDataStore _boundInterfaceIdentifier]):
        (-[WKWebsiteDataStore _setAllowsCellularAccess:]):
        (-[WKWebsiteDataStore _allowsCellularAccess]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration allowsCellularAccess]):
        (-[_WKProcessPoolConfiguration setAllowsCellularAccess:]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::setBoundInterfaceIdentifier):
        (WebKit::WebsiteDataStore::boundInterfaceIdentifier):
        (WebKit::WebsiteDataStore::setAllowsCellularAccess):
        (WebKit::WebsiteDataStore::allowsCellularAccess):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensurePrivateBrowsingSession):
        (WebKit::WebProcess::clearCachedCredentials):

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

        Add ObjC SPI to _WKDownloadDelegate missing from WKContextDownloadClient
        https://bugs.webkit.org/show_bug.cgi?id=178566
        <rdar://problem/23041906>

        Reviewed by Brady Eidson.

        * UIProcess/API/Cocoa/_WKDownloadDelegate.h:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::DownloadClient):
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        (WebKit::DownloadClient::shouldDecodeSourceDataOfMIMEType):
        (WebKit::DownloadClient::didCreateDestination):
        (WebKit::DownloadClient::processDidCrash):

2017-10-20  Youenn Fablet  <youenn@apple.com>

        ResourceResponse should have a ServiceWorker source
        https://bugs.webkit.org/show_bug.cgi?id=178593

        Reviewed by Alex Christensen.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse): setting response source to ServiceWorker.
        * WebProcess/Storage/ServiceWorkerClientFetch.h:

2017-10-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] Provide basic timeline and animation interfaces
        https://bugs.webkit.org/show_bug.cgi?id=178526

        Reviewed by Dean Jackson.

        Remove the WEB_ANIMATIONS compile-time flag.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        (WebKit::InjectedBundle::setWebAnimationsEnabled):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-10-02  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        Move setup and delegates of the inspector frontend page into implementations of
        WebInspectorProxy::platformCreateFrontendPage. The Mac implementation
        will be subsumed by WKInspectorViewController, while the GTK implementation
        is inherited from the cross-platform version that uses C API. Eventually the
        GTK version should use GTK API rather than the soon to be deprecated C API.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createFrontendPage):
        (WebKit::webProcessDidCrash): Deleted.
        (WebKit::decidePolicyForNavigationAction): Deleted.
        (WebKit::getContextMenuFromProposedMenu): Deleted.
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::exceededDatabaseQuota):
        (WebKit::webProcessDidCrash):
        (WebKit::decidePolicyForNavigationAction):
        (WebKit::getContextMenuFromProposedMenu):
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::exceededDatabaseQuota):
        (WebKit::webProcessDidCrash):
        (WebKit::decidePolicyForNavigationAction):
        (WebKit::getContextMenuFromProposedMenu):
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):

2017-10-02  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        Adopt WKInspectorViewController in WebInspectorProxyMac to set up the
        frontend's web view.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::invalidate):
        (WebKit::WebInspectorProxy::close):
        (WebKit::WebInspectorProxy::didClose):
        (WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
        Make closeFrontendPageAndWindow into the method that does work.
        Only use didClose() as the IPC message entry point.

        * UIProcess/WebInspectorProxy.h:
        (WebKit::WebInspectorProxy::isUnderTest const): Make public.

        * UIProcess/mac/WKInspectorViewController.h:
        * UIProcess/mac/WKInspectorViewController.mm:
        (+[WKInspectorViewController viewIsInspectorWebView:]):
        Abstract away the -isInstanceOfClass: check for WKInspectorWKWebView.
        Clients shouldn't need to know whether we use a subclass or what its name is.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (-[WKWebInspectorProxyObjCAdapter inspectorViewControllerInspectorDidCrash:]):
        (-[WKWebInspectorProxyObjCAdapter inspectorViewControllerInspectorIsUnderTest:]):
        Hook up view controller delegates.

        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        (WebKit::WebInspectorProxy::closeFrontendPage):
        New implementation based on the view controller.

        (WebKit::WebInspectorProxy::platformBringToFront):
        (WebKit::WebInspectorProxy::platformIsFront):
        (WebKit::WebInspectorProxy::platformCanAttach):
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        (WebKit::WebInspectorProxy::platformAttach):
        (WebKit::WebInspectorProxy::platformDetach):
        (WebKit::WebInspectorProxy::platformStartWindowDrag):
        Adjust to get the WKWebView out of the view controller for code that needs
        to do something with the NSView, such as get/set the frame.

        (WebKit::WebInspectorProxy::createFrontendConfiguration): Deleted.
        (WebKit::exceededDatabaseQuota): Deleted.
        (WebKit::webProcessDidCrash): Deleted.
        (WebKit::decidePolicyForNavigationAction): Deleted.
        (WebKit::getContextMenuFromProposedMenu): Deleted.

2017-10-02  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        Introduce new platform methods to open and close the frontend page and window.
        This matches how RemoteWebInspectorProxy divides work up into platform methods.
        Move existing code from platformDidClose, platformOpen, and other methods into
        the new platform methods. Move some identical platform code into WebInspectorProxy.cpp.

        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::connect):
        (WebKit::WebInspectorProxy::showConsole):
        (WebKit::WebInspectorProxy::showResources):
        (WebKit::WebInspectorProxy::showTimelines):
        (WebKit::WebInspectorProxy::showMainResourceForFrame):
        (WebKit::WebInspectorProxy::createFrontendPage):
        (WebKit::WebInspectorProxy::createInspectorPage):
        (WebKit::WebInspectorProxy::open):
        (WebKit::WebInspectorProxy::didClose):
        (WebKit::WebInspectorProxy::eagerlyCreateInspectorPage): Renamed.

        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::updateInspectorWindowTitle const):
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        Do everything necessary to set up the frontend page WebView.

        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        Do everything necessary to set up the detached NSWindow for the frontend.

        (WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::WebInspectorProxy::platformDetach):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage): Deleted.
        (WebKit::WebInspectorProxy::createInspectorWindow): Deleted.
        (WebKit::WebInspectorProxy::platformOpen): Deleted.
        (WebKit::WebInspectorProxy::platformDidClose): Deleted.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::updateInspectorWindowTitle const):
        (WebKit::WebInspectorProxy::platformCreateFrontendPage): Added.
        Do everything necessary to set up the frontend page WebView.

        (WebKit::WebInspectorProxy::platformCreateFrontendWindow): Added.
        Do everything necessary to set up the detached NSWindow for the frontend.

        (WebKit::WebInspectorProxy::closeFrontendPage):
        (WebKit::WebInspectorProxy::closeFrontendAfterInactivityTimerFired):
        (WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::WebInspectorProxy::platformDidCloseForCrash):
        (WebKit::WebInspectorProxy::platformInvalidate):
        (WebKit::WebInspectorProxy::platformBringToFront): Carry through renamings.

        (WebKit::WebInspectorProxy::platformDetach):
        Defer to the general open() method to create a window if needed and bring it to front.

        (WebKit::WebInspectorProxy::platformCanAttach): Move this below open/close code.

        (WebKit::WebInspectorProxy::closeFrontend): Deleted.
        (WebKit::WebInspectorProxy::createInspectorWindow): Deleted.
        (WebKit::WebInspectorProxy::platformCreateInspectorPage): Deleted.
        (WebKit::WebInspectorProxy::platformOpen): Deleted.
        (WebKit::WebInspectorProxy::platformDidClose): Deleted.
        Defer to the general open() method to create a window if needed and bring it to front.

        * UIProcess/wpe/WebInspectorProxyWPE.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        (WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage): Deleted.
        (WebKit::WebInspectorProxy::createInspectorWindow): Deleted.
        (WebKit::WebInspectorProxy::platformOpen): Deleted.
        (WebKit::WebInspectorProxy::platformDidClose): Deleted.
        Update stubs.

2017-10-02  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        This patch refactors some Cocoa code pathas.
        Rename the timer that closes the WebView so it's more obvious what it is for.
        Extract the common code to close the frontend window so its not implemented by
        the timer callback.

        In later patches, this will be extracted further into platform methods to open/close
        the frontend and window, like how it is for RemoteWebInspectorProxy.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::WebInspectorProxy):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::closeFrontendAfterInactivityTimerFired):
        (WebKit::WebInspectorProxy::closeFrontend):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        (WebKit::WebInspectorProxy::platformDidClose):
        (WebKit::WebInspectorProxy::platformDidCloseForCrash):
        (WebKit::WebInspectorProxy::platformInvalidate):
        (WebKit::WebInspectorProxy::closeTimerFired): Deleted.

2017-09-30  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        Modernize the ObjC adapter and related code a bit before it is hooked
        into WKInspectorViewController.

        * UIProcess/API/C/mac/WKInspectorPrivateMac.h: No need for the
        ivar to be declared here, move to @implementation.

        * UIProcess/WebInspectorProxy.h: Simplify the name to match modern convention.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (-[WKWebInspectorProxyObjCAdapter inspectorRef]):
        (-[WKWebInspectorProxyObjCAdapter initWithWebInspectorProxy:]):
        (-[WKWebInspectorProxyObjCAdapter invalidate]):
        (-[WKWebInspectorProxyObjCAdapter windowDidMove:]):
        (-[WKWebInspectorProxyObjCAdapter windowDidResize:]):
        (-[WKWebInspectorProxyObjCAdapter windowWillClose:]):
        (-[WKWebInspectorProxyObjCAdapter windowDidEnterFullScreen:]):
        (-[WKWebInspectorProxyObjCAdapter windowDidExitFullScreen:]):
        (-[WKWebInspectorProxyObjCAdapter inspectedViewFrameDidChange:]):
        Remove unnecessary casts to and from void*.

        (WebKit::WebInspectorProxy::attachmentViewDidChange):
        (WebKit::WebInspectorProxy::setInspectorWindowFrame):
        (WebKit::WebInspectorProxy::closeTimerFired):
        (WebKit::WebInspectorProxy::createInspectorWindow):
        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
        Fix uses of member variable m_objCAdapter.

        (-[WKWebInspectorProxyObjCAdapter close]): Deleted.
        Rename this to invalidate to match modern convention. In this context,
        'close' might trick someone into thinking that this closes a window/page.

2017-09-30  Brian Burg  <bburg@apple.com>

        Web Inspector: consolidate code that hosts the Inspector page inside a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=177661
        <rdar://problem/34740286>

        Reviewed by Joseph Pecoraro.

        Move code that sets up and controls the inspector WebView into WKInspectorViewController.
        This will be shared between RemoteWebInspectorProxy and WebInspectorProxy eventually,
        but for now just pull out code from RemoteWebInspectorProxy. The next patch will move
        over WebInspectorProxy.

        WKInspectorViewController uses the ObjC API for setting up the WKWebView's delegates.
        Previously, a WKWebView was used but the delegates were set up using the C API. In
        a few cases it uses delegate methods to ask the owning [Remote]WebInspectorProxy some
        things. In general, WKInspectorViewController doesn't dig into any internals of
        WebPageProxy or WebInspectorProxy; that is delegated to the client.

        * UIProcess/RemoteWebInspectorProxy.h:
        (WebKit::RemoteWebInspectorProxy::isUnderTest const): Add a method stub for now.
        We might want to enable tests for a _WKRemoteWebInspectorViewController-based UI
        in the future, and WebInspectorProxy has the same method. Add this and connect it
        to the view controller delegate method.

        (WebKit::RemoteWebInspectorProxy::webView const):
        This returns a plain WKWebView type now.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (-[WKRemoteWebInspectorProxyObjCAdapter inspectorViewControllerInspectorDidCrash:]):
        (-[WKRemoteWebInspectorProxyObjCAdapter inspectorViewControllerInspectorIsUnderTest:]):
        (-[WKRemoteWebInspectorProxyObjCAdapter webViewWebContentProcessDidTerminate:]): Deleted.
        (-[WKRemoteWebInspectorProxyObjCAdapter webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
        Make the ObjCAdapter forward view controller delegate calls to the C++ class.
        It no longer needs to be the delegate of the WebView, as the view controller handles that.

        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        Clean up and move WKWebView setup code into the view controller.

        (WebKit::RemoteWebInspectorProxy::platformCloseFrontendPageAndWindow):
        The m_inspectorPage is closed by the caller before calling this method, so we don't need to do it here.

        (WebKit::RemoteWebInspectorProxy::platformBringToFront):
        (WebKit::RemoteWebInspectorProxy::platformSave):
        (WebKit::RemoteWebInspectorProxy::platformAppend):
        (WebKit::RemoteWebInspectorProxy::platformStartWindowDrag):
        Use webView() instead of m_webView.

        * UIProcess/mac/WKInspectorViewController.h: Added.
        * UIProcess/mac/WKInspectorViewController.mm: Added.
        (-[WKInspectorWKWebView tag]):
        (-[WKInspectorViewController initWithInspectedPage:]):
        (-[WKInspectorViewController dealloc]):
        (-[WKInspectorViewController delegate]):
        (-[WKInspectorViewController webView]):
        (-[WKInspectorViewController setDelegate:]):
        (-[WKInspectorViewController configuration]):
        (-[WKInspectorViewController _webView:getWindowFrameWithCompletionHandler:]):
        (-[WKInspectorViewController _webView:setWindowFrame:]):
        (-[WKInspectorViewController webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:]):
        (-[WKInspectorViewController _webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:]):
        (-[WKInspectorViewController webViewWebContentProcessDidTerminate:]):
        (-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):
        Move code from RemoteWebInspectorProxyMac into here.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::createFrontendWindow):
        Remove commented out code left over from the last time that this method got moved around.

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

2017-10-20  Zan Dobersek  <zdobersek@igalia.com>

        [WK2] Drop 'CoordinatedGraphics' as a platform prefix from generate-forwarding-headers.pl
        https://bugs.webkit.org/show_bug.cgi?id=178575

        Reviewed by Carlos Garcia Campos.

        * Scripts/generate-forwarding-headers.pl: Remove CoordinatedGraphics as
        a supported platform prefix. No one invokes the script with this
        argument anymore.

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

        Introduce completionHandler-based SPI for _WKDownloadDelegate.decideDestinationWithSuggestedFilename
        https://bugs.webkit.org/show_bug.cgi?id=178560

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKDownloadDelegate.h:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::DownloadClient):
        (WebKit::DownloadClient::didStart):
        (WebKit::DownloadClient::didReceiveResponse):
        (WebKit::DownloadClient::didReceiveData):
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        (WebKit::DownloadClient::didFinish):
        (WebKit::DownloadClient::didFail):
        (WebKit::DownloadClient::didCancel):
        (WebKit::DownloadClient::willSendRequest):

2017-10-19  Chris Dumez  <cdumez@apple.com>

        ServiceWorkerContextManager should be an IPC::MessageReceiver
        https://bugs.webkit.org/show_bug.cgi?id=178552

        Reviewed by Youenn Fablet.

        ServiceWorkerContextManager should be an IPC::MessageReceiver, to avoid putting too many
        ServiceWorker related methods on WebProcess class.

        * DerivedSources.make:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startServiceWorkerContext):
        (WebKit::WebSWServerConnection::startFetch):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/ServiceWorkerContextManager.cpp:
        (WebKit::ServiceWorkerContextManager::startFetchInServiceWorker):
        (WebKit::ServiceWorkerContextManager::startFetch): Deleted.
        * WebProcess/Storage/ServiceWorkerContextManager.h:
        * WebProcess/Storage/ServiceWorkerContextManager.messages.in: Added.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didReceiveMessage):
        (WebKit::WebProcess::getWorkerContextConnection):
        (WebKit::WebProcess::startServiceWorkerContext): Deleted.
        (WebKit::WebProcess::startFetchInServiceWorker): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        Modernize authentication challenge handling in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=178555

        Reviewed by Tim Horton.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didReceiveAuthenticationChallengeInFrame):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::canAuthenticateAgainstProtectionSpace):
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):

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

        Modernize API::DownloadClient
        https://bugs.webkit.org/show_bug.cgi?id=178547

        Reviewed by Andy Estes.

        Use more C++ references instead of pointers because they're never null.

        Remove canAuthenticateAgainstProtectionSpace because there are no implementations
        except the default implementation which always returns true and we don't intend to
        add this to the SPI because that's just a legacy call anyways from when NSURLConnection
        hadn't fully evolved, and we're moving away from NSURLConnection, especially in our API design.

        Separate the NetworkSession-only and pre-NetworkSession-only callbacks.  All the synchronous
        IPC messages are only used in the pre-NetworkSession code, so once we remove it we can remove them!

        Make API::DownloadClient calls that NetworkSession uses use a completion handler so we will be able to
        design an asynchronous API.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace): Deleted.
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::canAuthenticateAgainstProtectionSpaceAsync):
        (WebKit::PendingDownload::continueCanAuthenticateAgainstProtectionSpace): Deleted.
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpaceDownload): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/APIDownloadClient.h:
        (API::DownloadClient::didStart):
        (API::DownloadClient::didReceiveAuthenticationChallenge):
        (API::DownloadClient::didReceiveResponse):
        (API::DownloadClient::didReceiveData):
        (API::DownloadClient::shouldDecodeSourceDataOfMIMEType):
        (API::DownloadClient::decideDestinationWithSuggestedFilename):
        (API::DownloadClient::didCreateDestination):
        (API::DownloadClient::didFinish):
        (API::DownloadClient::didFail):
        (API::DownloadClient::didCancel):
        (API::DownloadClient::processDidCrash):
        (API::DownloadClient::willSendRequest):
        (API::DownloadClient::canAuthenticateAgainstProtectionSpace): Deleted.
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetDownloadClient):
        * UIProcess/API/glib/WebKitDownloadClient.cpp:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didStart):
        (WebKit::DownloadClient::didReceiveResponse):
        (WebKit::DownloadClient::didReceiveData):
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        (WebKit::DownloadClient::didFinish):
        (WebKit::DownloadClient::didFail):
        (WebKit::DownloadClient::didCancel):
        (WebKit::DownloadClient::willSendRequest):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::processDidClose):
        (WebKit::DownloadProxy::didStart):
        (WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
        (WebKit::DownloadProxy::willSendRequest):
        (WebKit::DownloadProxy::didReceiveResponse):
        (WebKit::DownloadProxy::didReceiveData):
        (WebKit::DownloadProxy::shouldDecodeSourceDataOfMIMEType):
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
        (WebKit::DownloadProxy::didCreateDestination):
        (WebKit::DownloadProxy::didFinish):
        (WebKit::DownloadProxy::didFail):
        (WebKit::DownloadProxy::didCancel):
        (WebKit::DownloadProxy::canAuthenticateAgainstProtectionSpace): Deleted.
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/Downloads/DownloadProxy.messages.in:

2017-10-19  Nan Wang  <n_wang@apple.com>

        AX: Provide a way for Accessibility to cache the selection while retrieving rects for speak selection
        https://bugs.webkit.org/show_bug.cgi?id=176247
        <rdar://problem/34217143>

        Reviewed by Ryosuke Niwa.

        When getting the rects for highlighting the spoken text within a selection range on iOS, we can get a
        list of totally wrong rects if the user changed the selection to some other text. This is because the
        calculation is based on the current selection range. Therefore, we need to provide a way for accessibility
        codepath to store the selection during a speaking session.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _accessibilityStoreSelection]):
        (-[WKWebView _accessibilityClearSelection]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _accessibilityStoreSelection]):
        (-[WKContentView _accessibilityClearSelection]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::storeSelectionForAccessibility):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getRectsForGranularityWithSelectionOffset):
        (WebKit::WebPage::storeSelectionForAccessibility):
        (WebKit::WebPage::getRectsAtSelectionOffsetWithText):

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

        [Settings] Move global settings into their own file
        https://bugs.webkit.org/show_bug.cgi?id=178512

        Reviewed by Darin Adler.

        Moves all global settigns out of SettingsBase and into the new DeprecatedGlobalSettings.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setAllowsAnySSLCertificateForWebSocket):
        * Shared/WebPreferencesDefinitions.h:
        * Shared/WebPreferencesStore.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::updatePreferences):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::setResourceLoadStatisticsEnabled):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreen const):

2017-10-19  Andy Estes  <aestes@apple.com>

        [iOS] Conditionally rename DatabaseProcess to StorageProcess when building for iOS devices
        https://bugs.webkit.org/show_bug.cgi?id=178181
        <rdar://problem/33660282>

        Reviewed by Dan Bernstein.

        * Configurations/BaseTarget.xcconfig:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        * WebKit.xcodeproj/project.pbxproj:

2017-10-19  Youenn Fablet  <youenn@apple.com>

        Add preliminary support for ServiceWorker Handle Fetch
        https://bugs.webkit.org/show_bug.cgi?id=178475
        <rdar://problem/35066424>

        Reviewed by Chris Dumez.

        Relanding now that underlying issue is fixed in https://bugs.webkit.org/show_bug.cgi?id=178527.

        Preliminary support of Handle Fetch algorithm and integration with fetch spec.
        Adding ServiceWorkerClientFetch as the class responsible to do the load through ServiceWorker.
        It is similar to WebResourceLoader that do the load through NetworkProcess.
        In case ServiceWorkerClientFetch is not able to load through ServiceWorker,
        it will fallback to WebResourceLoader through a fallback callback.

        Loading through Service Worker is done currently if:
        - There is a service worker registered for that origin
        - Request is a subresource
        - service workers mode is all
        There will be cases where the service worker will not do the loading, for instance when fetch event handler is not set.
        Future work should try to reduce the cases where the IPC dance is done unnecessarily.

        ServiceWorkerClientFetch is responsible to adapt the ServiceWorker response to ResourceLoader.
        In particular, it is calling ResourceLoader error callback if response is of type error.
        It should call ResourceLoader redirection callback if response is a redirection response.
        This will be done as a follow-up.

        Implementing the IPC communication dedicated to fetch between WebProcess and ServiceWorker through StorageProcess.
        In the future, WebProcess should create a direct IPC communication to the ServiceWorker process.

        Moved SWContextManager from WebCore to WebKit and renamed it to ServiceWorkerContextManager.
        This class is moved to WebKit as it will have to handle IPC and having a separation will add some unnecessary boilerplate.

        * CMakeLists.txt:
        * DerivedSources.make:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::didFailFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFailFetch):
        (WebKit::StorageProcess::didReceiveFetchResponse):
        (WebKit::StorageProcess::didReceiveFetchData):
        (WebKit::StorageProcess::didFinishFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::remove):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp: Added.
        (WebKit::ServiceWorkerClientFetch::ServiceWorkerClientFetch):
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveData):
        (WebKit::ServiceWorkerClientFetch::didFinish):
        (WebKit::ServiceWorkerClientFetch::didFail):
        (WebKit::ServiceWorkerClientFetch::cancel):
        * WebProcess/Storage/ServiceWorkerClientFetch.h: Copied from Source/WebKit/WebProcess/Storage/WebSWClientConnection.h.
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in: Copied from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in.
        * WebProcess/Storage/ServiceWorkerContextManager.cpp: Added.
        (WebKit::ServiceWorkerContextManager::startServiceWorkerContext):
        (WebKit::ServiceWorkerContextManager::startFetch):
        * WebProcess/Storage/ServiceWorkerContextManager.h: Renamed from Source/WebCore/workers/service/context/SWContextManager.h.
        (WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::shouldHandleFetch):
        (WebKit::WebServiceWorkerProvider::handleFetch):
        (WebKit::WebServiceWorkerProvider::cancelFetch):
        (WebKit::WebServiceWorkerProvider::fetchFinished):
        (WebKit::WebServiceWorkerProvider::didReceiveServiceWorkerClientFetchMessage):
        * WebProcess/Storage/WebServiceWorkerProvider.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        (WebKit::WebProcess::startServiceWorkerContext):
        (WebKit::WebProcess::startFetchInServiceWorker):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-10-19  Youenn Fablet  <youenn@apple.com>

        Service Worker process should not be selected to open WebView on it
        https://bugs.webkit.org/show_bug.cgi?id=178527

        Reviewed by Chris Dumez.

        Selection of process to open a page will no longer use an existing web process if it is the service worker process.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):

2017-10-19  Tim Horton  <timothy_horton@apple.com>

        Display link bringup can block the main thread for ~150ms during WKWebView init
        https://bugs.webkit.org/show_bug.cgi?id=178524

        Reviewed by Dean Jackson.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::displayLinkHandler):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        Lazily initialize the display link at first use.

2017-10-19  Tim Horton  <timothy_horton@apple.com>

        Expand r209943 to suppress paste during provisional navigation as well
        https://bugs.webkit.org/show_bug.cgi?id=178429
        <rdar://problem/33952830>

        Reviewed by Dean Jackson.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetShouldSuppressKeyboardInputDuringProvisionalNavigation):
        (WKPreferencesGetShouldSuppressKeyboardInputDuringProvisionalNavigation):
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _shouldSuppressKeyboardInputDuringProvisionalNavigation]):
        (-[WKPreferences _setShouldSuppressKeyboardInputDuringProvisionalNavigation:]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        Adjust to the changed preference name, except at the SPI level.

2017-10-19  Youenn Fablet  <youenn@apple.com>

        Add API to clean CacheStorage data
        https://bugs.webkit.org/show_bug.cgi?id=178034

        Unreviewed.

        * UIProcess/API/Cocoa/WKWebsiteDataRecord.h: Using WK_IOS_TBA instead of WK_MAC_TBA for iOS.

2017-10-19  Chris Dumez  <cdumez@apple.com>

        Unreviewed build fix after r223692.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

2017-10-19  Chris Dumez  <cdumez@apple.com>

        Unreviewed, revert r223650 as it caused crashes on the bots.

        * CMakeLists.txt:
        * DerivedSources.make:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::remove):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp: Removed.
        * WebProcess/Storage/ServiceWorkerClientFetch.h: Removed.
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in: Removed.
        * WebProcess/Storage/ServiceWorkerContextManager.cpp: Removed.
        * WebProcess/Storage/WebSWClientConnection.cpp:
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        * WebProcess/Storage/WebServiceWorkerProvider.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        (WebKit::WebProcess::startServiceWorkerContext):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-10-19  Chris Dumez  <cdumez@apple.com>

        http/tests/workers/service/basic-register.html is a flaky failure.
        https://bugs.webkit.org/show_bug.cgi?id=178494
        <rdar://problem/35065315>

        Reviewed by Youenn Fablet.

        In WebSWServerConnection::resolveJobInClient(), when a service worker is
        registered, we:
        1. Add the origin to the WebSWOriginStore
        2. Send the IPC to the WebProcess to notify it that the registration succeeded.

        The assumption was that step 1 would be synchronous and would therefore send
        the shared memory handle to the WebProcess (if the SharedMemory was invalidated)
        *before* step 2.

        The issue is that step 1 was scheduling a zero-timer to schedule the addition.
        As a result, there was a race and the WebContent process could check the
        the WebSWOriginTable *after* being notified that a service worker was registered
        but *before* it received the SharedMemory handle for the WebSWOriginTable. This
        could lead to false negatives and was causing the layout test to be flaky.

        To address the issue, step 1 is now synchronous.

        * Shared/SharedStringHashStore.cpp:
        (WebKit::SharedStringHashStore::SharedStringHashStore):
        (WebKit::SharedStringHashStore::scheduleAddition):
        (WebKit::SharedStringHashStore::scheduleRemoval):
        (WebKit::SharedStringHashStore::contains):
        (WebKit::SharedStringHashStore::flushPendingChanges):
        (WebKit::SharedStringHashStore::processPendingOperations):
        * Shared/SharedStringHashStore.h:
        * StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
        (WebKit::WebSWOriginStore::add):
        (WebKit::WebSWOriginStore::addAll):
        (WebKit::WebSWOriginStore::remove):
        * StorageProcess/ServiceWorker/WebSWOriginStore.h:
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::addVisitedLinkHash):
        (WebKit::VisitedLinkStore::removeVisitedLinkHash):

2017-10-18  Ryosuke Niwa  <rniwa@webkit.org>

        Don't expose raw HTML in pasteboard to the web content
        https://bugs.webkit.org/show_bug.cgi?id=178422

        Reviewed by Wenson Hsieh.

        Encode & decode the origin string of the copied content written into the system pasteboard.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardWebContent>::encode):
        (IPC::ArgumentCoder<PasteboardWebContent>::decode):

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

        Implement ServiceWorkerRegistration.scope / updateViaCache
        https://bugs.webkit.org/show_bug.cgi?id=178497

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

2017-10-18  Youenn Fablet  <youenn@apple.com>

        Add preliminary support for ServiceWorker Handle Fetch
        https://bugs.webkit.org/show_bug.cgi?id=178475

        Reviewed by Chris Dumez.

        Preliminary support of Handle Fetch algorithm and integration with fetch spec.
        Adding ServiceWorkerClientFetch as the class responsible to do the load through ServiceWorker.
        It is similar to WebResourceLoader that do the load through NetworkProcess.
        In case ServiceWorkerClientFetch is not able to load through ServiceWorker,
        it will fallback to WebResourceLoader through a fallback callback.

        Loading through Service Worker is done currently if:
        - There is a service worker registered for that origin
        - Request is a subresource
        - service workers mode is all
        There will be cases where the service worker will not do the loading, for instance when fetch event handler is not set.
        Future work should try to reduce the cases where the IPC dance is done unnecessarily.

        ServiceWorkerClientFetch is responsible to adapt the ServiceWorker response to ResourceLoader.
        In particular, it is calling ResourceLoader error callback if response is of type error.
        It should call ResourceLoader redirection callback if response is a redirection response.
        This will be done as a follow-up.

        Implementing the IPC communication dedicated to fetch between WebProcess and ServiceWorker through StorageProcess.
        In the future, WebProcess should create a direct IPC communication to the ServiceWorker process.

        Moved SWContextManager from WebCore to WebKit and renamed it to ServiceWorkerContextManager.
        This class is moved to WebKit as it will have to handle IPC and having a separation will add some unnecessary boilerplate.

        * DerivedSources.make:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::failedFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::failedFetch):
        (WebKit::StorageProcess::didReceiveFetchResponse):
        (WebKit::StorageProcess::didReceiveFetchData):
        (WebKit::StorageProcess::didFinishFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp: Added.
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveData):
        (WebKit::ServiceWorkerClientFetch::didFinishFetch):
        (WebKit::ServiceWorkerClientFetch::didFail):
        * WebProcess/Storage/ServiceWorkerClientFetch.h: Added.
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in: Added.
        * WebProcess/Storage/ServiceWorkerContextManager.cpp: Renamed from Source/WebCore/workers/service/context/SWContextManager.cpp.
        (WebKit::ServiceWorkerContextManager::startServiceWorkerContext):
        (WebKit::ServiceWorkerContextManager::startFetch):
        * WebProcess/Storage/ServiceWorkerContextManager.h: Renamed from Source/WebCore/workers/service/context/SWContextManager.h.
        (WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::shouldHandleFetch):
        (WebKit::WebServiceWorkerProvider::handleFetch):
        (WebKit::WebServiceWorkerProvider::didReceiveServiceWorkerClientFetchMessage):
        * WebProcess/Storage/WebServiceWorkerProvider.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        (WebKit::WebProcess::startServiceWorkerContext):
        (WebKit::WebProcess::startFetchInServiceWorker):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-10-18  Chelsea Pugh  <cpugh@apple.com>

        [iOS] Use new class name from UIKit when checking UITextSuggestion type
        https://bugs.webkit.org/show_bug.cgi?id=178416
        <rdar://problem/35010840>

        Reviewed by Tim Horton.

        Here we start using UITextAutofillSuggestion instead of the old name that was being used for
        AutoFill text suggestions.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertTextSuggestion:]): Use UITextAutofillSuggestion when checking the class
        and when casting instead of UIKeyboardLoginCredentialsSuggestion.

2017-10-17  Jiewen Tan  <jiewen_tan@apple.com>

        Replace some stack raw pointers with RefPtrs within WebCore/html
        https://bugs.webkit.org/show_bug.cgi?id=178201
        <rdar://problem/34841692>

        Reviewed by Ryosuke Niwa.

        Change the type of node as toNode() is changed to return RefPtr.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivate.cpp:
        (WebKit::wrap):
        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        * WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::handleEditingKeyboardEvent):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::frameForEvent):

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

        [Service Worker] Add stubs for Client / WindowClient / Clients
        https://bugs.webkit.org/show_bug.cgi?id=178469

        Reviewed by Youenn Fablet.

        Rename PageVisibilityState to VisibilityState.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toVisibilityState):
        * WebProcess/WebPage/WebPage.h:

2017-10-18  John Wilander  <wilander@apple.com>

        Check notifyPagesWhenTelemetryWasCaptured before notifying pages if there is no WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=178470
        <rdar://problem/34417518>

        Reviewed by Brian Burg.

        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
            Add a missing check of notifyPagesWhenTelemetryWasCaptured.
            The page notification is only for testing purposes.

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

        Unreviewed, fix build error after r223608 with some SDKs.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::ensureSWOriginStoreForSession):

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

        Add an efficient data structure for WebCore to query if there is a Service Worker registered for a given origin
        https://bugs.webkit.org/show_bug.cgi?id=177876
        <rdar://problem/34813129>

        Reviewed by Ryosuke Niwa.

        Introduce a Service Worker origin store which gets populated / updated on the StorageProcess side
        and queried on the WebContent process side via the WebSWOriginTable so that the WebProcess can
        efficiently check if there is a ServiceWorker registered for a given origin without actually doing
        an IPC to the StorageProcess.

        For efficiency, the hash table is backed by SharedMemory so we only pass shared memory handles
        between the StorageProcess and the WebProcesses.

        We currently add entries to the WebSWOriginStore whenever a service worker registration succeeds
        on the StorageProcess side. We also clear this store whenever the API to clear service worker
        registrations is called. Code to query the WebSWOriginTable from the WebContent process side is
        there but currently only used by Internals for testing. We will later leverage this code when
        integrating with Fetch API.

        * CMakeLists.txt:
        * Shared/SharedStringHashStore.h:
        (WebKit::SharedStringHashStore::Client::didUpdateSharedStringHashes):
        * Shared/SharedStringHashTable.cpp:
        (WebKit::SharedStringHashTable::clear):
        * StorageProcess/ServiceWorker/WebSWOriginStore.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp.
        (WebKit::WebSWOriginStore::WebSWOriginStore):
        (WebKit::WebSWOriginStore::add):
        (WebKit::WebSWOriginStore::remove):
        (WebKit::WebSWOriginStore::clear):
        (WebKit::WebSWOriginStore::registerSWServerConnection):
        (WebKit::WebSWOriginStore::unregisterSWServerConnection):
        (WebKit::WebSWOriginStore::sendStoreHandle):
        (WebKit::WebSWOriginStore::didInvalidateSharedMemory):
        * StorageProcess/ServiceWorker/WebSWOriginStore.h: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h.
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::resolveJobInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        (WebKit::WebSWServerConnection::sessionID const):
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::ensureSWOriginStoreForSession):
        (WebKit::StorageProcess::swOriginStoreForSession const):
        (WebKit::StorageProcess::serviceWorkerContextStarted):
        (WebKit::StorageProcess::registerSWServerConnection):
        (WebKit::StorageProcess::unregisterSWServerConnection):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        (WebKit::WebSWClientConnection::hasServiceWorkerRegisteredForOrigin const):
        (WebKit::WebSWClientConnection::setSWOriginTableSharedMemory):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/Storage/WebSWOriginTable.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h.
        (WebKit::WebSWOriginTable::contains const):
        (WebKit::WebSWOriginTable::setSharedMemory):
        * WebProcess/Storage/WebSWOriginTable.h: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h.
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebServiceWorkerProvider.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::startServiceWorkerContext):

2017-10-16  Andy Estes  <aestes@apple.com>

        [Apple Pay] Add subLocality and subAdministrativeArea to ApplePayPaymentContact and ApplePayError
        https://bugs.webkit.org/show_bug.cgi?id=178191
        <rdar://problem/34906367>

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSError):

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

        [Settings] Generate Settings.h/cpp
        https://bugs.webkit.org/show_bug.cgi?id=178361

        Reviewed by Dean Jackson.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

            Delete the old Settings.h from the forwarding 
            headers directory to allow the build to work.

2017-10-17  John Wilander  <wilander@apple.com>

        Add and remove cookie partition accordingly in intermediary redirect requests
        https://bugs.webkit.org/show_bug.cgi?id=178369
        <rdar://problem/34467603>

        Reviewed by Brent Fulgham.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::shouldChangePartition):
            Convenience function. Comment documents the logic.
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
            Now adds and removes cookie partition based on the
            redirect-to URL's domain.
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleResourceLoadStatisticsNotifyObserver):
            Test infrastructure.
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:

2017-10-17  Youenn Fablet  <youenn@apple.com>

        Cache API implementation should be able to compute storage size for WebKit client applications.
        https://bugs.webkit.org/show_bug.cgi?id=178350

        Reviewed by Chris Dumez.

        When gathering data from DOM Cache, we compute the size as follows:
        - If Caches object is not persistent, size is zero
        - If Caches object is persistent, we use the size computed by NetworkCache::Storage. 
        Covered by updated tests.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::ReadOriginsTaskCounter::create):
        (WebKit::CacheStorage::ReadOriginsTaskCounter::addOrigin):
        (WebKit::CacheStorage::Engine::fetchEntries):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::storageSize const):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreGetFetchCacheSizeForOrigin):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2017-10-17  Keith Miller  <keith_miller@apple.com>

        Change WebCore sources to work with unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=178229

        Rubber stamped by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2017-10-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOS build after r223431

        Remove an unused variable captured in a lambda.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

2017-10-12  Matt Rajca  <mrajca@apple.com>

        Add API support for quirk that lets an arbitrary click allow auto-play.
        https://bugs.webkit.org/show_bug.cgi?id=178227

        Reviewed by Alex Christensen.

        Instead of hardcoding sites in WebCore, let API clients control which websites opt into the quirk that lets
        an arbitrary click allow auto-play via website policies.

        * Shared/WebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesSetAllowedAutoplayQuirks):
        (WKWebsitePoliciesGetAllowedAutoplayQuirks):
        * UIProcess/API/C/WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
        (-[_WKWebsitePolicies allowedAutoplayQuirks]):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateWebsitePolicies):

2017-10-16  Andy Estes  <aestes@apple.com>

        [Apple Pay] Add subLocality and subAdministrativeArea to ApplePayPaymentContact and ApplePayError
        https://bugs.webkit.org/show_bug.cgi?id=178191
        <rdar://problem/34906367>

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSError):

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

        Safari crashes after searching PDF (under [WKPDFView zoom:to:atPoint:kind:])
        https://bugs.webkit.org/show_bug.cgi?id=178358
        <rdar://problem/34676899>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _didFindMatch:]):
        UIPDFSelection can return a null rect as the selection's bounds.
        We can't zoom to a null rect (and doing so results in CA throwing an
        exception later).

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

        Add a _WKThumbnailView initializer with a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=178351
        <rdar://problem/34979453>

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _page]):
        (-[WKWebView _setThumbnailView:]):
        (-[WKWebView _thumbnailView]):
        (-[WKWebView _setIgnoresAllEvents:]):
        (-[WKWebView _ignoresAllEvents]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKThumbnailView.h:
        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        (-[_WKThumbnailView initWithFrame:fromWKWebView:]):
        (-[_WKThumbnailView _viewWasUnparented]):
        (-[_WKThumbnailView _viewWasParented]):

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

        Expose more WKView properties as WKWebViewPrivate SPI
        https://bugs.webkit.org/show_bug.cgi?id=178349
        <rdar://problem/34980919>

        Reviewed by Tim Horton.

        _backgroundExtendsBeyondPage was already exposed on iOS, but we need it on Mac, too.
        A few other properties also need exposing.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (toAPIScrollbarStyle):
        (toCoreScrollbarStyle):
        (-[WKWebView _setBackgroundExtendsBeyondPage:]):
        (-[WKWebView _backgroundExtendsBeyondPage]):
        (-[WKWebView _setOverlayScrollbarStyle:]):
        (-[WKWebView _overlayScrollbarStyle]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

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

        Log using differential privacy domains where the WebContent process crashes
        https://bugs.webkit.org/show_bug.cgi?id=178346
        <rdar://problem/33293830>

        Reviewed by Alex Christensen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::currentURL const):
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didClose):

2017-10-16  Youenn Fablet  <youenn@apple.com>

        Activate Cache API by default
        https://bugs.webkit.org/show_bug.cgi?id=178186

        Reviewed by Chris Dumez.

        * Shared/WebPreferencesDefinitions.h:

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

        [Settings] Remove all custom code from Settings.h/cpp
        https://bugs.webkit.org/show_bug.cgi?id=178330

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetFrameFlatteningEnabled):
        (WKPreferencesGetFrameFlatteningEnabled):
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_get_enable_frame_flattening):
        (webkit_settings_set_enable_frame_flattening):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setFrameFlatteningEnabled):
        
            Update for naming changes of FrameFlattening now that it is an enum class.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged const):

            Ge the effectiveFrameFlattening from the FrameView, rather than the Settings.

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

        [WK2][NetworkSession] Add support for resuming downloads
        https://bugs.webkit.org/show_bug.cgi?id=177625
        <rdar://problem/34345975>

        Reviewed by Alex Christensen.

        Add support for resuming downloads for the WK2 NETWORK_SESSION code path.

        This was tested manually. I was unable to write an API test because our tests
        do not run an HTTP server and CFNetwork does not seem to generate resume data
        when cancelling a download over non-HTTP.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::didReceiveChallenge):
        (WebKit::Download::continueCanAuthenticateAgainstProtectionSpace):
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace):
        (WebKit::DownloadManager::resumeDownload):
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
        This currently includes a workaround for <rdar://problem/34745171>. We update the
        resume data to include the NSURLSessionResumeInfoLocalPath key with the final
        destination path so that CFNetwork looks for the temporary data at the right
        location.

        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (WebKit::NetworkSessionCocoa::downloadTaskWithResumeData):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
        * Shared/Authentication/AuthenticationManager.h:

2017-10-16  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Build failure due to invalid cast of EGLNativeWindowType when targetting 64-bit ARM
        https://bugs.webkit.org/show_bug.cgi?id=178090

        Reviewed by Michael Catanzaro.

        EGLNativeWindowType can be aliased to a different type depending (at least) on the EGL
        implementation, its build options, and the libepoxy build options.  Using "static_cast"
        works when it is a numeric value and the width of the value needs to be optionally
        extended to 64 bits (e.g. the EGL type is "int" in a 32-bit CPU) but not for pointers,
        and using "reinterpret_cast" works when the size of a pointer is 64 bits but not in other
        cases. Therefore it seems reasonable to use a plain C cast expression to solve this
        particular situation.

        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::window const): Use a good old plain C cast expression.

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

        Clicks on Link with download attribute causes all (other) links to trigger download when clicked
        https://bugs.webkit.org/show_bug.cgi?id=178267
        <rdar://problem/34985016>

        Reviewed by Darin Adler.

        When clicking on an anchor with the download attribute, the m_syncNavigationActionHasDownloadAttribute
        flag on WebPageProxy would get set. This flag would not get reset right away and instead, it would get
        updated during the next call to WebPageProxy::decidePolicyForNavigationAction(). The issue is that if
        you later click on a link with target="_blank", WebPageProxy::decidePolicyForNewWindowAction() gets
        called instead of WebPageProxy::decidePolicyForNavigationAction() and we do not reset the
        m_syncNavigationActionHasDownloadAttribute flag and we force a download.

        To address the problem, I got rid of this flag on WebPageProxy and it is error-prone and should really
        not be at page-level. Instead, I added a shouldForceDownload flag on the navigation object. It makes
        more sense to associate the flag with the navigation and makes it less error-prone.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::setShouldForceDownload):
        (API::Navigation::shouldForceDownload const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:

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

        Unreviewed, rolling out r223271.

        This change introduced LayoutTest failures on WK1.

        Reverted changeset:

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

2017-10-13  Youenn Fablet  <youenn@apple.com>

        Implement listing origins for which CacheStorage is storing data
        https://bugs.webkit.org/show_bug.cgi?id=178236

        Reviewed by Chris Dumez.

        Cache storage is split on per-origin folders which name is obfuscated through salting.
        To retrieve the origin for each folder, an origin file is now stored within each folder.
        This file contains the actual origin.

        Adding support to get the list of origin by iterating through each folder and
        getting the actual origin by reading the content of the 'origin' file.

        Adding C API for WebKitTestRunner.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::fetchEntries):
        (WebKit::CacheStorage::ReadOriginsTaskCounter::create):
        (WebKit::CacheStorage::ReadOriginsTaskCounter::~ReadOriginsTaskCounter):
        (WebKit::CacheStorage::ReadOriginsTaskCounter::addOrigin):
        (WebKit::CacheStorage::ReadOriginsTaskCounter::ReadOriginsTaskCounter):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::cachesOriginFilename):
        (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::storeOrigin):
        (WebKit::CacheStorage::Caches::readOrigin):
        (WebKit::CacheStorage::Caches::initialize):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::origin const):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreGetFetchCacheOrigins):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

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

        Fix API tests after r223269.
        https://bugs.webkit.org/show_bug.cgi?id=178246

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::ContentRuleListStore::getContentRuleListSource):
        Version 10 also has the ability to recover content rule list source.

2017-10-11  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>

        [GLib] WebKitNavigationAction should tell whether it is a redirect
        https://bugs.webkit.org/show_bug.cgi?id=178178

        There is no good way to know whether a given navigation action has been caused
        by a redirect through the glib API. This is necessary to implement some app mode
        heuristics for Epiphany.

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/glib/WebKitNavigationAction.cpp:
        (webkit_navigation_action_is_redirect): returns whether the navigation action is a redirect.
        * UIProcess/API/glib/WebKitNavigationActionPrivate.h: add isRedirect to the wrapper object.
        (_WebKitNavigationAction::_WebKitNavigationAction):
        * UIProcess/API/gtk/WebKitNavigationAction.h: add the new API.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: ditto.
        * UIProcess/API/wpe/WebKitNavigationAction.h: ditto.

2017-10-12  Brady Eidson  <beidson@apple.com>

        SW "Hello world".
        https://bugs.webkit.org/show_bug.cgi?id=178187

        Reviewed by Andy Estes.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::startServiceWorkerContext):

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

        Remove unnecessary includes in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=178235

        Reviewed by Tim Horton.

        * Platform/IPC/ArgumentCoders.h:
        * WebProcess/WebProcess.cpp:
        * WebProcess/WebStorage/StorageAreaImpl.h:

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

        Increment ContentRuleListStore::CurrentContentRuleListFileVersion
        https://bugs.webkit.org/show_bug.cgi?id=178246
        <rdar://problem/34890057>

        Reviewed by Tim Horton.

        * UIProcess/API/APIContentRuleListStore.h:
        Things are crashing.  Something isn't binary reverse compatible.
        Probably something related to r222602.
        This is why we have a version number to update.

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

        Expose some of WKView's WebViewImpl accessors through WKWebViewPrivate
        https://bugs.webkit.org/show_bug.cgi?id=178240
        <rdar://problem/34962720>

        Reviewed by Tim Horton.
        
        Also renamed createFullScreenWindow to fullScreenWindow to reflect the fact that it returns
        an autoreleased NSWindow so we don't make the same naming mistake in the WKWebView SPI.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _dismissContentRelativeChildWindows]):
        (-[WKWebView _setFrame:andScrollBy:]):
        (-[WKWebView _setTotalHeightOfBanners:]):
        (-[WKWebView _totalHeightOfBanners]):
        (-[WKWebView _beginDeferringViewInWindowChanges]):
        (-[WKWebView _endDeferringViewInWindowChanges]):
        (-[WKWebView _endDeferringViewInWindowChangesSync]):
        (-[WKWebView _gestureEventWasNotHandledByWebCore:]):
        (-[WKWebView _setIgnoresNonWheelEvents:]):
        (-[WKWebView _ignoresNonWheelEvents]):
        (-[WKWebView _setCustomSwipeViews:]):
        (-[WKWebView _setCustomSwipeViewsTopContentInset:]):
        (-[WKWebView _tryToSwipeWithEvent:ignoringPinnedState:]):
        (-[WKWebView _setDidMoveSwipeSnapshotCallback:]):
        (-[WKWebView _fullScreenPlaceholderView]):
        (-[WKWebView _fullScreenWindow]):
        (-[WKWebView _disableFrameSizeUpdates]):
        (-[WKWebView _enableFrameSizeUpdates]):
        (-[WKWebView _canChangeFrameLayout:]):
        (-[WKWebView _underlayColor]):
        (-[WKWebView _setUnderlayColor:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView createFullScreenWindow]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::fullScreenWindowController):
        (WebKit::WebViewImpl::fullScreenWindow):
        (WebKit::WebViewImpl::createFullScreenWindow): Deleted.

2017-10-12  Youenn Fablet  <youenn@apple.com>

        Layout Test http/tests/cache-storage/cache-clearing.https.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=178200

        Reviewed by Chris Dumez.

        Deleting only the per-origin folders inside the CacheStorage engine root folder.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::clearAllCaches):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllFetchCaches):
        (WKWebsiteDataStoreRemoveFetchCacheForOrigin):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2017-10-12  Chris Dumez  <cdumez@apple.com>

        [Mac] Add support for MouseEvent.buttons
        https://bugs.webkit.org/show_bug.cgi?id=178214

        Reviewed by Ryosuke Niwa.

        * Shared/WebEvent.h:
        (WebKit::WebMouseEvent::buttons const):
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
        * Shared/WebMouseEvent.cpp:
        (WebKit::WebMouseEvent::WebMouseEvent):
        (WebKit::WebMouseEvent::encode const):
        (WebKit::WebMouseEvent::decode):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::currentlyPressedMouseButtons):
        (WebKit::WebEventFactory::createWebMouseEvent):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showContextMenuAtPoint):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::createWebEvent const):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPage::simulateMouseDown):
        (WebKit::WebPage::simulateMouseUp):
        (WebKit::WebPage::simulateMouseMotion):

2017-10-12  Youenn Fablet  <youenn@apple.com>

        Add API to clean CacheStorage data
        https://bugs.webkit.org/show_bug.cgi?id=178034

        Unreviewed.

        * Shared/WebsiteData/WebsiteDataType.h: fixing the DOMCache value. 

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

        [WinCairo] add WebProcess files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=178024

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:
        * WebProcess/Cookies/curl/WebCookieManagerCurl.cpp: Added.
        (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManager::platformGetHTTPCookieAcceptPolicy):
        * WebProcess/InjectedBundle/win/InjectedBundleWin.cpp: Added.
        (WebKit::InjectedBundle::initialize):
        (WebKit::InjectedBundle::setBundleParameter):
        (WebKit::InjectedBundle::setBundleParameters):
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        * WebProcess/Plugins/Netscape/win/PluginProxyWin.cpp: Added.
        (WebKit::PluginProxy::needsBackingStore const):
        * WebProcess/WebCoreSupport/win/WebContextMenuClientWin.cpp: Added.
        (WebKit::WebContextMenuClient::lookUpInDictionary):
        (WebKit::WebContextMenuClient::isSpeaking):
        (WebKit::WebContextMenuClient::speak):
        (WebKit::WebContextMenuClient::stopSpeaking):
        * WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.cpp: Added.
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::WebFrameNetworkingContext::WebFrameNetworkingContext):
        (WebKit::WebFrameNetworkingContext::storageSession const):
        (WebKit::WebFrameNetworkingContext::webFrameLoaderClient const):
        (WebKit::WebFrameNetworkingContext::blockedError const):
        * WebProcess/WebCoreSupport/win/WebFrameNetworkingContext.h: Added.
        (WebKit::WebFrameNetworkingContext::create):
        * WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp: Added.
        (WebKit::WebPopupMenu::setUpPlatformData):
        * WebProcess/WebPage/win/WebInspectorUIWin.cpp: Added.
        (WebKit::WebInspectorUI::canSave):
        (WebKit::WebInspectorUI::localizedStringsURL):
        (WebKit::RemoteWebInspectorUI::localizedStringsURL):
        * WebProcess/WebPage/win/WebPageWin.cpp: Added.
        (WebKit::WebPage::platformInitialize):
        (WebKit::WebPage::platformDetach):
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::platformPreferencesDidChange):
        (WebKit::WebPage::performDefaultBehaviorForKeyEvent):
        (WebKit::WebPage::platformHasLocalDataForURL):
        (WebKit::WebPage::cachedResponseMIMETypeForURL):
        (WebKit::WebPage::platformCanHandleRequest):
        (WebKit::WebPage::cachedSuggestedFilenameForURL):
        (WebKit::WebPage::cachedResponseDataForURL):
        (WebKit::WebPage::platformUserAgent const):
        (WebKit::WebPage::interpretKeyEvent):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
        * WebProcess/win/WebProcessWin.cpp: Added.
        (loadResourceIntoBuffer):
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::platformTerminate):
        (WebKit::WebProcess::platformSetCacheModel):

2017-10-12  David Kilzer  <ddkilzer@apple.com>

        [iOS] Fix -Wunused-lambda-capture warnings in WebCore/WebKit with new clang compiler
        <https://webkit.org/b/178226>

        Reviewed by Chris Fleizach.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]):
        - Remove unused lambda variable 'touch' which was also passed as
          an argument.
        (-[WKContentView changeSelectionWithTouchesFrom:to:withGesture:withState:]):
        - Remove unused lambda variable 'gestureState' which was also
          passed as an argument.
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        - Remove unused lambda variable 'location'.

2017-10-12  John Wilander  <wilander@apple.com>

        ResourceLoadObserver::logFrameNavigation() should use redirectResponse.url()
        https://bugs.webkit.org/show_bug.cgi?id=175257
        <rdar://problem/33359866>

        Reviewed by Brent Fulgham.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsSubFrameUnder:topFrameHost:completionHandler:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsRedirectingTo:hostRedirectedTo:completionHandler:]):
            Test infrastructure.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
            Test infrastructure.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-10-12  Andy Estes  <aestes@apple.com>

        [iOS] Conditionally rename DatabaseProcess to StorageProcess when building for iOS devices
        https://bugs.webkit.org/show_bug.cgi?id=178181
        <rdar://problem/33660282>

        Reviewed by Dan Bernstein.

        * Configurations/BaseTarget.xcconfig:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        * WebKit.xcodeproj/project.pbxproj:

2017-10-12  Youenn Fablet  <youenn@apple.com>

        CacheStorage persistent folder should be in /Library/Cache
        https://bugs.webkit.org/show_bug.cgi?id=178193

        Reviewed by Brady Eidson.

        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultCacheStorageDirectory): Making CacheStorage
        directory a subfolder of Caches folder.
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):
        (WebKit::WebProcessPool::ensureNetworkProcess): Make sure the web site data store
        has the right cache directory path. Also make sure that the quota is set even if there is no folder specified.
        Quota may still be useful in case of non persistent sessions.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        (API::WebsiteDataStore::defaultCacheStorageDirectory):

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

        Remove out-parameter variants of copyToVector
        https://bugs.webkit.org/show_bug.cgi?id=178155

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/_WKRemoteObjectInterface.mm:
        (-[_WKRemoteObjectInterface debugDescription]):
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::dump):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::pendingCookies const):
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager _notifyClientsOfImminentSuspension]):
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        (WebKit::WebGeolocationManager::didChangePosition):
        (WebKit::WebGeolocationManager::didFailToDeterminePosition):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::internallyFailedLoadTimerFired):

            Replace out-parameter based copyToVector, with one that returns a Vector.

2017-10-11  Jaehun Lim  <ljaehun.lim@samsung.com>

        Fix debug build

        Unreviewed.

        Add ENABLE(SERVICE_WORKER) guard.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2017-10-11  Youenn Fablet  <youenn@apple.com>

        Add API to clean CacheStorage data
        https://bugs.webkit.org/show_bug.cgi?id=178034

        Unreviewed.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::fetchWebsiteData): Fixing lifetime of aggregator.

2017-10-11  Youenn Fablet  <youenn@apple.com>

        Add API to clean CacheStorage data
        https://bugs.webkit.org/show_bug.cgi?id=178034

        Reviewed by Chris Dumez.

        Introducing a new website data type for DOMCache.
        Adding API to delete DOMCache for a given origin or for all origins.
        This is added to WKWebsiteDataStore.

        Cleaning a CacheStorage will remove all data in the Cache object but the object will stay live
        for the duration of the NetworkProcess.
        This allows ensuring that once a cache is cleaned, WebProcess will update to this new state.

        Fetching of WebsiteData for DOMCache is not implemented yet since we do not keep a list of all origins for which we have data.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::fetchDOMCacheEntries):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::cachesRootPath):
        (WebKit::CacheStorage::Engine::fetchEntries):
        (WebKit::CacheStorage::ClearTasksHandler::ClearTasksHandler):
        (WebKit::CacheStorage::ClearTasksHandler::~ClearTasksHandler):
        (WebKit::CacheStorage::Engine::clearEngines):
        (WebKit::CacheStorage::Engine::clearCachesForOrigins):
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        (WebKit::CacheStorage::deleteFolder):
        (WebKit::CacheStorage::Engine::clearCaches):
        (WebKit::CacheStorage::Engine::unlock): Removing the assertion as Cache objects are removed when clearing data.
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::clear):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::create):
        * Shared/WebsiteData/WebsiteDataType.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllDOMCaches):
        (WKWebsiteDataStoreRemoveDOMCacheForOrigin):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
        (dataTypesToString):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
        (WebKit::toWebsiteDataType):
        (WebKit::toWKWebsiteDataTypes):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore allWebsiteDataTypes]):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):

2017-10-11  Chris Dumez  <cdumez@apple.com>

        [Geolocation] Expose Coordinates.floorLevel
        https://bugs.webkit.org/show_bug.cgi?id=178173
        <rdar://problem/34918936>

        Reviewed by Ryosuke Niwa.

        * UIProcess/API/C/WKGeolocationPosition.cpp:
        (WKGeolocationPositionCreate):
        (WKGeolocationPositionCreate_b):
        (WKGeolocationPositionCreate_c):
        * UIProcess/API/C/WKGeolocationPosition.h:

2017-10-11  Youenn Fablet  <youenn@apple.com>

        Bump default cache storage quota to 20MB
        https://bugs.webkit.org/show_bug.cgi?id=178132

        Reviewed by Alex Christensen.

        Adding the ability to set the quota per origin through WebsiteDataStore.
        Moving cache storage directory setting also in WebsiteDataStore.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _cacheStoragePerOriginQuota]):
        (-[WKWebsiteDataStore _setCacheStoragePerOriginQuota:]):
        (-[WKWebsiteDataStore _cacheStorageDirectory]):
        (-[WKWebsiteDataStore _setCacheStorageDirectory:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::cacheStoragePerOriginQuota const):
        (WebKit::WebsiteDataStore::setCacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStore::cacheStorageDirectory const):
        (WebKit::WebsiteDataStore::setCacheStorageDirectory):

2017-10-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Allow PAL to log messages
        https://bugs.webkit.org/show_bug.cgi?id=171523

        Reviewed by Alex Christensen.

        * Platform/Logging.h:
        * Scripts/generate-forwarding-headers.pl:

2017-10-11  Ryosuke Niwa  <rniwa@webkit.org>

        Sanitize URL in pasteboard for other applications and cross origin content
        https://bugs.webkit.org/show_bug.cgi?id=178060
        <rdar://problem/34874518>

        Reviewed by Wenson Hsieh.

        Plubmed the origin identifier through IPC from Pasteboard in WebContent process to PlatformPasteboard in UIProcess.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        * UIProcess/WebPasteboardProxy.cpp:
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::typesSafeForDOMToReadAndWrite):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-10-11  Chris Dumez  <cdumez@apple.com>

        Modernize Geolocation code
        https://bugs.webkit.org/show_bug.cgi?id=178148

        Reviewed by Ryosuke Niwa.

        * Shared/WebGeolocationPosition.cpp:
        (WebKit::WebGeolocationPosition::create):
        (WebKit::WebGeolocationPosition::~WebGeolocationPosition):
        * Shared/WebGeolocationPosition.h:
        (WebKit::WebGeolocationPosition::timestamp const):
        (WebKit::WebGeolocationPosition::latitude const):
        (WebKit::WebGeolocationPosition::longitude const):
        (WebKit::WebGeolocationPosition::accuracy const):
        (WebKit::WebGeolocationPosition::altitude const):
        (WebKit::WebGeolocationPosition::altitudeAccuracy const):
        (WebKit::WebGeolocationPosition::heading const):
        (WebKit::WebGeolocationPosition::speed const):
        (WebKit::WebGeolocationPosition::corePosition const):
        (WebKit::WebGeolocationPosition::WebGeolocationPosition):
        * UIProcess/API/C/WKGeolocationPosition.cpp:
        (WKGeolocationPositionCreate_b):
        * UIProcess/API/Cocoa/_WKGeolocationPosition.mm:
        (WebKit::wrapper):
        * UIProcess/API/glib/WebKitGeolocationProvider.cpp:
        (WebKit::WebKitGeolocationProvider::notifyPositionChanged):
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::providerDidChangePosition):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKLegacyCoreLocationProvider positionChanged:]):
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        (WebKit::WebGeolocationManager::didChangePosition):
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/Geolocation/WebGeolocationManager.messages.in:
        * WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
        (WebKit::WebGeolocationClient::lastPosition):
        * WebProcess/WebCoreSupport/WebGeolocationClient.h:

2017-10-11  Brady Eidson  <beidson@apple.com>

        Add a SW context process (where SW scripts will actually execute).
        https://bugs.webkit.org/show_bug.cgi?id=178156

        Reviewed by Andy Estes.

        This patch adds an auxiliary "ServiceWorker context" WebProcess to a WebProcessPool.

        This process is where ServiceWorker scripts will execute, separate from the client WebProcess
        hosting the page(s) they are serving.

        This patch also adds all of the plumbing to pass along a fetched service worker script to this
        context WebProcess, as well as message back failure to actually start the script so we can test.

        Touches lots of code sites but is basically just a lot of plumbing.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::startServiceWorkerContext):
        (WebKit::WebSWServerConnection::sendToContextProcess):
        (WebKit::WebSWServerConnection::setContextConnection):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::workerContextProcessConnection):
        (WebKit::StorageProcess::createWorkerContextProcessConnection):
        (WebKit::StorageProcess::didGetWorkerContextProcessConnection):
        (WebKit::StorageProcess::serviceWorkerContextFailedToStart):
        (WebKit::StorageProcess::registerSWServerConnection):
        (WebKit::StorageProcess::unregisterSWServerConnection):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::removeSWServerConnection):
        (WebKit::StorageToWebProcessConnection::workerContextProcessConnectionCreated):
        * StorageProcess/StorageToWebProcessConnection.h:

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::create):
        (WebKit::StorageProcessProxy::StorageProcessProxy):
        (WebKit::StorageProcessProxy::didClose):
        (WebKit::StorageProcessProxy::getWorkerContextProcessConnection):
        (WebKit::StorageProcessProxy::didGetWorkerContextProcessConnection):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::getWorkerContextProcessConnection):
        (WebKit::WebProcessPool::didGetWorkerContextProcessConnection):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::createWebPage):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didGetWorkerContextConnection):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getWorkerContextConnection):
        (WebKit::WebProcess::startServiceWorkerContext):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        Remove ENABLE_NETWORK_CACHE
        https://bugs.webkit.org/show_bug.cgi?id=177424

        Reviewed by Antti Koivisto.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::storeDerivedDataToCache):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::fetchDiskCacheEntries):
        (WebKit::clearDiskCacheEntries):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::cache):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::canUseCachedRedirect const):
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        (WebKit::NetworkResourceLoader::abort):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::didFailLoading):
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        (WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        * NetworkProcess/cache/NetworkCacheBlobStorage.h:
        * NetworkProcess/cache/NetworkCacheCoders.cpp:
        * NetworkProcess/cache/NetworkCacheCoders.h:
        * NetworkProcess/cache/NetworkCacheCodersCocoa.cpp:
        * NetworkProcess/cache/NetworkCacheCodersSoup.cpp:
        * NetworkProcess/cache/NetworkCacheData.cpp:
        * NetworkProcess/cache/NetworkCacheData.h:
        * NetworkProcess/cache/NetworkCacheDataCocoa.mm:
        * NetworkProcess/cache/NetworkCacheDataSoup.cpp:
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        * NetworkProcess/cache/NetworkCacheEntry.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheIOChannel.h:
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        * NetworkProcess/cache/NetworkCacheKey.cpp:
        * NetworkProcess/cache/NetworkCacheKey.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        * NetworkProcess/cache/NetworkCacheStatistics.h:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::clearDiskCache):
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::clearCacheForAllOrigins):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::clearDiskCache):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::registerUserDefaultsIfNeeded):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
        (WebKit::WebProcessPool::isNetworkCacheEnabled):
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache):
        * config.h:

2017-10-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r223146.

        Better to not expose cairo in the WPE API

        Reverted changeset:

        "[WPE] Header cairo.h is used in GLib API headers but cannot
        be found"
        https://bugs.webkit.org/show_bug.cgi?id=178100
        http://trac.webkit.org/changeset/223146

2017-09-27  Frederic Wang  <fwang@igalia.com>

        [iOS] Do not flatten frames when async frame scrolling is enabled
        https://bugs.webkit.org/show_bug.cgi?id=173704

        Reviewed by Simon Fraser.

        This patch disables frame flattening when async frame scrolling is enabled on iOS, as
        otherwise you can not scroll them. Once iframe scrolling is implemented in iOS (bug 149264),
        developers and beta testers will be able to check it by enabling "Async Frame Scrolling"
        in the "Experimental WebKit Features" menu of Safari iOS.

        Test: platform/ios/fast/frames/flattening/iframe-flattening-with-async-frame-scrolling.html

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged): Use effectiveFrameFlattening() introduced in
        Source/WebCore.

2017-10-10  Ryosuke Niwa  <rniwa@webkit.org>

        Enable custom pasteboard data in DumpRenderTree and WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=178154

        Reviewed by Wenson Hsieh.

        Plumbed customPasteboardDataEnabled flag to be used in WebKitTestRunner.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetCustomPasteboardDataEnabled):
        (WKPreferencesGetCustomPasteboardDataEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Remove the possibility of installing the old WebKit2 C API
        https://bugs.webkit.org/show_bug.cgi?id=178125

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake: Remove support for installing the deprecated C API.

2017-10-10  Chris Dumez  <cdumez@apple.com>

        [WK2] Add API to clear service worker registrations
        https://bugs.webkit.org/show_bug.cgi?id=178085
        <rdar://problem/34866025>

        Reviewed by Ryosuke Niwa.

        Add API to clear service worker registrations. Although the request to
        clear the registration is passed on to the StorageProcess, it is currently
        a no-op on StorageProcess side until we actually persist service worker
        registrations on disk.

        * Shared/WebsiteData/WebsiteDataType.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
        (dataTypesToString):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
        (WebKit::toWebsiteDataType):
        (WebKit::toWKWebsiteDataTypes):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore allWebsiteDataTypes]):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):

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

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

        Breaks the build when EGLNativeWindowType is a pointer
        (Requested by aperezdc on #webkit).

        Reverted changeset:

        "[WPE] Build failure due to invalid cast of
        EGLNativeWindowType when targetting 64-bit ARM"
        https://bugs.webkit.org/show_bug.cgi?id=178090
        http://trac.webkit.org/changeset/223130

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

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

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::dumpChangedLayers):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextInvalidateCustomProtocolRequests):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseContainerForall):
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry _mimeTypesWithCustomContentProviders]):
        * UIProcess/GenericCallback.h:
        (WebKit::invalidateCallbackMap):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::shutDown):
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::didBecomeUnresponsive):
        (WebKit::WebProcessProxy::didBecomeResponsive):
        (WebKit::WebProcessProxy::willChangeIsResponsive):
        (WebKit::WebProcessProxy::didChangeIsResponsive):
        (WebKit::WebProcessProxy::disconnectFramesFromPage):
        (WebKit::WebProcessProxy::frameCountInPage const):
        (WebKit::WebProcessProxy::requestTermination):
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::invalidate):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::stopAllStreams):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::cancelAllStreams):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::buildTransaction):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didClose):

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Header cairo.h is used in GLib API headers but cannot be found
        https://bugs.webkit.org/show_bug.cgi?id=178100

        Reviewed by Michael Catanzaro.

        * wpe/wpe-webkit.pc.in: Add Cairo to the "Requires" field, so its flags get pulled
        in and the "cairo.h", used in the WPE WebKit GLib API headers, can be found.

2017-10-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        CSS constant properties should not be enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=177416

        Reviewed by Darin Adler.

        * Shared/WebPreferencesDefinitions.h:

2017-10-10  Brady Eidson  <beidson@apple.com>

        Random StorageProcess and SWServer cleanup.
        https://bugs.webkit.org/show_bug.cgi?id=178141

        Reviewed by Andy Estes.

        -StorageProcess should own the set of SWServers
        -Some renaming and cleanup

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::swServerForSession):
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::queue):

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        * StorageProcess/StorageToWebProcessConnection.h:

2017-10-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r223136.

        Forgot to update GTK API header

        Reverted changeset:

        "[WPE] Header cairo.h is used in GLib API headers but cannot
        be found"
        https://bugs.webkit.org/show_bug.cgi?id=178100
        http://trac.webkit.org/changeset/223136

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Header cairo.h is used in GLib API headers but cannot be found
        https://bugs.webkit.org/show_bug.cgi?id=178100

        Reviewed by Žan Doberšek.

        Instead of including <cairo.h>, it is better to forward-declare cairo_surface_t,
        which is the one and only Cairo declaration needed by the WPE API header.

        * UIProcess/API/glib/WebKitFaviconDatabase.cpp: Add inclusion of <cairo.h>.
        * UIProcess/API/glib/WebKitWebView.cpp: Add inclusion of <cairo.h>.
        * UIProcess/API/wpe/WebKitFaviconDatabase.h: Add forward declaration of cairo_surface_t.

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Cannot link against libWPEWebkit due to wrong contents of wpe-webkit.pc
        https://bugs.webkit.org/show_bug.cgi?id=178133

        Reviewed by Žan Doberšek.

        * wpe/wpe-webkit.pc.in: Remove "-lWPE" and replace "Requires.private" with a plain "Requires".

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Build failure due to invalid cast of EGLNativeWindowType when targetting 64-bit ARM
        https://bugs.webkit.org/show_bug.cgi?id=178090

        Reviewed by Žan Doberšek.

        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::window const): Use static_cast instead of reinterpret_cast,
        this way extending values of EGLNativeWindowType to 64 bits is allowed.

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] GLib API headers WebKitScriptDialog.h and WebKitFileChooserRequest.h are not installed
        https://bugs.webkit.org/show_bug.cgi?id=178104

        Reviewed by Žan Doberšek.

        * PlatformWPE.cmake: Add missing header paths to the WPE_API_INSTALLED_HEADERS variable.

2017-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][CMake] The “install” target should install all public API headers
        https://bugs.webkit.org/show_bug.cgi?id=176475

        Reviewed by Žan Doberšek.

        Install the WPE port GLib-based API headers. The deprecated C API is still available,
        but disabled by default behind the "EXPORT_DEPRECATED_WEBKIT2_C_API" CMake option.

        * PlatformWPE.cmake: Always install "wpe-webkit.pc" and the GLib C API for WPE.

2017-10-09  Jeremy Jones  <jeremyj@apple.com>

        Fix typo of virtual keyword in PageClientImplIOS.h
        https://bugs.webkit.org/show_bug.cgi?id=178088

        Reviewed by Simon Fraser.

        This compile error happens when FULLSCREEN_API is enabled for iOS.
        Remove the redundant virtual keyword since function is marked override.

        * UIProcess/ios/PageClientImplIOS.h:

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

        [iOS][WK2] Tiles outsides the viewport are sometimes missing after relaunching a crashes WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=178095
        <rdar://problem/34415016>

        Reviewed by Simon Fraser.

        Make sure we reset WKWebView._hasScheduledVisibleRectUpdate to NO in WKWebView._processDidExit.
        _scheduleVisibleContentRectUpdateAfterScrollInView would otherwise return early because
        WKWebView._hasScheduledVisibleRectUpdate is always YES. Normally,
        _addUpdateVisibleContentRectPreCommitHandler sets a CATransaction commit handler that
        resets _hasScheduledVisibleRectUpdate to NO, but it does not do so when ![webView _isValid]
        (which is true when the WebProcess has crashed.

        Also reset WKWebView._commitDidRestoreScrollPosition to NO in WKWebView._processDidExit even
        though it does not seem to be the cause of this bug. It seems to make sense to reset this member
        when the process crashes.

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

2017-10-09  Youenn Fablet  <youenn@apple.com>

        Add quota to cache API
        https://bugs.webkit.org/show_bug.cgi?id=177552

        Reviewed by Alex Christensen.

        Adding support for quota checking in CacheStorage::Caches.
        It is passed to NetworkProcess at creation time.
        Default quota size is configured to 400Ko by origin per default.
        This value is suitable for testing.
        Future patch should raise this default value and allows configuring it.

        Quota is computed based on the response body size.
        This size is padded at WebCore for opaque responses.
        Size is stored persistently as opaque response padded size should remain stable.
        See https://github.com/whatwg/storage/issues/31 for the rationale about this padding.

        In case of putting several records at the same time, the size of all records
        is computed so that all records will be written or rejected together.

        Sending QuotaExceeded error when quota is exceeded.
        Future effort should allow asking UIProcess for quota extension.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::cacheStoragePerOriginQuota const):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::toRecordInformation):
        (WebKit::CacheStorage::isolatedCopy):
        (WebKit::CacheStorage::Cache::open):
        (WebKit::CacheStorage::Cache::storeRecords):
        (WebKit::CacheStorage::Cache::put):
        (WebKit::CacheStorage::Cache::writeRecordToDisk):
        (WebKit::CacheStorage::Cache::updateRecordToDisk):
        (WebKit::CacheStorage::Cache::removeRecordFromDisk):
        (WebKit::CacheStorage::Cache::encode):
        (WebKit::CacheStorage::Cache::decodeRecordHeader):
        (WebKit::CacheStorage::Cache::decode):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::initializeSize):
        (WebKit::CacheStorage::Caches::requestSpace):
        (WebKit::CacheStorage::Caches::writeRecord):
        (WebKit::CacheStorage::Caches::removeRecord):
        (WebKit::CacheStorage::Caches::removeCacheEntry):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::create):
        (WebKit::CacheStorage::Caches::hasEnoughSpace const):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::traverse):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DOMCacheEngine::Record>::encode):
        (IPC::ArgumentCoder<DOMCacheEngine::Record>::decode):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        Make HashMap::keys() and HashMap::values() work with WTF::map/WTF::copyToVector
        https://bugs.webkit.org/show_bug.cgi?id=178072

        Reviewed by Darin Adler.

        * Shared/AsyncRequest.h:
        (WebKit::AsyncRequestMap::values):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::pages const):

            Update for type change for HashMap::values().

2017-10-09  Jeremy Jones  <jeremyj@apple.com>

        Incorrect fullscreen animation when element has a transform.
        https://bugs.webkit.org/show_bug.cgi?id=177558
        rdar://problem/29603741

        Reviewed by Jer Noble.

        Use a bit of code from element fullscreen to do this correctly for video fullscreen.
        The key is to get the absolute quad from the renderer. This will work for scaling,
        But since we still take the bounding box, it won't work for rotations.

        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::inlineVideoFrame):

2017-10-09  Robin Morisset  <rmorisset@apple.com>

        Make the names of the options consistent
        https://bugs.webkit.org/show_bug.cgi?id=177933

        Reviewed by Saam Barati.

        * NetworkProcess/capture/json.hpp:
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::connectionDidClose):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _keyboardWillHide:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runModal):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):

2017-10-09  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Propagate libepoxy compiler flags obtained from pkg-config
        https://bugs.webkit.org/show_bug.cgi?id=178081

        Reviewed by Carlos Alberto Lopez Perez.

        * CMakeLists.txt: Use ${LIBEPOXY_DEFINITIONS} for building WebKit.

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

        mediaPlaybackRequiresUserAction API replacement annotation is wrong
        https://bugs.webkit.org/show_bug.cgi?id=178063

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
        mediaPlaybackRequiresUserAction suggests that you should use 
        requiresUserActionForMediaPlayback instead, but that is also deprecated.
        Instead, follow the chain and suggest mediaTypesRequiringUserActionForPlayback.

2017-10-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] API tests added in r222991 are failing in iOS 11 test runners
        https://bugs.webkit.org/show_bug.cgi?id=178037

        Reviewed by Tim Horton.

        This patch carries out some minor cleanup around UIKitSPI.h in WebKit2, so that the internal SDK isn't required
        to implement -[WKContentView insertTextSuggestion:].

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertTextSuggestion:]):

2017-10-06  Chris Dumez  <cdumez@apple.com>

        [Beacon][Cocoa] Beacon requests with BufferSource payload should not have a Content-Type HTTP header
        https://bugs.webkit.org/show_bug.cgi?id=178027
        <rdar://problem/34748470>

        Reviewed by Youenn Fablet.

        Use new NSURLSessionConfiguration._suppressedAutoAddedHTTPHeaders CFNetwork SPI to
        make sure that CFNetwork never adds a Content-Type HTTP headers to our requests
        when we did not add one.

        This is covered by the following tests on newer OSes:
        - imported/w3c/web-platform-tests/beacon/headers/header-content-type.html
        - http/tests/blink/sendbeacon/beacon-same-origin.html

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

2017-10-06  Aishwarya Nirmal  <anirmal@apple.com>

        [iOS] Respect the "caret-color" CSS property when editing 
        https://bugs.webkit.org/show_bug.cgi?id=177489
        <rdar://problem/34600419>

        Reviewed by Tim Horton.

        This change adds support for the caret-color property on iOS.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertionPointColor]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):

2017-10-06  Brian Burg  <bburg@apple.com>

        Web Inspector: clicking in Inspector webview clears the selection in the inspected page
        https://bugs.webkit.org/show_bug.cgi?id=178014
        <rdar://problem/12706857>

        Reviewed by Timothy Hatcher.

        If the Inspector is docked to the inspected view, clicking on the Inspector
        webview will cause selection in the inspected view to be lost. This is because
        the selection is lost when the web view resigns first responder.

        Add a check in maintainsInactiveSelection to always retain selection if
        Web Inspector is open. This approach seems simpler than trying to sync a client's
        usage of WKPageSetMaintainsInactiveSelection with overrides that need to be applied
        and unapplied when an inspector web view is shown or hidden.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maintainsInactiveSelection const):
        (WebKit::WebPageProxy::inspector const): Drive by, use nullptr.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::maintainsInactiveSelection const): Deleted.

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

        Add more infrastructure to apply custom headers to same-origin requests
        https://bugs.webkit.org/show_bug.cgi?id=177629

        Reviewed by Ryosuke Niwa.

        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesCopyCustomHeaderFields):
        (WKWebsitePoliciesSetCustomHeaderFields):
        * UIProcess/API/C/WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies customHeaderFields]):
        (-[_WKWebsitePolicies setCustomHeaderFields:]):

        Make the SPI for setting custom header fields take a dictionary<String, String>
        instead of an array of Strings with colons. This matches NSURLRequest and other
        APIs that deal with header fields.

2017-10-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Tweak support for classifying form controls (followup to r222487)
        https://bugs.webkit.org/show_bug.cgi?id=177917
        <rdar://problem/34820122>

        Reviewed by Dean Jackson.

        This patch follows up with <http://trac.webkit.org/r222487>. It combines the functionality of two SPI hooks
        implemented on WKContentView into a single method that vends a context dictionary, and additionally addresses an
        issue with the original implementation, wherein some cached state on WebPageProxy is set upon starting node
        assistance, but is never unset when stopping node assistance, nor set anywhere else. See per-method comments for
        more detail.

        * UIProcess/WebPageProxy.h:

        Remove members m_acceptsAutofilledLoginCredentials and m_representingPageURL from WebPageProxy. This state is
        retrieved from the AssistedNodeInformation struct when starting node assistance, but is never reset anywhere
        else. Instead of introducing new members to remember this state, we can just use the WKContentView's current
        assisted node information.

        This also means that programmatically focusing forms (without user gesture) will no longer cause WKContentView
        to accept autofilled login credentials, since we bail out of node assistance and don't begin an input session.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView acceptsAutofilledLoginCredentials]): Deleted.
        (-[WKContentView representingPageURL]): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _autofillContext]):

        Merge functionality of the previous two SPI hooks, such that -_autofillContext will return a non-null dictionary
        containing the URL of the focused element's document if and only if WKContentView accepts autofilled login
        credentials, and there exists a representing page URL.

        When the page stops assisting the focused node, we set the AssistedNodeInformation's element type to None, so we
        additionally bail and return nil if the element type is None. As an aside, it seems a more reasonable approach to
        resetting state upon stopping node assistance is to just completely reset _assistedNodeInformation to its initial
        value, i.e. via _assistedNodeInformation = { }. It's not clear whether there are behaviors relying on the fact
        that all members but the element type in the content view's assisted node information could be stale, so this
        seems worthy of some investigation.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::acceptsAutofilledLoginCredentials): Deleted.
        (WebKit::WebPageProxy::representingPageURL): Deleted.

2017-10-06  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add shared curl files
        https://bugs.webkit.org/show_bug.cgi?id=177999

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:
        * Shared/Authentication/curl/AuthenticationManagerCurl.cpp: Added.
        (WebKit::AuthenticationManager::receivedCredential):
        (WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
        (WebKit::AuthenticationManager::receivedCancellation):
        (WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
        (WebKit::AuthenticationManager::receivedChallengeRejection):
        * Shared/curl/WebCoreArgumentCodersCurl.cpp: Added.
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):
        (IPC::ArgumentCoder<ResourceError>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceError>::decodePlatformData):
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData):
        (IPC::ArgumentCoder<Credential>::encodePlatformData):
        (IPC::ArgumentCoder<Credential>::decodePlatformData):

2017-10-06  Brent Fulgham  <bfulgham@apple.com>

        Sandbox rules block PluginProcess using "File Open/Save" dialogs
        https://bugs.webkit.org/show_bug.cgi?id=177965
        <rdar://problem/33976846>

        Reviewed by Alexey Proskuryakov.

        Update the PluginProcess sandboxes to allow the same XPC services as
        the WebContent process. Also allow access to the openAndSavePanelServices.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: 

2017-10-06  Brady Eidson  <beidson@apple.com>

        Add (entirely incorrect) fetching of ServiceWorker scripts.
        https://bugs.webkit.org/show_bug.cgi?id=176179

        Reviewed by Andy Estes.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::finishFetchingScriptInServer):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-10-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to configure and enable resource load statistics
        https://bugs.webkit.org/show_bug.cgi?id=177943

        Reviewed by Michael Catanzaro.

        Add new WebKitWebsiteDataManager construct only property to set the directory where the persistent stats are
        stored, and methods to enable resource load statistics and query whether it's currently enabled. Also add a new
        Website data type to be able to remove the persistent stats using WebKitWebsiteDataManager existing API.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        (websiteDataStoreConfigurationForWebProcessPoolConfiguration):
        (webkitWebContextConstructed):
        * UIProcess/API/glib/WebKitWebsiteData.cpp:
        (recordContainsSupportedDataTypes):
        (toWebKitWebsiteDataTypes):
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        (webkitWebsiteDataManagerGetProperty):
        (webkitWebsiteDataManagerSetProperty):
        (webkitWebsiteDataManagerConstructed):
        (webkit_website_data_manager_class_init):
        (webkitWebsiteDataManagerGetDataStore):
        (webkit_website_data_manager_get_resource_load_stats_directory):
        (webkit_website_data_manager_set_resource_load_stats_enabled):
        (webkit_website_data_manager_get_resource_load_stats_enabled):
        (toWebsiteDataTypes):
        * UIProcess/API/gtk/WebKitWebsiteData.h:
        * UIProcess/API/gtk/WebKitWebsiteDataManager.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitWebsiteData.h:
        * UIProcess/API/wpe/WebKitWebsiteDataManager.h:

2017-10-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] All resource load statistics tests added in r212183 crash in GTK bots, timeout in GTK and WPE bots since r219049
        https://bugs.webkit.org/show_bug.cgi?id=168171

        Reviewed by Chris Dumez.

        Add C API to handle all resource load statistics requests made by the layout tests.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsLastSeen):
        (WKWebsiteDataStoreSetStatisticsPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsPrevalentResource):
        (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreSetStatisticsGrandfathered):
        (WKWebsiteDataStoreIsStatisticsGrandfathered):
        (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
        (WKWebsiteDataStoreSetStatisticsTimeToLiveCookiePartitionFree):
        (WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
        (WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
        (WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
        (WKWebsiteDataStoreStatisticsSubmitTelemetry):
        (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned):
        (WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured):
        (WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval):
        (WKWebsiteDataStoreSetStatisticsGrandfatheringTime):
        (WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries):
        (WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
        (WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

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

        Fix the Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=177985

        Unreviewed build fix.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        After r222917, there's one more piece of WebKitSystemInterface left.
        And some missing bits of PaymentRequest.

2017-10-05  Keith Miller  <keith_miller@apple.com>

        Unreviewed, tapi builds without optimization so we should have TAPI passes -DRELEASE_WITHOUT_OPTIMIZATIONS.

        * Configurations/Base.xcconfig:

2017-10-05  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Enable ENABLE_ENCRYPTED_MEDIA build-time setting
        https://bugs.webkit.org/show_bug.cgi?id=177261

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

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

        Add ObjC equivalent of WKPageNavigationClient.didChangeBackForwardList
        https://bugs.webkit.org/show_bug.cgi?id=177966
        <rdar://problem/22387135>

        Reviewed by Tim Horton.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didChangeBackForwardList):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::didFailToInitializePlugIn):
        (WebKit::NavigationState::NavigationClient::didChangeBackForwardList):
        (WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::didCancelClientRedirect):
        (WebKit::NavigationState::NavigationClient::renderingProgressDidChange):
        (WebKit::NavigationState::NavigationClient::canAuthenticateAgainstProtectionSpace):
        (WebKit::NavigationState::NavigationClient::processDidTerminate):
        (WebKit::NavigationState::NavigationClient::processDidBecomeResponsive):
        (WebKit::NavigationState::NavigationClient::processDidBecomeUnresponsive):
        (WebKit::NavigationState::NavigationClient::webCryptoMasterKey):
        (WebKit::NavigationState::NavigationClient::didFinishLoadForQuickLookDocumentInMainFrame):
        (WebKit::NavigationState::HistoryClient::didNavigateWithNavigationData):
        (WebKit::NavigationState::HistoryClient::didPerformClientRedirect):
        (WebKit::NavigationState::HistoryClient::didPerformServerRedirect):
        (WebKit::NavigationState::HistoryClient::didUpdateHistoryTitle):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeBackForwardList):

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

        Add ObjC SPI with userInfo corresponding to WKPageNavigationClient's decidePolicyForNavigationAction, didStartProvisionalNavigation, and didFailNavigation
        https://bugs.webkit.org/show_bug.cgi?id=177974
        <rdar://problem/22888802>

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
        (WebKit::NavigationState::NavigationClient::didFailNavigationWithError):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):

2017-10-05  John Wilander  <wilander@apple.com>

        Storage Access API: Web process should ask UI process for grant/deny
        https://bugs.webkit.org/show_bug.cgi?id=176941
        <rdar://problem/34440036>

        Reviewed by Chris Dumez and Sam Weinig.

        This patch adds infrastructure to let WebCore::Document call
        WebKit::WebResourceLoadStatisticsStore and ask for storage
        access on behalf of an iframe. The communication goes through
        the ChromeClient since we might want to add a native prompt.
        From the ChromeClient it continues to the WebPage which
        messages the WebPageProxy. The WebPageProxy calls the
        WebsiteDataStore which owns the WebResourceLoadStatisticsStore.
        A uint64_t is used to match the right callback with the boolean
        result.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::requestStorageAccess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::requestStorageAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::nextRequestStorageAccessContextId):
        (WebKit::WebPage::requestStorageAccess):
        (WebKit::WebPage::storageAccessResponse):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-10-05  Chris Dumez  <cdumez@apple.com>

        Drop unused parameters for CookiesStrategy::cookiesEnabled()
        https://bugs.webkit.org/show_bug.cgi?id=177957

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesEnabled):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

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

        Make progress toward properly-formed XPC services in the Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=177918

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * PlatformMac.cmake:
        Turn on the storage process on Mac, and fix its build.
        Move XPC services to Versions/A/XPCServices and add the toplevel
        XPCServices as a symlink of that.
        Run the XPC services' Info.plists through configure_file, and substitute
        the important variables (most critically the bundle identifier).
        Factor out the service setup so we don't keep duplicating it as it
        gets more complicated.

2017-10-05  Andy Estes  <aestes@apple.com>

        [Payment Request] Add a payment method that supports Apple Pay
        https://bugs.webkit.org/show_bug.cgi?id=177850

        Reviewed by Youenn Fablet.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (toShippingMethod): Converted the NSDecimalNumber amount to a string rather than an integer.
        (WebKit::toDecimalNumber): used -decimalNumberWithString:locale: rather than
        -initWithMantissa:exponent:isNegative: to create an NSDecimalNumber.
        (WebKit::toPKPaymentSummaryItem):
        (WebKit::toPKShippingMethod):

2017-10-05  Youenn Fablet  <youenn@apple.com>

        Make LibWebRTCProvider port agnostic
        https://bugs.webkit.org/show_bug.cgi?id=177747

        Reviewed by Alex Christensen & Alex Garcia.

        * WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure Mac/iOS provider creates the codec factories.

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

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

        Reviewed by Antti Koivisto.

        * Configurations/DebugRelease.xcconfig:
        * WebKit.xcodeproj/project.pbxproj:

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

        Remove unnecessary includes of WebKitSystemInterface on Cocoa platforms
        https://bugs.webkit.org/show_bug.cgi?id=177912

        Reviewed by Saam Barati.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        * Platform/IPC/mac/ConnectionMac.mm:
        * Platform/mac/LayerHostingContext.mm:
        * PluginProcess/mac/PluginProcessMac.mm:
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/ios/ChildProcessIOS.mm:
        * Shared/mac/ChildProcessMac.mm:
        * Shared/mac/SandboxExtensionMac.mm:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        * Shared/mac/WebEventFactory.mm:
        * StorageProcess/ios/StorageProcessIOS.mm:
        * StorageProcess/mac/StorageProcessMac.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/mac/PageClientImplMac.mm:
        * UIProcess/mac/WKTextInputWindowController.mm:
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        * UIProcess/mac/WindowServerConnection.mm:
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        * WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-10-04  Youenn Fablet  <youenn@apple.com>

        rtc::PacketOptions should have its own IPC encoding/decoding routines
        https://bugs.webkit.org/show_bug.cgi?id=177812

        Reviewed by Alex Christensen.

        Replacing rtc::PacketOptions IPC encoding/decoding from passing the structure as individual parameters to the structure as a parameter.
        Introducing WebKit::RTCPacketOptions as a wrapper around it for which encode/decode routines are added.
        Updating code using rtc::PacketOptions accordingly.

        * NetworkProcess/webrtc/NetworkRTCSocket.cpp:
        (WebKit::NetworkRTCSocket::sendTo):
        * NetworkProcess/webrtc/NetworkRTCSocket.h:
        * NetworkProcess/webrtc/NetworkRTCSocket.messages.in:
        * Platform/IPC/Decoder.cpp:
        (IPC::Decoder::operator>>):
        (IPC::Decoder::decode):
        * Platform/IPC/Decoder.h:
        * Platform/IPC/Encoder.cpp:
        (IPC::Encoder::encode):
        * Platform/IPC/Encoder.h:
        * Shared/RTCPacketOptions.cpp: Added.
        (WebKit::RTCPacketOptions::encode const):
        (WebKit::RTCPacketOptions::decode):
        * Shared/RTCPacketOptions.h: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::SendTo):

2017-10-04  Don Olmstead  <don.olmstead@sony.com>

        Include Pasteboard.h for all in WebCoreArgumentCoders
        https://bugs.webkit.org/show_bug.cgi?id=177902

        Reviewed by Alex Christensen.

        * Shared/WebCoreArgumentCoders.cpp:

2017-10-04  David Kilzer  <ddkilzer@apple.com>

        Remove unused variables in lambdas for network process cache
        <https://webkit.org/b/177878>
        <rdar://problem/34038482>

        Reviewed by Tim Horton.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::putRecords):
        (WebKit::CacheStorage::Engine::deleteMatchingRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::reference):
        - Remove unused |this| from lambda captures.

2017-10-04  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] add PLATFORM(WIN) configurations to config.h
        https://bugs.webkit.org/show_bug.cgi?id=177846

        Reviewed by Alex Christensen.

        * config.h:

2017-10-04  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] WebKit2GTK+ does not handle touchmove and touchend events correctly
        https://bugs.webkit.org/show_bug.cgi?id=158531

        Reviewed by Carlos Alberto Lopez Perez.

        Do not bypass WebCore event handling when receiving touch events.

        Based on a patch by Andre Moreira Magalhaes <andre.magalhaes@collabora.co.uk>.
        Thanks to Carlos Garnacho <carlosg@gnome.org> for helping out reviewing the code.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::doneWithTouchEvent): Make sure touchend reaches gesture controller if touchbegin evet got to it.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseTouchEvent): Do not invoke gesture controller directly by bypassing WebCore event handling.
        * UIProcess/gtk/GestureController.cpp:
        (WebKit::GestureController::reset): Added.
        (WebKit::GestureController::handleEvent): Reset gesture controller when touchpadupdate/end is received without touchbegin.
        (WebKit::GestureController::Gesture::reset): Added.
        * UIProcess/gtk/GestureController.h:

2017-10-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed WPE build fix after r222837
        https://bugs.webkit.org/show_bug.cgi?id=177449

        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::wallTimeForEventTime):

2017-10-04  Ryosuke Niwa  <rniwa@webkit.org>

        Use blob URL when pasting RTFD instead of overriding DocumentLoader
        https://bugs.webkit.org/show_bug.cgi?id=177801
        <rdar://problem/34542270>

        Reviewed by Wenson Hsieh.

        Fixed the assertion failure when RTFD content is empty.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getPasteboardBufferForType):

2017-10-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r222392): [WPE][GTK] Many forms tests are failing due to broken event timestamps
        https://bugs.webkit.org/show_bug.cgi?id=177449

        Reviewed by Chris Dumez.

        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::wallTimeForEventTime):

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

        Correct nullptr dereference during shutdown
        https://bugs.webkit.org/show_bug.cgi?id=177845
        <rdar://problem/33651405>

        Reviewed by Chris Dumez.

        It looks like the ResourceLoadStatisticsPersistentStorage destructor is calling code that attempts
        to use member variables in its owning class (WebResourceLoadStatisticsStore). Since these may have
        already been destroyed, they are in an invalid state when accessed.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage): Do not call
        finishAllPendingWorkSynchronously() in the destructor, since it relies on the m_memoryStore to be
        a reference to completely valid object.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): Instead, call
        'finishAllPendingWorkSynchronously' here, when the object is still in a known valid state.

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

        Moderize WebKit's back forward list code
        https://bugs.webkit.org/show_bug.cgi?id=177843

        Reviewed by Tim Horton.

        Use Ref instead of RefPtr when possible.
        Use references instead of pointers when possible.
        Remove unnecessary null checks.
        Reduce unnecessary Vector copying.

        * Shared/SessionState.h:
        * Shared/WebBackForwardListItem.h:
        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didChangeBackForwardList):
        (API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::pageClosed):
        (WebKit::WebBackForwardList::addItem):
        (WebKit::WebBackForwardList::goToItem):
        (WebKit::WebBackForwardList::currentItem const):
        (WebKit::WebBackForwardList::backItem const):
        (WebKit::WebBackForwardList::forwardItem const):
        (WebKit::WebBackForwardList::itemAtIndex const):
        (WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::removeAllItems):
        (WebKit::WebBackForwardList::clear):
        (WebKit::WebBackForwardList::backForwardListState const):
        (WebKit::WebBackForwardList::restoreFromState):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
        (WebKit::WebPageProxy::backForwardGoToItem):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::registerNewWebBackForwardListItem):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::itemAtIndex):

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

        SharedStringHashStore should support removing hashes
        https://bugs.webkit.org/show_bug.cgi?id=177770

        Reviewed by Alex Christensen.

        SharedStringHashStore should support removing hashes. It currently only supports adding hashes or
        clearing all of them, which is sufficient for the VisitedLinkStore but will not be for Service
        Worker purposes.

        * Shared/SharedStringHashStore.cpp:
        (WebKit::SharedStringHashStore::SharedStringHashStore):
        (WebKit::SharedStringHashStore::add):
        (WebKit::SharedStringHashStore::remove):
        (WebKit::SharedStringHashStore::contains):
        (WebKit::SharedStringHashStore::clear):
        (WebKit::SharedStringHashStore::resizeTable):
        (WebKit::SharedStringHashStore::pendingOperationsTimerFired):
        * Shared/SharedStringHashStore.h:
        * Shared/SharedStringHashTable.cpp:
        (WebKit::SharedStringHashTable::remove):
        * Shared/SharedStringHashTable.h:
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:
        (-[_WKVisitedLinkStore containsVisitedLinkWithURL:]):
        (-[_WKVisitedLinkStore removeVisitedLinkWithURL:]):
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::containsVisitedLinkHash):
        (WebKit::VisitedLinkStore::removeVisitedLinkHash):
        (WebKit::VisitedLinkStore::didUpdateSharedStringHashes):
        * UIProcess/VisitedLinkStore.h:

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

        Fix API tests after r222794.
        https://bugs.webkit.org/show_bug.cgi?id=177825

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        Sometimes there's no navigation client.

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

        Add ObjC equivalent of WKPageLoaderClient.pluginDidFail
        https://bugs.webkit.org/show_bug.cgi?id=177787
        <rdar://problem/22387633>

        Reviewed by Tim Horton.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didFailToInitializePlugin):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::canHandleDidFailToInitializePlugIn const):
        (API::NavigationClient::didFailToInitializePlugIn):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::canHandleDidFailToInitializePlugIn const):
        (WebKit::NavigationState::NavigationClient::didFailToInitializePlugIn):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToInitializePlugin):

2017-10-03  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Prefer -webkit-system-font
        https://bugs.webkit.org/show_bug.cgi?id=177814

        Reviewed by Carlos Garcia Campos.

        Use "font-family: -webkit-system-font" instead of "font: menu".

        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::handleRequest): Edited HTML snippet.

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

        Add ObjC SPI equivalent to WKPageLoaderClient.willGoToBackForwardListItem
        https://bugs.webkit.org/show_bug.cgi?id=177825
        <rdar://problem/22387505>

        Reviewed by Tim Horton.

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::willGoToBackForwardListItem):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::canHandleWillGoToBackForwardListItem const):
        (API::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::canHandleWillGoToBackForwardListItem const):
        (WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):

2017-10-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r222392): [WPE][GTK] Many forms tests are failing due to broken event timestamps
        https://bugs.webkit.org/show_bug.cgi?id=177449

        Reviewed by Chris Dumez.

        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebTouchEvent):
        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::wallTimeForEventTime):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebTouchEvent):

2017-10-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] WebProcess should run cleanup on quit to release resources
        https://bugs.webkit.org/show_bug.cgi?id=168126

        Reviewed by Michael Catanzaro.

        Do not call exit on sync message send failure for GTK and WPE ports.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection):

2017-10-02  Ryosuke Niwa  <rniwa@webkit.org>

        Move more code into PasteboardCustomData
        https://bugs.webkit.org/show_bug.cgi?id=177795

        Reviewed by Wenson Hsieh.

        Added the support for encoding and decoding the origin string in PasteboardCustomData.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardCustomData>::encode):
        (IPC::ArgumentCoder<PasteboardCustomData>::decode):

2017-10-02  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Do not hardcode font family in served remote inspector HTML snippets
        https://bugs.webkit.org/show_bug.cgi?id=177742

        Reviewed by Carlos Garcia Campos.

        Instead of hardcoding Cantarell as the font used for the HTML snippets served
        by the remote inspector handler, use "font: menu" to obtain the system UI
        font, plus a "font-size" rule for adjusting the size.

        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::handleRequest): Change the
        CSS rules in the served snippet.

2017-10-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Include Beacon and Ping requests in Network tab
        https://bugs.webkit.org/show_bug.cgi?id=177641
        <rdar://problem/33086839>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::didFinishPingLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::didFinish):
        (WebKit::PingLoad::didReceiveResponseNetworkSession):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didFinishPingLoad):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::networkProcessCrashed):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::didFinishPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:
        Pass an optional ResourceResponse back to the ping completion handler.

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

        REGRESSION: API tests WebKit.ProcessDidTerminateRequestedByClient and WebKit.ProcessDidTerminateWithReasonCrash are timing out
        https://bugs.webkit.org/show_bug.cgi?id=177764

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        I shouldn't have reverted the A API telling the listener to continue if there's no client function.

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

        [WPE][GTK] Crash in webkit_web_resource_get_data_finish()
        https://bugs.webkit.org/show_bug.cgi?id=177107

        Reviewed by Michael Catanzaro.

        Handle errors in webkit_web_resource_get_data() callback.

        * UIProcess/API/glib/WebKitWebResource.cpp:
        (resourceDataCallback):
        (webkit_web_resource_get_data):

2017-10-02  Olivier Blin  <olivier.blin@softathome.com>

        [WPE] Fix UIProcess build with GStreamer and without VIDEO
        https://bugs.webkit.org/show_bug.cgi?id=177753

        Reviewed by Michael Catanzaro.

        GStreamer builds fail when WebAudio is enabled but VIDEO disabled.
        This is the WPE counterpart of bug 153135.

        * UIProcess/API/wpe/PageClientImpl.h:

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

        Expose more WKPreferences SPI to match C SPI
        https://bugs.webkit.org/show_bug.cgi?id=177697

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _javaEnabledForLocalFiles]):
        (-[WKPreferences _setPlugInsEnabled:]): Deleted.
        (-[WKPreferences _plugInsEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        _javaEnabledForLocalFiles should return the correct value.
        _plugInsEnabled has public API.  This SPI is not needed.

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

        REGRESSION(r214201): WebProcess hangs during policy decisions
        https://bugs.webkit.org/show_bug.cgi?id=177590
        <rdar://problem/33362929>

        Reviewed by Andy Estes.

        This is like r222431 but for trunk instead of a branch.
        It includes the same regression API test so I don't make the same mistake again.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForResponseSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebDocumentLoader.cpp:
        (WebKit::WebDocumentLoader::setNavigationID):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setUpPolicyListener):
        (WebKit::WebFrame::invalidatePolicyListener):
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        Remove unnecessary copy of SessionID in WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=177702

        Reviewed by Darin Adler.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::sessionID const):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::sessionID const): Deleted.

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

        Expose more WKPreferences SPI to match C SPI
        https://bugs.webkit.org/show_bug.cgi?id=177697
        <rdar://problem/24110556>

        Reviewed by Darin Adler.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setJavaEnabledForLocalFiles:]):
        (-[WKPreferences _javaEnabledForLocalFiles]):
        (-[WKPreferences _setCanvasUsesAcceleratedDrawing:]):
        (-[WKPreferences _canvasUsesAcceleratedDrawing]):
        (-[WKPreferences _setAcceleratedCompositingEnabled:]):
        (-[WKPreferences _acceleratedCompositingEnabled]):
        (-[WKPreferences _setDefaultTextEncodingName:]):
        (-[WKPreferences _defaultTextEncodingName]):
        (-[WKPreferences _setNeedsSiteSpecificQuirks:]):
        (-[WKPreferences _needsSiteSpecificQuirks]):
        (-[WKPreferences _setAuthorAndUserStylesEnabled:]):
        (-[WKPreferences _authorAndUserStylesEnabled]):
        (-[WKPreferences _setDOMTimersThrottlingEnabled:]):
        (-[WKPreferences _domTimersThrottlingEnabled]):
        (-[WKPreferences _setWebArchiveDebugModeEnabled:]):
        (-[WKPreferences _webArchiveDebugModeEnabled]):
        (-[WKPreferences _setLocalFileContentSniffingEnabled:]):
        (-[WKPreferences _localFileContentSniffingEnabled]):
        (-[WKPreferences _setUsesPageCache:]):
        (-[WKPreferences _usesPageCache]):
        (-[WKPreferences _setPageCacheSupportsPlugins:]):
        (-[WKPreferences _pageCacheSupportsPlugins]):
        (-[WKPreferences _setShouldPrintBackgrounds:]):
        (-[WKPreferences _shouldPrintBackgrounds]):
        (-[WKPreferences _setWebSecurityEnabled:]):
        (-[WKPreferences _webSecurityEnabled]):
        (-[WKPreferences _setUniversalAccessFromFileURLsAllowed:]):
        (-[WKPreferences _universalAccessFromFileURLsAllowed]):
        (-[WKPreferences _setAVFoundationEnabled:]):
        (-[WKPreferences _avFoundationEnabled]):
        (-[WKPreferences _setSuppressesIncrementalRendering:]):
        (-[WKPreferences _suppressesIncrementalRendering]):
        (-[WKPreferences _setAsynchronousPluginInitializationEnabled:]):
        (-[WKPreferences _asynchronousPluginInitializationEnabled]):
        (-[WKPreferences _setArtificialPluginInitializationDelayEnabled:]):
        (-[WKPreferences _artificialPluginInitializationDelayEnabled]):
        (-[WKPreferences _setCookieEnabled:]):
        (-[WKPreferences _cookieEnabled]):
        (-[WKPreferences _setPlugInSnapshottingEnabled:]):
        (-[WKPreferences _plugInSnapshottingEnabled]):
        (-[WKPreferences _setQTKitEnabled:]):
        (-[WKPreferences _qtKitEnabled]):
        (-[WKPreferences _setSubpixelCSSOMElementMetricsEnabled:]):
        (-[WKPreferences _subpixelCSSOMElementMetricsEnabled]):
        (-[WKPreferences _setMediaSourceEnabled:]):
        (-[WKPreferences _mediaSourceEnabled]):
        (-[WKPreferences _setViewGestureDebuggingEnabled:]):
        (-[WKPreferences _viewGestureDebuggingEnabled]):
        (-[WKPreferences _setCSSAnimationTriggersEnabled:]):
        (-[WKPreferences _cssAnimationTriggersEnabled]):
        (-[WKPreferences _setStandardFontFamily:]):
        (-[WKPreferences _standardFontFamily]):
        (-[WKPreferences _setNotificationsEnabled:]):
        (-[WKPreferences _notificationsEnabled]):
        (-[WKPreferences _setBackspaceKeyNavigationEnabled:]):
        (-[WKPreferences _backspaceKeyNavigationEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

        [GTK][WPE] Enable interactive forms validation by default
        https://bugs.webkit.org/show_bug.cgi?id=177737

        Reviewed by Michael Catanzaro.

        It's currently disabled for no reason.

        * Shared/WebPreferencesDefinitions.h:

2017-10-02  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove ENABLE_CSS_REGIONS
        https://bugs.webkit.org/show_bug.cgi?id=177689

        Reviewed by Darin Adler.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
        (webkit_dom_element_get_webkit_region_overset):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.h:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
        (webkit_dom_element_get_webkit_region_overset): Deleted.
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.h:

2017-09-30  Darin Adler  <darin@apple.com>

        Have IPC::Connection::Client objects consistently invalidate the connection when destroyed
        https://bugs.webkit.org/show_bug.cgi?id=177708

        Reviewed by Anders Carlsson.

        I ran into an intermittent crash when running regression tests. It looked like a connection
        client was being called after it was destroyed. I did an audit of the all the connection
        clients to make sure they all invalidate their connection before they are destroyed.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess): Invalidate the
        connection since this object opened the connection. There is no obvious
        guarantee that the connection will already be invalid when this is destroyed.
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection): Ditto.
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::~PluginProcessProxy): Ditto.
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::~NetworkProcessConnection): Ditto.
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::~WebToStorageProcessConnection): Ditto.

        * StorageProcess/StorageToWebProcessConnection.h: Derive privately rather than publicly
        from IPC::Connection::Client because we can, and this means we don't have to study quite
        as much code to understand how this is used as a connection client.
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: Ditto.
        * WebProcess/Storage/WebToStorageProcessConnection.h: Ditto.
        * WebProcess/WebPage/WebInspector.h: Ditto.
        * WebProcess/WebPage/WebInspectorUI.h: Ditto.

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): Added a comment about a
        reference cycle cycle leading to a leak that I believe exists here.

2017-09-29  Alex Christensen  <achristensen@webkit.org>

        REGRESSION: ASSERTION FAILED: m_provisionalURL.isEmpty() in WebKit::FrameLoadState::didStartProvisionalLoad
        https://bugs.webkit.org/show_bug.cgi?id=177491

        Reviewed by Andy Estes.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setUpWillSubmitFormListener):
        (WebKit::WebFrame::continueWillSubmitForm):
        (WebKit::WebFrame::invalidatePolicyListener):
        Speculative fix for a flaky assertion.
        Restore the clearing of the policy listeners we used to have when form submission was treated as a policy.

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

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

        Reviewed by Alex Christensen.

        Update PreconnectTask to query the client when a certificate needs to be
        validated. This allows WebKitTestRunner to ignore invalid certificates
        and this causes http/tests/preconnect/link-rel-preconnect-https.html
        to pass consistently.

        To avoid duplicating code, PreconnectTask now uses NetworkLoad internally
        instead of using a NetworkDataTask directly.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::preconnectTo):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::generateCanAuthenticateIdentifier):
        (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace):
        (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
        (WebKit::NetworkProcess::preconnectTo):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::PreconnectTask):
        (WebKit::PreconnectTask::~PreconnectTask):
        (WebKit::PreconnectTask::willSendRedirectedRequest):
        (WebKit::PreconnectTask::didReceiveResponse):
        (WebKit::PreconnectTask::didReceiveBuffer):
        (WebKit::PreconnectTask::didFinishLoading):
        (WebKit::PreconnectTask::didFailLoading):
        (WebKit::PreconnectTask::didSendData):
        (WebKit::PreconnectTask::canAuthenticateAgainstProtectionSpaceAsync):
        (WebKit::PreconnectTask::continueCanAuthenticateAgainstProtectionSpace):
        (WebKit::PreconnectTask::frameID const):
        (WebKit::PreconnectTask::pageID const):
        * NetworkProcess/PreconnectTask.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::preconnectTo):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-09-29  Alex Christensen  <achristensen@webkit.org>

        Expose WebPreferences::webGLEnabled through WKPreferences
        https://bugs.webkit.org/show_bug.cgi?id=177692
        <rdar://problem/24110556>

        Reviewed by Andy Estes.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setWebGLEnabled:]):
        (-[WKPreferences _webGLEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

        [WK2][NETWORK_SESSION] Move some authentication-related code to avoid duplication
        https://bugs.webkit.org/show_bug.cgi?id=177667

        Reviewed by Alex Christensen.

        Move some authentication-related code to avoid duplication.
        This is a preparation code supporting Download authentication
        as Download uses a NSURLSessionDownloadTask and not a
        NetworkDataTask.

        * NetworkProcess/NetworkDataTask.h:
        (WebKit::NetworkDataTask::setSuggestedFilename):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::didReceiveChallenge):
        (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::allowsSpecificHTTPSCertificateForHost):
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::didReceiveChallenge):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::didReceiveChallenge):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (WebKit::certificatesMatch):
        (WebKit::NetworkSessionCocoa::allowsSpecificHTTPSCertificateForHost):

2017-09-29  Alex Christensen  <achristensen@webkit.org>

        Fix WKWebViewConfigurationPrivate after r222663
        https://bugs.webkit.org/show_bug.cgi?id=177644

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

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

        Split some logic out of VisitedLinkStore and make it reusable
        https://bugs.webkit.org/show_bug.cgi?id=177575

        Reviewed by Alex Christensen.

        Split some logic out of VisitedLinkStore and make it reusable for other purposes than
        visited links and from other processes than the UIProcess.

        The plan is to reuse the new SharedStringHashStore for Service Worker registration
        on StorageProcess side and querying on WebContent process side.

        * CMakeLists.txt:
        * Shared/SharedStringHashStore.cpp: Added.
        (WebKit::nextPowerOf2):
        (WebKit::tableSizeForKeyCount):
        (WebKit::SharedStringHashStore::SharedStringHashStore):
        (WebKit::SharedStringHashStore::createSharedMemoryHandle):
        (WebKit::SharedStringHashStore::add):
        (WebKit::SharedStringHashStore::clear):
        (WebKit::SharedStringHashStore::resizeTable):
        (WebKit::SharedStringHashStore::pendingSharedStringHashesTimerFired):
        * Shared/SharedStringHashStore.h: Copied from Source/WebKit/WebProcess/WebPage/VisitedLinkTableController.h.
        (WebKit::SharedStringHashStore::Client::~Client):
        (WebKit::SharedStringHashStore::isEmpty const):
        * Shared/SharedStringHashTable.cpp: Renamed from Source/WebKit/Shared/VisitedLinkTable.cpp.
        (WebKit::SharedStringHashTable::SharedStringHashTable):
        (WebKit::SharedStringHashTable::~SharedStringHashTable):
        (WebKit::SharedStringHashTable::setSharedMemory):
        (WebKit::SharedStringHashTable::add):
        (WebKit::SharedStringHashTable::contains const):
        (WebKit::SharedStringHashTable::clear):
        * Shared/SharedStringHashTable.h: Renamed from Source/WebKit/Shared/VisitedLinkTable.h.
        * UIProcess/API/C/WKContext.cpp:
        (WKContextAddVisitedLink):
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:
        (-[_WKVisitedLinkStore addVisitedLinkWithURL:]):
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::VisitedLinkStore):
        (WebKit::VisitedLinkStore::addProcess):
        (WebKit::VisitedLinkStore::addVisitedLinkHash):
        (WebKit::VisitedLinkStore::removeAll):
        (WebKit::VisitedLinkStore::addVisitedLinkHashFromPage):
        (WebKit::VisitedLinkStore::sendStoreHandleToProcess):
        (WebKit::VisitedLinkStore::didInvalidateSharedMemory):
        (WebKit::VisitedLinkStore::didAddSharedStringHashes):
        * UIProcess/VisitedLinkStore.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/VisitedLinkTableController.cpp:
        (WebKit::VisitedLinkTableController::isLinkVisited):
        (WebKit::VisitedLinkTableController::addVisitedLink):
        (WebKit::VisitedLinkTableController::visitedLinkStateChanged):
        * WebProcess/WebPage/VisitedLinkTableController.h:
        * WebProcess/WebPage/VisitedLinkTableController.messages.in:

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

        Add WKWebViewConfiguration SPI equivalent to WKPageConfigurationSetBackgroundCPULimit
        https://bugs.webkit.org/show_bug.cgi?id=177644
        <rdar://problem/34338698>

        Reviewed by Geoffrey Garen.

        WKPageConfigurationSetBackgroundCPULimit is a setter of a std::optional<double> with no accessor.
        It's never set to 0 in practice, so I guess the ObjC equivalent is a double that is zero or nonzero.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _setCPULimit:]):
        (-[WKWebViewConfiguration _cpuLimit]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

2017-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Image pasting is not working on tineye.com / gmail.com / GitHub.com due to lack of support for DataTransfer.items
        https://bugs.webkit.org/show_bug.cgi?id=170449
        <rdar://problem/31432525>

        Reviewed by Wenson Hsieh.

        Add sandbox extensions for files in the pasteboard to make copying & pasting image files work.
        This is what we do for drag & drop but we should consider adding a mechanism to rekoke the extension in the future.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType): Add sandbox extensions to the pasted files.
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getPathnamesForType): Consume the sandbox tokens sent by the UI process permanently
        since WebCore will now create File objects for these pasted files.

2017-09-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Implement -[WKContentView hasText] for compatibility with the UITextInput protocol
        https://bugs.webkit.org/show_bug.cgi?id=177662
        <rdar://problem/33410373>

        Reviewed by Tim Horton.

        Implements -[WKContentView hasText] by propagating a flag through post-layout editor state.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add a new flag to EditorState indicating whether or not the current editable root containing the selection has
        any plain text. Add IPC support for this new flag.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView hasText]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::computeEditableRootHasContentAndPlainText):

        Add a new helper to compute whether or not the editable root has any content, and any plain text. This
        is used as the last cached value for -hasText on WKContentView that we will deliver to UIKit. Some important
        things to note here:
        - If post layout data already indicates that we have selected some plain text, or that there is a plain text
          character near the selection, just set the flags to true and bail, since the editable root necessarily has
          content that is plain text.
        - If hasContent is false, don't even bother computing hasPlainText, because it must also be false.
        - Otherwise, use hasAnyPlainText to compute the value of hasPlainText, which is a faster variant of plainText.
        These optimizations help us avoid doing extra work at all when running Speedometer, apart from checking the
        values of a few PostLayoutData flags. This also fixes the value of hasContent, which was previously always false
        if we had a range selection rather than a caret selection even when the editable root has content, because the
        logic to compute the value of hasContent only existed in the branch where we have a caret selection.

        (WebKit::WebPage::platformEditorState const):

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

        Fix the macOS CMake build

        * CMakeLists.txt:

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

        Revise deployment target macros from r222620

        Rubber-stamped by Wenson Hsieh.

        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::pdfDocumentDidLoad):

2017-09-28  Aishwarya Nirmal  <anirmal@apple.com>

        Request for PDF URL targets for specific pages, sections, etc.
        https://bugs.webkit.org/show_bug.cgi?id=177582
        <rdar://problem/5692679>

        Reviewed by Tim Horton.
        
        This change sets the URL fragment for scroll anchoring in PDFs.

        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::pdfDocumentDidLoad):

2017-09-28  Ross Kirsling  <ross.kirsling@sony.com>

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

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::PendingFrameLoad):
        * Shared/WebSQLiteDatabaseTracker.cpp:
        (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
        (WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):
        * Shared/WebSQLiteDatabaseTracker.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_pageScrolledHysteresis):
        (WebKit::m_userActivityHysteresis):
        (WebKit::WebPage::updateUserActivity):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        * WebProcess/WebProcess.h:

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

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

        Reviewed by Alex Christensen.

        Add support for <link rel=preconnect>:
        - https://w3c.github.io/resource-hints/#preconnect

        Also add corresponding native private API.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::preconnectTo):
        (WebKit::NetworkConnectionToWebProcess::didFinishPreconnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::preconnectTo):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/PreconnectTask.cpp: Added.
        (WebKit::PreconnectTask::PreconnectTask):
        (WebKit::PreconnectTask::~PreconnectTask):
        (WebKit::PreconnectTask::willPerformHTTPRedirection):
        (WebKit::PreconnectTask::didReceiveChallenge):
        (WebKit::PreconnectTask::didReceiveResponseNetworkSession):
        (WebKit::PreconnectTask::didReceiveData):
        (WebKit::PreconnectTask::didCompleteWithError):
        (WebKit::PreconnectTask::didSendData):
        (WebKit::PreconnectTask::wasBlocked):
        (WebKit::PreconnectTask::cannotShowURL):
        (WebKit::PreconnectTask::didFinish):
        * NetworkProcess/PreconnectTask.h: Copied from Source/WebKit/NetworkProcess/NetworkLoadParameters.h.
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextPreconnectToServer):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _preconnectToServer:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::preconnectToServer):
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didFinishPreconnection):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::networkProcessCrashed):
        (WebKit::generateLoadIdentifier):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::preconnectTo):
        (WebKit::WebLoaderStrategy::didFinishPreconnection):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        * config.h:

2017-09-28  Zan Dobersek  <zdobersek@igalia.com>

        [Cairo] Remove the cairo_glyph_t complexity from GlyphBuffer
        https://bugs.webkit.org/show_bug.cgi?id=177598

        Reviewed by Carlos Garcia Campos.

        * Shared/API/c/cairo/WKImageCairo.cpp: Explicitly include the <cairo.h>
        header here now that it's not included in GlyphBuffer.h.
        * WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp: Ditto.

2017-09-27  Alex Christensen  <achristensen@webkit.org>

        Add WKContentRuleList notify action type
        https://bugs.webkit.org/show_bug.cgi?id=177013
        <rdar://problem/31073936>

        Reviewed by Darin Adler.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::processContentExtensionRulesForLoad):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::contentRuleListNotification):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageNavigationClient.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::contentRuleListNotification):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::contentRuleListNotification):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentRuleListNotification):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-09-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Drag event DataTransfer has unexpected types "dyn.ah62d4..."
        https://bugs.webkit.org/show_bug.cgi?id=172526
        <rdar://problem/32396081>

        Reviewed by Ryosuke Niwa.

        Add boilerplate plumbing and encoder/decoder support for new pasteboard codepaths. See WebCore ChangeLog for
        more details.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardCustomData>::encode):
        (IPC::ArgumentCoder<PasteboardCustomData>::decode):

        Add encoder/decoder support for PasteboardCustomData.

        (IPC::ArgumentCoder<PasteboardWebContent>::encode):
        (IPC::ArgumentCoder<PasteboardWebContent>::decode):

        Encode and decode dataInHTMLFormat.

        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        (WebKit::WebPasteboardProxy::writeCustomData):
        * UIProcess/WebPasteboardProxy.cpp:
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        (WebKit::WebPasteboardProxy::writeCustomData):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::typesSafeForDOMToReadAndWrite):
        (WebKit::WebPlatformStrategies::writeCustomData):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-09-27  Alex Christensen  <achristensen@webkit.org>

        Allow modern decoding of std::optional<T>
        https://bugs.webkit.org/show_bug.cgi?id=177519

        Reviewed by Tim Horton.

        * Platform/IPC/ArgumentCoders.h:
        (IPC::ArgumentCoder<std::optional<T>>::decode):
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::decode):
        (IPC::ArgumentCoder<WebCore::PaymentError>::decode):
        (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode):
        (IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::decode):
        (IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::decode):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<IntPoint>::decode):
        (IPC::ArgumentCoder<IntSize>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):

2017-09-27  Commit Queue  <commit-queue@webkit.org>

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

        WebCore isn't ready for the asynchronousness this was going to
        enable (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "Pass a completion handler instead of a
        WebFramePolicyListenerProxy during policy decisions"
        https://bugs.webkit.org/show_bug.cgi?id=177509
        http://trac.webkit.org/changeset/222541

2017-09-27  Tina Liu  <iting_liu@apple.com>

        Expose setShouldSuppressFirstResponderChanges() as WKView SPI
        https://bugs.webkit.org/show_bug.cgi?id=177513
        <rdar://problem/34669220>

        Reviewed by Wenson Hsieh.

        We already have setShouldSuppressFirstResponderChanges() SPI on WKWebView; Expose it on
        WKView as well for clients using legacy WebKit.

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

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

        Have PingLoad take a CompletionHandler
        https://bugs.webkit.org/show_bug.cgi?id=177549

        Reviewed by Youenn Fablet.

        Have PingLoad take a CompletionHandler instead of relying on it calling on method on the
        NetworkConnectionToWebProcess when it is done.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::didFinish):
        * NetworkProcess/PingLoad.h:

2017-09-26  Alex Christensen  <achristensen@webkit.org>

        Pass a completion handler instead of a WebFramePolicyListenerProxy during policy decisions
        https://bugs.webkit.org/show_bug.cgi?id=177509

        Reviewed by Tim Horton.

        This makes WebFramePolicyListenerProxy just a wrapper around a WTF::Function which is only needed for the C and glib APIs.
        This is a step towards making WebPageProxy::DecidePolicyForResponseSync and WebPageProxy::DecidePolicyForNavigationAction asynchronous.

        This patch has no change in behavior.

        * CMakeLists.txt:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::decidePolicyForNavigationAction):
        (API::NavigationClient::decidePolicyForNavigationResponse):
        * UIProcess/API/APIPolicyClient.h:
        (API::PolicyClient::decidePolicyForNavigationAction):
        (API::PolicyClient::decidePolicyForNewWindowAction):
        (API::PolicyClient::decidePolicyForResponse):
        * UIProcess/API/C/WKFramePolicyListener.cpp:
        (WKFramePolicyListenerUseWithPolicies):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPagePolicyClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/glib/WebKitPolicyClient.cpp:
        * UIProcess/Automation/WebAutomationSession.cpp:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/RemoteWebInspectorProxy.cpp:
        * UIProcess/WebFormSubmissionListenerProxy.h:
        * UIProcess/WebFrameListenerProxy.cpp: Removed.
        * UIProcess/WebFrameListenerProxy.h: Removed.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
        (WebKit::WebFramePolicyListenerProxy::~WebFramePolicyListenerProxy):
        (WebKit::WebFramePolicyListenerProxy::create):
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebFramePolicyListenerProxy.h:
        (WebKit::WebFramePolicyListenerProxy::create): Deleted.
        (): Deleted.
        (WebKit::WebFramePolicyListenerProxy::operator new): Deleted.
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::webProcessWillShutDown):
        (WebKit::WebFrameProxy::receivedPolicyDecision): Deleted.
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy): Deleted.
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponseSync):
        (WebKit::WebPageProxy::receivedPolicyDecision): Deleted.
        (WebKit::WebPageProxy::decidePolicyForResponse): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/ViewGestureControllerMac.mm:
        * WebKit.xcodeproj/project.pbxproj:

2017-09-26  Brian Burg  <bburg@apple.com>

        Web Automation: overflow:hidden elements with no children are mistakenly reported as not visible
        https://bugs.webkit.org/show_bug.cgi?id=177514
        <rdar://problem/31936291>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Automation/atoms/ElementDisplayed.js:
        (isShown.isElementSubtreeHiddenByOverflow):
        Array.prototype.every returns true when passed an empty list, so we need
        to check for the case where the element has no children and return 'false'.

2017-09-26  Youenn Fablet  <youenn@apple.com>

        [Cocoa] Add a modern WKPreferences switch to disable WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=176638
        <rdar://problem/34335158>

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _peerConnectionEnabled]):
        (-[WKPreferences _setPeerConnectionEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-09-26  Brent Fulgham  <bfulgham@apple.com>

        Harden our access to the vector of URL schemes.
        https://bugs.webkit.org/show_bug.cgi?id=177470
        <rdar://problem/33881522>

        Reviewed by Chris Dumez.

        Instead of asserting, use MESSAGE_CHECK so that we actually refuse to access an invalid iterator.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::stopURLSchemeTask):

2017-09-26  Jer Noble  <jer.noble@apple.com>

        Thrown ObjC exception when right clicking on <img> containing mp4 link
        https://bugs.webkit.org/show_bug.cgi?id=177370

        Reviewed by Darin Adler.

        Creating a NSImage from mp4 data will fail and return nil; do a nil-check before attempting
        to put the results into a NSMutableArray.

        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::createShareMenuItem):

2017-09-26  Brian Burg  <bburg@apple.com>

        Web Automation: add commands to get and set user permissions for pages in an automation session
        https://bugs.webkit.org/show_bug.cgi?id=177405
        <rdar://problem/34493846>

        Reviewed by Joseph Pecoraro.

        To test some Web APIs via WebDriver, it needs to be possible to simulate a user accepting or
        denying requests for elevated permissions, such as getUserMedia() or geolocation.

        This patch adds a generic way for a test to configure the automation session's
        simulated user action that will happen every time a specific permission is requested.
        A test can set a "session permission", trigger the permission request via Web API,
        and then verify that the page behaves correctly when the user accepted or denied the request.

        A proposal will follow shortly to expose this functionality via a new REST API endpoint.

        * UIProcess/Automation/Automation.json: Add get/set commands.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::getSessionPermissions):
        (WebKit::WebAutomationSession::setSessionPermissions):
        For now, store the permission value in a member of the session. The getUserMedia
        permission only needs a bool, but there is no reason we couldn't use more complicated
        values for permissions (i.e., strings, numbers, arrays, objects) someday.

        (WebKit::WebAutomationSession::shouldAllowGetUserMediaForPage const):
        Expose the specific decision to be taken based on whether the request is allowed or denied.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        If the page is under automation, then simulate the user action according to the
        current values of permissions set for the session.

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Make PolicyAction an encodable enum class
        https://bugs.webkit.org/show_bug.cgi?id=177480

        Reviewed by Antti Koivisto.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::continueDecidePendingDownloadDestination):
        (WebKit::DownloadManager::cancelDownload):
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession):
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::~NetworkLoad):
        (WebKit::NetworkLoad::continueDidReceiveResponse):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::didReceiveResponseNetworkSession):
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
        (WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionResponseDisposition):
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
        * Scripts/webkit/messages.py:
        (headers_for_type):
        * UIProcess/WebFormSubmissionListenerProxy.h:
        * UIProcess/WebFrameListenerProxy.h:
        (WebKit::WebFrameListenerProxy::navigation): Deleted.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::invalidatePolicyListener):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-25  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [WinCairo] Share default value of font family preferences among non-cocoa builds
        https://bugs.webkit.org/show_bug.cgi?id=177479

        Reviewed by Yusuke Suzuki.

        * Shared/WebPreferencesDefinitions.h:

2017-09-25  Frederik Riedel  <riedel@apple.com>

        Expose way to set values of classified form controls as {Legacy WebKit, WebKit} SPI
        https://bugs.webkit.org/show_bug.cgi?id=174394
        <rdar://problem/33183504>

        Reviewed by Ryosuke Niwa.

        * Platform/spi/ios/UIKitSPI.h:
        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        Encodes additional node information, including if the node is part of a login screen.
        (WebKit::AssistedNodeInformation::decode):
        Decodes the additional assisted node information.
        * Shared/AssistedNodeInformation.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView acceptsAutofilledLoginCredentials]):
        Determines if the WKContentView shows a login screen.
        (-[WKContentView representingPageUrl]):
        Returns the URL of the currently displayed web page.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertTextSuggestion:]):
        Inserts the login credentials into the Web View.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startAssistingNode):
        Transfer the additional assistednode information (acceptsAutofilledLoginCredentials and representingPageUrl).
        (WebKit::WebPageProxy::acceptsAutofilledLoginCredentials):
        Returns if the Web View shows a login screen.
        (WebKit::WebPageProxy::representingPageUrl):
        Returns the Web View's URL.
        (WebKit::WebPageProxy::autofillLoginCredentials):
        Insert the credentials into the Web View.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getAssistedNodeInformation): Transports the information if the currently
        highlighted node accepts autofilled login credentials.
        (WebKit::WebPage::autofillLoginCredentials): Fills the login credentials into the
        WebPage.

2017-09-25  Youenn Fablet  <youenn@apple.com>

        WebRTC video does not resume receiving when switching back to Safari 11 on iOS
        https://bugs.webkit.org/show_bug.cgi?id=175472
        <rdar://problem/33860863>

        Reviewed by Darin Adler.

        Notifying LibWebRTC of backgrounding/foregrouding.

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

2017-09-25  Sam Weinig  <sam@webkit.org>

        Remove unused EditorClient functions
        https://bugs.webkit.org/show_bug.cgi?id=177463

        Reviewed by Alex Christensen.

        Remove unused EditorClient functions.

        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::canonicalizeURL): Deleted.
        (WebKit::WebEditorClient::canonicalizeURLString): Deleted.
        (WebKit::WebEditorClient::writeDataToPasteboard): Deleted.
        (WebKit::WebEditorClient::supportedPasteboardTypesForCurrentSelection): Deleted.
        (WebKit::WebEditorClient::readDataFromPasteboard): Deleted.
        (WebKit::WebEditorClient::pasteboardChangeCount): Deleted.
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        (WebKit::WebEditorClient::canonicalizeURL): Deleted.
        (WebKit::WebEditorClient::canonicalizeURLString): Deleted.

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Make Attribute an enum class
        https://bugs.webkit.org/show_bug.cgi?id=177414

        Reviewed by Yusuke Suzuki.

        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
        (WebKit::JSNPObject::getOwnPropertySlot):

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Stop using PolicyCallback
        https://bugs.webkit.org/show_bug.cgi?id=176088

        Reviewed by Andy Estes.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::invalidatePolicyListener):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebInspector.cpp:

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

        [WK2] Add API to query if a download was user-initiated
        https://bugs.webkit.org/show_bug.cgi?id=177435
        <rdar://problem/34498422>

        Reviewed by Alex Christensen.

        Add C and Cocoa private API to query if a download was user-initiated.

        For clarity, we now construct navigation object for subframe loads
        as well (we used to do so only for main frame loads). This allows us
        to store the user-intiated flag and the redirect chain on the navigation
        object instead of the WebFrameProxy.

        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::Navigation):
        (API::Navigation::appendRedirectionURL):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::takeRedirectChain):
        (API::Navigation::setWasUserInitiated):
        (API::Navigation::wasUserInitiated const):
        * UIProcess/API/C/WKDownload.cpp:
        (WKDownloadGetWasUserInitiated):
        * UIProcess/API/C/WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload wasUserInitiated]):
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::setWasUserInitiated):
        (WebKit::DownloadProxy::wasUserInitiated const):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameProxy::didFailProvisionalLoad):
        (WebKit::WebFrameProxy::didFinishLoad):
        (WebKit::WebFrameProxy::didFailLoad):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::title const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::decidePolicyForResponseSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

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

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

        Reviewed by Youenn Fablet.

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

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        (WebKit::NetworkDataTask::NetworkDataTask):
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::shouldUseCredentialStorage):
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::makeCrossOriginAccessRequest):
        (WebKit::PingLoad::makeSimpleCrossOriginAccessRequest):
        (WebKit::PingLoad::makeCrossOriginAccessRequestWithPreflight):
        (WebKit::PingLoad::preflightSuccess):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
        (WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate existingTask:]):
        (WebKit::NetworkSessionCocoa::dataTaskForIdentifier):
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
        (WebKit::NetworkDataTaskSoup::createRequest):
        (WebKit::NetworkDataTaskSoup::authenticate):
        (WebKit::NetworkDataTaskSoup::continueAuthenticate):
        (WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
        * NetworkProcess/soup/NetworkDataTaskSoup.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::startPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-09-25  Sam Weinig  <sam@webkit.org>

        Remove unnecessary userVisibleString EditorClient function
        https://bugs.webkit.org/show_bug.cgi?id=177456

        Reviewed by Dan Bernstein.

        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::userVisibleString): Deleted.
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        (WebKit::WebEditorClient::userVisibleString): Deleted.

            Remove userVisibleString client function.

2017-09-25  Commit Queue  <commit-queue@webkit.org>

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

        broke iOS build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "Add WKContentRuleList notify action type"
        https://bugs.webkit.org/show_bug.cgi?id=177013
        http://trac.webkit.org/changeset/222455

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Separate form submission from PolicyChecker infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=177396

        Reviewed by Geoffrey Garen.

        * UIProcess/API/APIFormClient.h:
        (API::FormClient::willSubmitForm):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]):
        * UIProcess/WebFormClient.cpp:
        (WebKit::WebFormClient::willSubmitForm):
        * UIProcess/WebFormClient.h:
        * UIProcess/WebFormSubmissionListenerProxy.cpp:
        (WebKit::WebFormSubmissionListenerProxy::continueSubmission):
        (WebKit::WebFormSubmissionListenerProxy::WebFormSubmissionListenerProxy): Deleted.
        * UIProcess/WebFormSubmissionListenerProxy.h:
        (WebKit::WebFormSubmissionListenerProxy::create):
        (WebKit::WebFormSubmissionListenerProxy::WebFormSubmissionListenerProxy):
        (): Deleted.
        (WebKit::WebFormSubmissionListenerProxy::operator new): Deleted.
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpFormSubmissionListenerProxy): Deleted.
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willSubmitForm):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setUpWillSubmitFormListener):
        (WebKit::WebFrame::continueWillSubmitForm):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::continueWillSubmitForm):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Add WKContentRuleList notify action type
        https://bugs.webkit.org/show_bug.cgi?id=177013
        <rdar://problem/31073936>

        Reviewed by Darin Adler.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::processContentExtensionRulesForLoad):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::contentRuleListNotification):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageNavigationClient.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::contentRuleListNotification):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::contentRuleListNotification):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentRuleListNotification):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

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

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

        Unreviewed, just "fixing" the build.

        * PlatformMac.cmake:
        Add some missing files and include paths.

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

        Viewport fit is no longer experimental
        https://bugs.webkit.org/show_bug.cgi?id=177417

        Reviewed by Darin Adler.

        * Shared/WebPreferencesDefinitions.h:

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

        [GTK] Unreviewed, move webkit_hit_test_result_context_is_scrollbar in documentation

        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:

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

        Alphabetize experimental features list
        https://bugs.webkit.org/show_bug.cgi?id=177374

        Reviewed by Darin Adler.

        * Shared/WebPreferencesDefinitions.h:

2017-09-24  Zan Dobersek  <zdobersek@igalia.com>

        [WebKit] Changing EME setting through InjectedBundle should update WebPreferencesStore
        https://bugs.webkit.org/show_bug.cgi?id=177312

        Reviewed by Carlos Garcia Campos.

        When enabling EME through the InjectedBundle for testing purposes, it's
        only enabled in RuntimeEnabledFeatures, but not in WebPreferencesStore.
        This causes failures on imported W3C tests that cover EME persistent
        state licenses and perform parts of that test in a new window, where
        the original RuntimeEnabledFeatures state doesn't have any effect.

        To avoid those failures, when enabling EME feature for testing purposes
        through InjectedBundle, the feature should also be enabled in the
        WebPreferencesStore.

        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2017-09-22  Zalan Bujtas  <zalan@apple.com>

        WeakPtrFactory should populate m_ref lazily.
        https://bugs.webkit.org/show_bug.cgi?id=177375

        Reviewed by Geoffrey Garen.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy):
        (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker):
        * UIProcess/Cocoa/WebViewImpl.h:
        (WebKit::WebViewImpl::createWeakPtr):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl):
        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::ProcessLauncher):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertion::createWeakPtr):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_configurationPreferenceValues):
        (WebKit::m_weakPtrFactory): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::createWeakPtr const):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        (WebKit::RemoteLayerTreeDrawingArea::createWeakPtr):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):

2017-09-22  John Wilander  <wilander@apple.com>

        Re-enable configuration.HTTPCookieStorage on session without credentials
        https://bugs.webkit.org/show_bug.cgi?id=177393

        This patch rolls back the crucial change to the network session
        without credentials that landed in r221632:
        <http://trac.webkit.org/changeset/221632>

        Reviewed by Brent Fulgham.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
            Commented out the disabled cookie jar and added a FIXME
            referring to https://bugs.webkit.org/show_bug.cgi?id=177394.

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

        Enable File and Directory Entries API at runtime
        https://bugs.webkit.org/show_bug.cgi?id=176616
        <rdar://problem/34330942>

        Reviewed by Geoffrey Garen.

        Enable File and Directory Entries API at runtime on Mac/WebKit2,
        now that DataTransfer.items is enabled there.

        * Shared/WebPreferencesDefinitions.h:

2017-09-22  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r222394.

        This broke the Windows Debug Build.

        Reverted changeset:

        "Remove build-webkit's notion of feature flags having a
        default value"
        https://bugs.webkit.org/show_bug.cgi?id=177338
        http://trac.webkit.org/changeset/222394

2017-09-22  John Wilander  <wilander@apple.com>

        Non-prevalent resources should be allowed access to existing cookies in a third-party context
        https://bugs.webkit.org/show_bug.cgi?id=177336
        <rdar://problem/34578257>

        Reviewed by Brent Fulgham.

        This patch restructures what is communicated to the network process,
        from two vectors - with user interaction and without user interaction -
        to three vectors - to partition, to block, to neither partition nor block.
        The previous two vectors did not allow proper categorization into which
        domains should be partitioned, blocked, or left alone. That was the cause
        of the regression where non-prevalent third-party domains erroneously had
        their cookies blocked when they should fall back to the old behavior of
        access but no new cookies allowed to be set.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToPartitionOrBlockCookies):
        (WebKit::NetworkProcess::updatePrevalentDomainsWithAndWithoutInteraction): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies const):
        (WebKit::WebResourceLoadStatisticsStore::shouldBlockCookies const):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        (WebKit::WebResourceLoadStatisticsStore::clearPartitioningStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::resetCookiePartitioningState):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToPartitionOrBlockCookies):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        (WebKit::WebsiteDataStore::updatePrevalentDomainsWithAndWithoutInteraction): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-09-22  Tim Horton <timothy_horton@apple.com> and Michael Catanzaro <mcatanzaro@igalia.com>

        Remove build-webkit's notion of feature flags having a default value
        https://bugs.webkit.org/show_bug.cgi?id=177338

        Reviewed by Alex Christensen.

        Use ENABLE_EXPERIMENTAL_FEATURES instead of ENABLE_DEVELOPER_MODE to enable runtime
        experimental features.

        * Shared/WebPreferencesDefinitions.h:

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

        Use high resolution timestamp for event time
        https://bugs.webkit.org/show_bug.cgi?id=154246
        <rdar://problem/34333304>

        Reviewed by Ryosuke Niwa.

        Use WallTime / MonotonicTime instead of double type for clarity.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<WallTime>::encode):
        (IPC::ArgumentCoder<WallTime>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.cpp:
        (WebKit::WebEvent::WebEvent):
        * Shared/WebEvent.h:
        (WebKit::WebEvent::timestamp const):
        (WebKit::WebTouchEvent::WebTouchEvent):
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        * Shared/WebMouseEvent.cpp:
        (WebKit::WebMouseEvent::WebMouseEvent):
        * Shared/WebTouchEvent.cpp:
        (WebKit::WebTouchEvent::WebTouchEvent):
        * Shared/WebWheelEvent.cpp:
        (WebKit::WebWheelEvent::WebWheelEvent):
        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebTouchEvent):
        * Shared/ios/NativeWebTouchEventIOS.mm:
        (WebKit::NativeWebTouchEvent::NativeWebTouchEvent):
        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):
        * Shared/mac/NativeWebGestureEventMac.mm:
        (WebKit::NativeWebGestureEvent::NativeWebGestureEvent):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        * Shared/mac/WebGestureEvent.h:
        (WebKit::WebGestureEvent::WebGestureEvent):
        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebTouchEvent):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSimulateMouseDown):
        (WKBundlePageSimulateMouseUp):
        (WKBundlePageSimulateMouseMotion):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showContextMenuAtPoint):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::createWebEvent const):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPage::contextMenuAtPointInWindow):
        (WebKit::WebPage::dragEnded):
        (WebKit::WebPage::simulateMouseDown):
        (WebKit::WebPage::simulateMouseUp):
        (WebKit::WebPage::simulateMouseMotion):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::requestAdditionalItemsForDragSession):
        (WebKit::WebPage::inspectorNodeSearchMovedToPosition):

2017-09-22  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] Web Inspector: Can't load three.js
        https://bugs.webkit.org/show_bug.cgi?id=177340

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: Add JS files of three.js to InspectorFiles variable.
        * PlatformWPE.cmake: Ditto.

2017-09-21  Ryosuke Niwa  <rniwa@webkit.org>

        Enable dataTransfer.items on macOS and iOS
        https://bugs.webkit.org/show_bug.cgi?id=177335

        Reviewed by Sam Weinig.

        * Shared/WebPreferencesDefinitions.h:

2017-09-21  Dan Bernstein  <mitz@apple.com>

        Try to fix Apple internal builds with the iOS 11.0 SDK.

        * Configurations/WebKit.xcconfig: Disable framework header postprocessing for iOS 11.0.

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

        Regression(r222308): new API tests are failing for !NETWORK_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=177321

        Reviewed by Alex Christensen.

        When a load is redirected and then converted into a download, CFNetwork
        seems to call [NSURLDownloadDelegate willSendRequest:] on the download
        with a non-nil redirectResponse, which was unexpected.

        To address the issue, we now ignore the willSendRequest call if the
        new request's URL is the same as the redirectResponse one.

        * NetworkProcess/Downloads/mac/DownloadMac.mm:
        (-[WKDownloadAsDelegate download:willSendRequest:redirectResponse:]):

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

        Unreviewed, drop assertion added in r222308.

        The assertion is hit by a couple of tests still but there is no bad effect
        to the vector not being empty at this point since we clear it right after.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didStartProvisionalLoad):

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

        [WK2] Add API to get the redirect chain of a WKDownload
        https://bugs.webkit.org/show_bug.cgi?id=176628
        <rdar://problem/34338279>

        Reviewed by Alex Christensen.

        Re-enable assertion initially added in r222308 and later disabled in
        r222320. The assertion was hit because we failed to clear the redirect
        chain in WebFrameProxy::didFailProvisionalLoad().

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

2017-09-21  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r221465) WKWebViews without WebGL delegate callbacks crash when WebGL contexts are created
        https://bugs.webkit.org/show_bug.cgi?id=177306
        <rdar://problem/34351988>

        Reviewed by Chris Dumez.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        I forgot to early return after calling the default completion handler if there's no delegate selector.

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

        Unreviewed, temporarily disable assertion added in r222308 while I investigate.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didStartProvisionalLoad):

2017-09-20  Stephan Szabo  <stephan.szabo@sony.com>

        [Win] WTF: Add alias for process id to use in place of direct uses of pid_t
        https://bugs.webkit.org/show_bug.cgi?id=177017

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetNetworkProcessIdentifier):
        (WKContextGetDatabaseProcessIdentifier):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetProcessIdentifier):
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::processIdentifier const):
        * UIProcess/Launcher/ProcessLauncher.cpp:
        (WebKit::ProcessLauncher::didFinishLaunchingProcess):
        * UIProcess/Launcher/ProcessLauncher.h:
        (WebKit::ProcessLauncher::processIdentifier const):
        * UIProcess/ProcessAssertion.cpp:
        (WebKit::ProcessAssertion::ProcessAssertion):
        (WebKit::ProcessAndUIAssertion::ProcessAndUIAssertion):
        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertion::ProcessAssertion):
        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::didConnectToProcess):
        * UIProcess/ProcessThrottler.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processIdentifier const):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessIdentifier):
        (WebKit::WebProcessPool::storageProcessIdentifier):
        * UIProcess/WebProcessPool.h:

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

        [WK2] Add API to get the redirect chain of a WKDownload
        https://bugs.webkit.org/show_bug.cgi?id=176628
        <rdar://problem/34338279>

        Reviewed by Alex Christensen.

        Add API to get the redirect chain of a WKDwnload. The redirect chain includes redirects
        that happened during initial load, before the load was converted into a download.

        * UIProcess/API/C/WKDownload.cpp:
        (WKDownloadCopyRedirectChain):
        * UIProcess/API/C/WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload originatingWebView]):
        (-[_WKDownload redirectChain]):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::willSendRequest):
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::setRedirectChain):
        (WebKit::DownloadProxy::redirectChain const):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::redirectChain const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):

2017-09-20  Alex Christensen  <achristensen@webkit.org>

        Add infrastructure for adding custom headers to requests per website
        https://bugs.webkit.org/show_bug.cgi?id=177255

        Reviewed by Geoffrey Garen.

        * Shared/WebsitePolicies.cpp: Added.
        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::encode const):
        (WebKit::WebsitePolicies::decode):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesCopyCustomHeaderFields):
        (WKWebsitePoliciesSetCustomHeaderFields):
        * UIProcess/API/C/WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies customHeaderFields]):
        (-[_WKWebsitePolicies setCustomHeaderFields:]):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

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

        REGRESSION(r222194) [WPE] Library and executable output names broken
        https://bugs.webkit.org/show_bug.cgi?id=177273

        Reviewed by Carlos Alberto Lopez Perez.

        Move the WebKit2 output name variables to here from Source/cmake, since this is a better
        place and where they are set on all other ports. Update them for the changes in r222194.

        * PlatformWPE.cmake:

2017-09-20  Jonathan Bedard  <jbedard@apple.com>

        Removed nullable from UIDragItem property
        https://bugs.webkit.org/show_bug.cgi?id=176264
        <rdar://problem/31144674>

        Unreviewed build fix

        When a nullable annotation is used in a header file,
        the Objective-C compiler forces annotations on the entire
        file. Remove an unneeded annotation in UIKitSPI.h so that
        we can build in iOS 11.

        * Platform/spi/ios/UIKitSPI.h:

2017-09-20  Antti Koivisto  <antti@apple.com>

        Remove DOM and styling support for CSS Regions
        https://bugs.webkit.org/show_bug.cgi?id=177221

        Reviewed by Andreas Kling.

        * Configurations/FeatureDefines.xcconfig:

2017-09-19  Simon Fraser  <simon.fraser@apple.com>

        Do more math in terms of FloatSizes and FloatPoints
        https://bugs.webkit.org/show_bug.cgi?id=177217

        Reviewed by Zalan Bujtas.

        Add operator/(const FloatSize&, const FloatSize&), GraphicsContext::translate(const FloatPoint&),
        FloatRect.scale(FloatSize) and AffineTransform::translate(const FloatSize&)
        and use them in lots of places to do math in terms of points and sizes.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        * UIProcess/ios/DragDropInteractionState.mm:
        (WebKit::createTargetedDragPreview):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::imageForRect):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::paintSnapshotAtSize):
        (WebKit::WebPage::snapshotNode):

2017-09-19  Simon Fraser  <simon.fraser@apple.com>

        tiled-drawing/tiled-backing-in-window.html fails on Retina displays
        https://bugs.webkit.org/show_bug.cgi?id=177113

        Reviewed by Tim Horton.

        Make m_customDeviceScaleFactor a std::optional<> instead of having the weird "0 is unset"
        behavior.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::deviceScaleFactor const):
        (WebKit::WebPageProxy::setCustomDeviceScaleFactor):
        * UIProcess/WebPageProxy.h:

2017-09-19  Alex Christensen  <achristensen@webkit.org>

        Allow modern decoding of Vectors
        https://bugs.webkit.org/show_bug.cgi?id=177102

        Reviewed by Andy Estes.

        Rather than allow modern decoding of Vectors of types that only allow legacy decoding,
        I just made modern decoders for all types that we need to decode in Vectors.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::decode):
        * Platform/IPC/ArgumentCoders.cpp:
        (IPC::ArgumentCoder<std::chrono::system_clock::time_point>::decode):
        * Platform/IPC/ArgumentCoders.h:
        * Shared/AssistedNodeInformation.cpp:
        (WebKit::OptionItem::decode):
        * Shared/AssistedNodeInformation.h:
        * Shared/CallbackID.h:
        (WebKit::CallbackID::decode):
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::PaymentError>::decode):
        (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::LineItem>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ShippingMethod>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::decode):
        (IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::decode):
        (IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::decode):
        * Shared/Databases/IndexedDB/WebIDBResult.cpp:
        (WebKit::WebIDBResult::decode):
        * Shared/FrameInfoData.cpp:
        (WebKit::FrameInfoData::decode):
        * Shared/Gamepad/GamepadData.cpp:
        (WebKit::GamepadData::decode):
        * Shared/Gamepad/GamepadData.h:
        * Shared/PlatformPopupMenuData.cpp:
        (WebKit::PlatformPopupMenuData::decode):
        * Shared/PlatformPopupMenuData.h:
        * Shared/Plugins/NPIdentifierData.cpp:
        (WebKit::NPIdentifierData::decode):
        * Shared/Plugins/NPIdentifierData.h:
        * Shared/Plugins/NPVariantData.cpp:
        (WebKit::NPVariantData::decode):
        * Shared/Plugins/NPVariantData.h:
        * Shared/RTCNetwork.cpp:
        (WebKit::RTCNetwork::IPAddress::decode):
        (WebKit::RTCNetwork::SocketAddress::decode):
        (WebKit::RTCNetwork::decode):
        * Shared/RTCNetwork.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * Shared/SessionState.cpp:
        (WebKit::HTTPBody::Element::decode):
        (WebKit::FrameState::decode):
        (WebKit::PageState::decode):
        (WebKit::BackForwardListItemState::decode):
        (WebKit::BackForwardListState::decode):
        * Shared/SessionState.h:
        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::decode):
        * Shared/WebCompiledContentRuleListData.h:
        * Shared/WebContextMenuItemData.cpp:
        (WebKit::WebContextMenuItemData::decode):
        * Shared/WebContextMenuItemData.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DOMCacheEngine::CacheInfo>::decode):
        (IPC::ArgumentCoder<DOMCacheEngine::Record>::decode):
        (IPC::ArgumentCoder<FloatRect>::decode):
        (IPC::ArgumentCoder<FloatQuad>::decode):
        (IPC::ArgumentCoder<IntRect>::decode):
        (IPC::ArgumentCoder<RecentSearch>::decode):
        (IPC::ArgumentCoder<Region::Span>::decode):
        (IPC::ArgumentCoder<MimeClassInfo>::decode):
        (IPC::ArgumentCoder<PluginInfo>::decode):
        (IPC::ArgumentCoder<SelectionRect>::decode):
        (IPC::ArgumentCoder<CompositionUnderline>::decode):
        (IPC::ArgumentCoder<DictationAlternative>::decode):
        (IPC::ArgumentCoder<GrammarDetail>::decode):
        (IPC::ArgumentCoder<TextCheckingResult>::decode):
        (IPC::ArgumentCoder<BlobPart>::decode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        (IPC::ArgumentCoder<CaptureDevice>::decode):
        (IPC::ArgumentCoder<ScrollOffsetRange<float>>::decode):
        (IPC::ArgumentCoder<MediaSelectionOption>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPlatformTouchPoint.cpp:
        (WebKit::WebPlatformTouchPoint::decode):
        * Shared/WebPopupItem.cpp:
        (WebKit::WebPopupItem::decode):
        * Shared/WebPopupItem.h:
        * Shared/WebUserContentControllerDataTypes.cpp:
        (WebKit::WebUserScriptData::decode):
        (WebKit::WebUserStyleSheetData::decode):
        (WebKit::WebScriptMessageHandlerData::decode):
        * Shared/WebUserContentControllerDataTypes.h:
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::Entry::decode):
        * Shared/WebsiteData/WebsiteData.h:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        (WebKit::WebPlatformTouchPoint::decode):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<KeypressCommand>::decode):
        * UIProcess/LegacySessionStateCodingNone.cpp:
        (WebKit::decodeLegacySessionState):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::PlatformCAAnimationRemote::KeyframeValue::decode):
        (WebKit::PlatformCAAnimationRemote::Properties::decode):

2017-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        On iOS, getData can't get text set by setData during copy event
        https://bugs.webkit.org/show_bug.cgi?id=176980
        <rdar://problem/34453915>

        Reviewed by Darin Adler.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::copy): Deleted.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-09-19  Alex Christensen  <achristensen@webkit.org>

        Expose WKPageRef as a private property on WKWebView on Mac
        https://bugs.webkit.org/show_bug.cgi?id=177022
        <rdar://problem/34342762>

        Reviewed by Andy Estes.

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

2017-09-19  Alex Christensen  <achristensen@webkit.org>

        Make _WKProcessPoolConfiguration.allowsCellularAccess actually work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=177124

        Reviewed by Andy Estes.

        The boolean added in r213747 was getting lost in two places:
        1. The API::ProcessPoolConfiguration gets copied before it's used, so we need to set the bool on the copy.
        2. The bool was not getting copied from that ProcessPoolConfiguration to the NetworkProcessCreationParameters
        to be sent to the NetworkProcess to be given to the NSURLSessionConfiguration in NetworkSessionCocoa.mm.

        These two problems were fixed and verified manually with a customized iOS app on my phone.
        Unfortunately, this cannot be tested well with our current test infrastructure.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

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

        Reviewed by Alex Christensen.

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * Shared/gtk/WebKitWaylandProtocol.xml: Renamed from Source/WebKit/Shared/gtk/WebKit2WaylandProtocol.xml.
        * UIProcess/gtk/WaylandCompositor.cpp:
        * WebProcess/gtk/WaylandCompositorDisplay.cpp:

2017-09-18  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream sandbox-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=177047

        Reviewed by Daniel Bates.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        * Platform/spi/mac/QuarantineSPI.h: Added.
        * Shared/SandboxExtension.h:
        (): Deleted.
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::enableSandboxStyleFileQuarantine):
        (WebKit::ChildProcess::initializeSandbox):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::create):
        (WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
        (WebKit::SandboxExtensionImpl::~SandboxExtensionImpl):
        (WebKit::SandboxExtensionImpl::consume):
        (WebKit::SandboxExtensionImpl::invalidate):
        (WebKit::SandboxExtensionImpl::getSerializedFormat):
        (WebKit::SandboxExtension::Handle::Handle):
        (WebKit::SandboxExtension::Handle::~Handle):
        (WebKit::SandboxExtension::Handle::encode const):
        (WebKit::SandboxExtension::Handle::decode):
        (WebKit::SandboxExtension::createHandleWithoutResolvingPath):
        (WebKit::SandboxExtension::createHandleForReadWriteDirectory):
        (WebKit::SandboxExtension::createHandleForTemporaryFile):
        (WebKit::SandboxExtension::createHandleForGenericExtension):
        (WebKit::SandboxExtension::SandboxExtension):
        (WebKit::SandboxExtension::~SandboxExtension):
        (WebKit::SandboxExtension::revoke):
        (WebKit::SandboxExtension::consume):
        (WebKit::SandboxExtension::consumePermanently):
        (WebKit::wkSandboxExtensionType): Deleted.
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs):
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getSandboxExtensionsForBlobFiles):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::didChooseFilesForOpenPanel):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::processDidFinishLaunching):
        (WebKit::WebProcessPool::resumeDownload):
        (WebKit::WebProcessPool::startMemorySampler):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::registerFileBlobURL):

2017-09-18  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream WKSetCrashReportApplicationSpecificInformation() from WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=177048

        Reviewed by Alex Christensen.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendMessage):
        (IPC::readFromMachPort):
        * Platform/cocoa/CrashReporter.h: Copied from Source/WebKit/Shared/Cocoa/ChildProcessCocoa.mm.
        * Platform/cocoa/CrashReporter.mm: Copied from Source/WebKit/Shared/Cocoa/ChildProcessCocoa.mm.
        (WebKit::setCrashReportApplicationSpecificInformation):
        * Platform/spi/Cocoa/CrashReporterClientSPI.h: Copied from Source/WebKit/Shared/Cocoa/ChildProcessCocoa.mm.
        * Shared/Cocoa/ChildProcessCocoa.mm:
        (WebKit::ChildProcess::didReceiveInvalidMessage):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::_WKSetCrashReportApplicationSpecificInformation):

2017-09-18  Andy Estes  <aestes@apple.com>

        [Mac] Upstream miscellaneous WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=177029

        Reviewed by Alex Christensen.

        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::initializeProcessName):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::initializeProcessName):
        * StorageProcess/mac/StorageProcessMac.mm:
        (WebKit::StorageProcess::initializeProcessName):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::trackingAreaOptions):
        (WebKit::WebViewImpl::mightBeginScrollWhileInactive):
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::NetscapePlugin::popUpContextMenu):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::handleContextMenuEvent):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::updateActivePages):

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

        [WPE][GTK] Merge ProcessLauncher[WPE,GTK]
        https://bugs.webkit.org/show_bug.cgi?id=177041

        Unreviewed fixup, I broke the size of the argv buffer when experimenting with how to respond
        to review comments. Not sure why this didn't blow up everything during testing.

        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):

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

        [WPE][GTK] Merge ProcessLauncher[WPE,GTK]
        https://bugs.webkit.org/show_bug.cgi?id=177041

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Renamed from Source/WebKit/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp.
        (WebKit::childSetupFunction):
        (WebKit::ProcessLauncher::launchProcess):
        (WebKit::ProcessLauncher::terminateProcess):
        (WebKit::ProcessLauncher::platformInvalidate):
        * UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp: Removed.

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

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

        Reviewed by Geoffrey Garen.

        * PlatformMac.cmake:
        Add some WebKitLegacy headers to forward (for use by the tools).

2017-09-15  JF Bastien  <jfbastien@apple.com>

        WTF: use Forward.h when appropriate instead of Vector.h
        https://bugs.webkit.org/show_bug.cgi?id=176984

        Reviewed by Saam Barati.

        There's no need to include Vector.h when Forward.h will suffice. All we need is to move the template default parameters from Vector, and then the forward declaration can be used in so many new places: if a header only takes Vector by reference, rvalue reference, pointer, returns any of these, or has them as members then the header doesn't need to see the definition because the declaration will suffice.

        * Scripts/webkit/LegacyMessages-expected.h:
        * Scripts/webkit/Messages-expected.h:
        * Shared/API/APIData.h:
        * UIProcess/API/APIContextMenuClient.h:
        * UIProcess/API/APIFormClient.h:
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/API/APINotificationProvider.h:
        * UIProcess/API/glib/WebKitNotificationProvider.h:
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/TextCheckerCompletion.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPopupMenuProxy.h:
        * UIProcess/WebTextCheckerClient.h:
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Gamepad/WebGamepadProvider.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/Network/webrtc/WebRTCMonitor.h:
        * WebProcess/Network/webrtc/WebRTCResolver.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/WebOpenPanelResultListener.h:

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

        Fix the macOS CMake build
        https://bugs.webkit.org/show_bug.cgi?id=177015

        Reviewed by Andy Estes.

        * CMakeLists.txt:
        Add the new RemoteLayerTree directories to the header search path.
        Add CookieStorageUtilsCF.mm to Sources.

        * PlatformMac.cmake:
        Add a few more files, and fix the generated forwarding headers include
        path to name "WebKit" instead of "WebKit2".

2017-09-15  Youenn Fablet  <youenn@apple.com>

        Add an URL method to remove both query string and fragment identifier
        https://bugs.webkit.org/show_bug.cgi?id=176911

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::computeKeyURL):

2017-09-15  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream MediaRemote and VideoToolbox WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176953

        Reviewed by Eric Carlson.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-15  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: WebKitTestRunner hits an assertion in editing/pasteboard/datatransfer-items-copy-plaintext.html
        https://bugs.webkit.org/show_bug.cgi?id=176968

        Reviewed by Wenson Hsieh.

        Don't allocate a SharedMemory of size zero (content was empty) as this would result in a crash inside
        a WebContent process in release builds and an assertion failure in debug builds.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::readBufferFromPasteboard):

2017-09-14  Youenn Fablet  <youenn@apple.com>

        Add Cache API support of records persistency
        https://bugs.webkit.org/show_bug.cgi?id=176845

        Reviewed by Alex Christensen.

        Introducing asynchronous opening of Cache objects.
        When opening, Cache objects will read the list of records from the disk.
        They keep in memory the necessary information to make any match or remove request without reading further information from the disk.
        Cache objects thus keep during the opening time a list of callbacks to call when being opened.
        Persistent storage is implemented through NetworkCache::Storage.

        A Cache object is added a unique name so that records from a Cache cannot be mixed with records from another Cache.
        This unique name is stored persistenly in addition to the Cache name.
        This unique name is used as the key type given to the storage.

        Request, response and responsebody data are no longer kept by the Cache object.
        For regular sessions, this information is kept on the disk through NetworkCache::Storage.
        Insertion time is also stored persistently so as to keep the ordering of the records consistent.
        For private browsing sessions, this information is kept in a map owned by the Caches object.
        RecordData is renamed to RecordInformation as it now only contains the information used to handle the different Cache actions.

        For every record retrieval action, a ReadRecordTaskCounter is used.
        Its purpose is to allow retrieving the record data on the disk in parallel,
        and then send back the information when everything is read.
        In case some records cannot be correctly read, they are removed automatically at that point.
        The current implementation loads all information in memory including response bodies.
        Further improvements might consider streaming the response bodies progressively.

        For every stored record, an AsynchronousPutTaskCounter is used.
        Its purpose is also to wait for all put actions to be completed before executing the completion callback.
        In some cases, a record needs to be overriden.
        In that case, as per the specification, only the data related to the response is to be modified.
        This requires reading the record request data on disk before actually writing the whole record again.
        This is implemented in updateRecordToDisk.

        The Cache object is delegating all record writing/reading tasks to its Caches object.
        The Caches object is responsible to handle persistent/private sessions.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveRecords): Making sure Cache object is opened.
        (WebKit::CacheStorage::Engine::readCache): Ditto.
        (WebKit::CacheStorage::Engine::unlock): Disposing the cache without going through initializing it.
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::computeKeyURL):
        (WebKit::CacheStorage::queryCache):
        (WebKit::CacheStorage::updateVaryInformation):
        (WebKit::CacheStorage::Cache::toRecordInformation):
        (WebKit::CacheStorage::Cache::Cache):
        (WebKit::CacheStorage::Cache::open):
        (WebKit::CacheStorage::Cache::finishOpening):
        (WebKit::CacheStorage::ReadRecordTaskCounter::create):
        (WebKit::CacheStorage::ReadRecordTaskCounter::~ReadRecordTaskCounter):
        (WebKit::CacheStorage::ReadRecordTaskCounter::appendRecord):
        (WebKit::CacheStorage::ReadRecordTaskCounter::ReadRecordTaskCounter):
        (WebKit::CacheStorage::Cache::retrieveRecord):
        (WebKit::CacheStorage::Cache::retrieveRecords):
        (WebKit::CacheStorage::Cache::addRecord):
        (WebKit::CacheStorage::Cache::recordsFromURL):
        (WebKit::CacheStorage::Cache::recordsFromURL const):
        (WebKit::CacheStorage::AsynchronousPutTaskCounter::create):
        (WebKit::CacheStorage::AsynchronousPutTaskCounter::~AsynchronousPutTaskCounter):
        (WebKit::CacheStorage::AsynchronousPutTaskCounter::onCompletion):
        (WebKit::CacheStorage::AsynchronousPutTaskCounter::setError):
        (WebKit::CacheStorage::Cache::put):
        (WebKit::CacheStorage::Cache::remove):
        (WebKit::CacheStorage::Cache::removeFromRecordList):
        (WebKit::CacheStorage::Cache::writeRecordToDisk):
        (WebKit::CacheStorage::Cache::updateRecordToDisk):
        (WebKit::CacheStorage::Cache::readRecordFromDisk):
        (WebKit::CacheStorage::Cache::removeRecordFromDisk):
        (WebKit::CacheStorage::Cache::encode):
        (WebKit::CacheStorage::decodeRecordHeader):
        (WebKit::CacheStorage::Cache::decode):
        (WebKit::CacheStorage::Cache::keys const):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        (WebKit::CacheStorage::Cache::isOpened const):
        (WebKit::CacheStorage::Cache::uniqueName const):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        (WebKit::CacheStorage::Caches::dispose):
        (WebKit::CacheStorage::encodeCacheNames):
        (WebKit::CacheStorage::decodeCachesNames):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::readRecordsList):
        (WebKit::CacheStorage::Caches::writeRecord):
        (WebKit::CacheStorage::Caches::readRecord):
        (WebKit::CacheStorage::Caches::removeRecord):
        (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
        (WebKit::CacheStorage::Caches::salt const):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::shouldPersist const):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::store):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::writeWithoutWaiting):

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's drawHeader, drawFooter, headerHeight, and footerHeight
        https://bugs.webkit.org/show_bug.cgi?id=176889
        <rdar://problem/29270035>

        Reviewed by Andy Estes.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadAlternateHTMLString):
        (WKPageLoadAlternateHTMLStringWithUserData):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::headerHeight):
        (WebKit::UIDelegate::UIClient::footerHeight):
        (WebKit::UIDelegate::UIClient::drawHeader):
        (WebKit::UIDelegate::UIClient::drawFooter):
        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
        (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::printOperationWithPrintInfo):
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didFailProvisionalLoad):
        (WebKit::FrameLoadState::didCommitLoad):
        (WebKit::FrameLoadState::didSameDocumentNotification):
        (WebKit::FrameLoadState::setUnreachableURL):
        (WebKit::FrameLoadState::FrameLoadState): Deleted.
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::url const):
        (WebKit::FrameLoadState::provisionalURL const):
        (WebKit::FrameLoadState::unreachableURL const):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::loadURL):
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameProxy::didSameDocumentNavigation):
        (WebKit::WebFrameProxy::setUnreachableURL):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::url const):
        (WebKit::WebFrameProxy::provisionalURL const):
        (WebKit::WebFrameProxy::unreachableURL const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadAlternateHTMLString):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidChangeProvisionalURL):
        (WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-14  Andy Estes  <aestes@apple.com>

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

        Reviewed by Joseph Pecoraro.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r222033.

        This change caused API test WebKit.PrintFrame to time out.

        Reverted changeset:

        "Add WKUIDelegatePrivate equivalent of WKPageUIClient's
        drawHeader, drawFooter, headerHeight, and footerHeight"
        https://bugs.webkit.org/show_bug.cgi?id=176889
        http://trac.webkit.org/changeset/222033

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's drawHeader, drawFooter, headerHeight, and footerHeight
        https://bugs.webkit.org/show_bug.cgi?id=176889
        <rdar://problem/29270035>

        Reviewed by Andy Estes.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadAlternateHTMLString):
        (WKPageLoadAlternateHTMLStringWithUserData):
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _loadAlternateHTMLString:baseURL:forUnreachableURL:]):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::headerHeight):
        (WebKit::UIDelegate::UIClient::footerHeight):
        (WebKit::UIDelegate::UIClient::drawHeader):
        (WebKit::UIDelegate::UIClient::drawFooter):
        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
        (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::printOperationWithPrintInfo):
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didFailProvisionalLoad):
        (WebKit::FrameLoadState::didCommitLoad):
        (WebKit::FrameLoadState::didSameDocumentNotification):
        (WebKit::FrameLoadState::setUnreachableURL):
        (WebKit::FrameLoadState::FrameLoadState): Deleted.
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::url const):
        (WebKit::FrameLoadState::provisionalURL const):
        (WebKit::FrameLoadState::unreachableURL const):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::loadURL):
        (WebKit::WebFrameProxy::didStartProvisionalLoad):
        (WebKit::WebFrameProxy::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameProxy::didSameDocumentNavigation):
        (WebKit::WebFrameProxy::setUnreachableURL):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::url const):
        (WebKit::WebFrameProxy::provisionalURL const):
        (WebKit::WebFrameProxy::unreachableURL const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadAlternateHTMLString):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidChangeProvisionalURL):
        (WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] Flickering when resizing the window
        https://bugs.webkit.org/show_bug.cgi?id=176774

        Reviewed by Michael Catanzaro.

        This regressed when we switched to always start the wayland compositor. In
        AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState() we check if the nested compositor is
        running, which is always true now (if EGL and the required extensions are available). We should check if we are
        in AC mode instead.

        * UIProcess/AcceleratedDrawingAreaProxy.cpp:
        (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):

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

        [JSC] Add PrivateSymbolMode::{Include,Exclude} for PropertyNameArray
        https://bugs.webkit.org/show_bug.cgi?id=176867

        Reviewed by Sam Weinig.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::enumerate):

2017-09-14  Maureen Daum  <mdaum@apple.com>

        Introduce the option to mark an HTML element as having AutoFill available.
        https://bugs.webkit.org/show_bug.cgi?id=176710

        Reviewed by Alex Christensen.

        Introduce the option to mark an HTML element as having AutoFill available. Accessibility
        can use this property when deciding whether to announce that the focused field offers
        AutoFill.

        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        (WKBundleNodeHandleGetHTMLInputElementAutoFillAvailable):
        (WKBundleNodeHandleSetHTMLInputElementAutoFillAvailable):
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::InjectedBundleNodeHandle::isAutoFillAvailable const):
        (WebKit::InjectedBundleNodeHandle::setAutoFillAvailable):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

2017-09-13  John Wilander  <wilander@apple.com>

        Introduce Storage Access API (document parts) as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=175759
        <rdar://problem/34414107>

        Reviewed by Alex Christensen.

        Storage Access API is an experimental feature which allows cross-origin,
        sandboxed iframes to request access to their first-party storage (as
        opposed to partitioned storage). This might be restricted to cookies or
        might cover all stateful mechanisms.

        It introduces the following three developer-facing things:
        - A new readonly attribute, document.hasStorageAccess.
        - A new function, document.requestStorageAccess().
        - A new iframe sandbox token, allow-storage-access-by-user-activation.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
            Storage handling of the new type of data.
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetStorageAccessAPIEnabled):
        (WKPreferencesGetStorageAccessAPIEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
            Bumped the model version from 9 to 10.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-09-13  Andy Estes  <aestes@apple.com>

        [Apple Pay] Consider phoneticName when encoding ContactFields
        https://bugs.webkit.org/show_bug.cgi?id=176885
        <rdar://problem/34176419>

        Reviewed by Tim Horton.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::decode):

2017-09-13  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r221976.

        The test introduced was flaky from point of addition.

        Reverted changeset:

        "Introduce Storage Access API (document parts) as an
        experimental feature"
        https://bugs.webkit.org/show_bug.cgi?id=175759
        http://trac.webkit.org/changeset/221976

2017-09-13  Youenn Fablet  <youenn@apple.com>

        Internals clearCacheStorageMemoryRepresentation should return a Promise
        https://bugs.webkit.org/show_bug.cgi?id=176818

        Reviewed by Alex Christensen.

        Adding a completion handler to clearMemoryRepresentation.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
        (WebKit::WebCacheStorageConnection::clearMemoryRepresentationCompleted):
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/Cache/WebCacheStorageConnection.messages.in:

2017-09-13  Andy Estes  <aestes@apple.com>

        [CF] Upstream CFNetwork-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176729

        Reviewed by Alex Christensen.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::createSerializableRepresentation):
        (IPC::dictionaryValueOfType):
        (IPC::createArchiveList):
        (IPC::createCFURLRequestFromSerializableRepresentation):
        (IPC::createNSURLRequestFromSerializableRepresentation):
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-13  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's setIsResizable, getWindowFrame, and setWindowFrame
        https://bugs.webkit.org/show_bug.cgi?id=176857
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        isResizable is unreachable code because nothing sends Messages::WebPageProxy::GetIsResizable, so I removed it.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::setStatusBarIsVisible):
        (API::UIClient::isResizable): Deleted.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::setIsResizable):
        (WebKit::UIDelegate::UIClient::setWindowFrame):
        (WebKit::UIDelegate::UIClient::windowFrame):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getIsResizable): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

2017-09-13  Youenn Fablet  <youenn@apple.com>

        Add a lambda-based map for Vectors
        https://bugs.webkit.org/show_bug.cgi?id=176487

        Reviewed by Darin Adler.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::readCachesFromDisk):

2017-09-13  John Wilander  <wilander@apple.com>

        Introduce Storage Access API (document parts) as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=175759
        <rdar://problem/33666847>

        Reviewed by Alex Christensen.

        Storage Access API is an experimental feature which allows cross-origin,
        sandboxed iframes to request access to their first-party storage (as
        opposed to partitioned storage). This might be restricted to cookies or
        might cover all stateful mechanisms.

        It introduces the following three developer-facing things:
        - A new readonly attribute, document.hasStorageAccess.
        - A new function, document.requestStorageAccess().
        - A new iframe sandbox token, allow-storage-access-by-user-activation.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
            Storage handling of the new type of data.
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetStorageAccessAPIEnabled):
        (WKPreferencesGetStorageAccessAPIEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
            Bumped the model version from 9 to 10.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-09-13  Sergio Villar Senin  <svillar@igalia.com>

        [WebVR] Add IDLs and stubs
        https://bugs.webkit.org/show_bug.cgi?id=174202

        Reviewed by Dean Jackson.

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

2017-09-12  Ryosuke Niwa  <rniwa@webkit.org>

        Dragging & dropping a file creates an attachment element even when it's disabled
        https://bugs.webkit.org/show_bug.cgi?id=176769

        Reviewed by Tim Horton.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetAttachmentElementEnabled):
        (WKPreferencesGetAttachmentElementEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-09-12  Youenn Fablet  <youenn@apple.com>

        Introduce a RecordData for Cache to efficiently check whether it matches a corresponding request or not
        https://bugs.webkit.org/show_bug.cgi?id=176579

        Reviewed by Alex Christensen.

        Introducing RecordData that splits its stored data in mandatory data,
        used to check a record with a request and optional data that is
        necessary to build a CacheStorageEngine::Record used by WebProcess.

        The mandatory data contains the URL, Vary header information and identifiers.
        Adding routines to go from a Record to RecordData and vice versa.
        Storing in CacheStorage::Cache RecordData instead of Record.

        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::queryCache):
        (WebKit::CacheStorage::updateVaryInformation):
        (WebKit::CacheStorage::toRecord):
        (WebKit::CacheStorage::toRecordData):
        (WebKit::CacheStorage::Cache::retrieveRecords const):
        (WebKit::CacheStorage::Cache::addRecord):
        (WebKit::CacheStorage::Cache::recordsFromURL):
        (WebKit::CacheStorage::Cache::recordsFromURL const):
        (WebKit::CacheStorage::Cache::put):
        (WebKit::CacheStorage::Cache::writeRecordToDisk):
        (WebKit::CacheStorage::Cache::removeRecordFromDisk):
        * NetworkProcess/cache/CacheStorageEngineCache.h:

2017-09-12  Dan Bernstein  <mitz@apple.com>

        Tried to fix the iOS 10 build after r221930.

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

2017-09-12  Dan Bernstein  <mitz@apple.com>

        Update availability annotations to match the macOS 10.13 and iOS 11.0 GM seed SDKs
        https://bugs.webkit.org/show_bug.cgi?id=176793

        Reviewed by Tim Horton.

        Changed WK_MAC_TBA and WK_IOS_TBA to 10.13 and 11.0, respectively, in all declarations that
        appear in the GM seed SDKs. Additional changes and exceptions are noted below.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Added missing availability annotation to
          -_webView:dataOwnerForDropSession: and -_webView:dataOwnerForDragSession:.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Removed rednundant
          __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000 guards.

        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: Added missing availability annotation to
          -_setResourceLoadStatisticsTestingCallback:.

        * UIProcess/API/Cocoa/_WKFullscreenDelegate.h: Added missing availability annotation.

        * UIProcess/API/Cocoa/_WKLinkIconParameters.h: Added availability annotation that had been
          missing since macOS 10.12.3 and iOS 10.3. Corrected annotation for _WKLinkIconParameters.

        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: Added missing TBA annotation to
          _resourceLoadStatisticsDirectory.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: Removed iOS
          availability from macOS-only declaration and vice versa.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
        (-[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]): Removed an availability
          annotation from this method implementation.

        * Shared/API/Cocoa/WKDragDestinationAction.h:
        * UIProcess/API/Cocoa/WKContentRuleList.h:
        * UIProcess/API/Cocoa/WKContentRuleListStore.h:
        * UIProcess/API/Cocoa/WKError.h:
        * UIProcess/API/Cocoa/WKFrameInfo.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
        * UIProcess/API/Cocoa/WKURLSchemeHandler.h:
        * UIProcess/API/Cocoa/WKURLSchemeTask.h:
        * UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
        * UIProcess/API/Cocoa/WKUserContentController.h:
        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
        * UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
        * UIProcess/API/Cocoa/_WKGeolocationPosition.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/_WKWebViewPrintFormatter.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's runModal
        https://bugs.webkit.org/show_bug.cgi?id=176728
        <rdar://problem/29270035>
        
        Covered by a new API test.

        Reviewed by Tim Horton.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::runModal):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::canRunModal const):
        (WebKit::UIDelegate::UIClient::runModal):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runModal):

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's decidePolicyForNotificationPermissionRequest
        https://bugs.webkit.org/show_bug.cgi?id=176768
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Covered by a new API test.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
        (WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
        (WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):
        (WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):

2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Support DataTransfer.setDragImage when starting a drag on iOS
        https://bugs.webkit.org/show_bug.cgi?id=176721
        <rdar://problem/34373660>

        Reviewed by Tim Horton.

        Rename elementBounds => dragPreviewFrameInRootViewCoordinates.

        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/DragDropInteractionState.mm:
        (WebKit::DragDropInteractionState::previewForDragItem const):
        (WebKit::DragDropInteractionState::stageDragItem):

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

        REGRESSION (r221272): WKWebView gets stuck zoomed in if the web process crashes
        https://bugs.webkit.org/show_bug.cgi?id=176767
        <rdar://problem/34196874>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processDidExit]):
        Reset the "last sent" layout parameters when the Web Content process exits.
        They're no longer "last sent", and if we short-circuit from sending them
        again (from under _didRelaunchProcess), we will never send the correct
        layout width (until it changes).

2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Support tapping to add items to the current drag session in web content
        https://bugs.webkit.org/show_bug.cgi?id=176421
        <rdar://problem/31144674>

        Reviewed by Tim Horton.

        To request additional drag items, end the current drag in the web page and try to begin a drag at the new
        location. This process is transparent to the UI process, which still maintains the same UIDragSession with the
        old drag source.

        As opposed to firing a new event (for instance: `adddragitem`), this approach is taken to ensure that if the
        page wants to preventDefault() on `dragstart`, it would also prevent the user from adding it as an additional
        drag item. Using the new event approach, dealing with this case would either require the page to listen for a
        new event and call preventDefault(), which would break compatibility with pages that only preventDefault() on
        `dragstart`, or it would require the default behavior of this new event to be _not_ adding a drag item, in which
        case this approach would require pages to adopt the new event in some form.

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

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

        Clean up API::UIClient
        https://bugs.webkit.org/show_bug.cgi?id=176568

        Reviewed by Brady Eidson.

        We don't need createNewPage and createNewPageAsync.
        An async version can support synchronous delegate calls by just calling the completion handler synchronously.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        (API::UIClient::createNewPageAsync): Deleted.
        (API::UIClient::canCreateNewPageAsync): Deleted.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitUIClient.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::createNewPageCommon): Deleted.
        (WebKit::UIDelegate::UIClient::canCreateNewPageAsync): Deleted.
        (WebKit::UIDelegate::UIClient::createNewPageAsync): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:

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

        Fix memory leak introduced in r221894.
        https://bugs.webkit.org/show_bug.cgi?id=176753

        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        (WebKit::NotificationPermissionRequestManagerProxy::createRequest):
        The NotificationPermissionRequestManagerProxy keeps track of pending requests
        so they can be denied when invalidating the page.  We add them to a HashMap and in
        r221894 I removed the code that removes them from that map once the request is complete.
        This code adds the completed task removal back.
        The NotificationPermissionRequestManagerProxy and WebPageProxy have the same lifetime,
        so protecting the WebPageProxy (m_page) makes sure there is no use-after-free when the
        completion handler is called.

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

        Make NotificationPermissionRequest work with completion handlers
        https://bugs.webkit.org/show_bug.cgi?id=176753

        Reviewed by Andy Estes.

        API::UIClient::decidePolicyForNotificationPermissionRequest should take a completion handler
        which it will eventually call with a bool representing whether notifications are allowed.
        To do this, I make NotificationPermissionRequest just a wrapper for a lambda.
        One subtle change in behavior is when invalidating all outstanding requests, we deny them instead
        of just dropping them.  This results in a deny message sent where there wasn't one before,
        resulting in better cleanup in NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::decidePolicyForNotificationPermissionRequest):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Notifications/NotificationPermissionRequest.cpp: Removed.
        * UIProcess/Notifications/NotificationPermissionRequest.h:
        (WebKit::NotificationPermissionRequest::create):
        (WebKit::NotificationPermissionRequest::allow):
        (WebKit::NotificationPermissionRequest::deny):
        (WebKit::NotificationPermissionRequest::NotificationPermissionRequest):
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        (WebKit::NotificationPermissionRequestManagerProxy::invalidateRequests):
        (WebKit::NotificationPermissionRequestManagerProxy::createRequest):
        (WebKit::NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision): Deleted.
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestNotificationPermission):
        * WebKit.xcodeproj/project.pbxproj:

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

        Modernize and make API::UIClient more asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=176583

        Reviewed by Brian Burg.

        API::UIClient calls that return values synchronously require synchronous APIs unnecessarily.
        Having them call completion handlers with the results instead allows us to make asynchronous
        APIs, and existing synchronous APIs can just call the completion handlers immediately.
        
        Unfortunately an assumption that API::UIClient::windowFrame returns synchronously had worked
        its way into the WebAutomationSession, which calls WebPageProxy::getWindowFrame.  Making it
        asynchronous required making some automation protocols asynchronous so they can send their
        result once they have the resulting frames from the UIClient.
        
        No change in behaviour.

        * UIProcess/API/APIUIClient.h:
        (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::headerHeight):
        (API::UIClient::footerHeight):
        (API::UIClient::drawHeader):
        (API::UIClient::drawFooter):
        (API::UIClient::printFrame):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::buildBrowsingContextForPage):
        (WebKit::WebAutomationSession::getNextContext):
        (WebKit::WebAutomationSession::getBrowsingContexts):
        (WebKit::WebAutomationSession::getBrowsingContext):
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::performMouseInteraction):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::printFrame):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::printOperationWithPrintInfo):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::setToolbarsAreVisible):
        (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::getWindowFrameWithCompletionHandler):
        (WebKit::WebPageProxy::screenToRootView):
        (WebKit::WebPageProxy::rootViewToScreen):
        (WebKit::WebPageProxy::printFrame):
        (WebKit::WebPageProxy::headerHeight):
        (WebKit::WebPageProxy::footerHeight):
        (WebKit::WebPageProxy::drawHeader):
        (WebKit::WebPageProxy::drawFooter):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/WKPrintingView.h:
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView initWithFrameProxy:view:]):
        (-[WKPrintingView _adjustPrintingMarginsForHeaderAndFooter]):
        (-[WKPrintingView drawPageBorderWithSize:]):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):

2017-09-11  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Add entry Web Process files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=176570

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:
        * WebProcess/EntryPoint/win/WebProcessMain.cpp: Added.
        * WebProcess/win/WebProcessMainWin.cpp: Added.
        * WebProcess/win/WebProcessMainWin.h: Added.

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's decidePolicyForGeolocationPermissionRequest
        https://bugs.webkit.org/show_bug.cgi?id=176642
        <rdar://problem/29270035>

        Reviewed by Darin Adler.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
        (WebKit::Function<void):

2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Elements in the DOM with the `draggable` attribute should be draggable
        https://bugs.webkit.org/show_bug.cgi?id=176664
        <rdar://problem/32596156>

        Reviewed by Tim Horton.

        Makes a simple adjustment in DragDropInteractionState::previewForDragItem to respect the drag image supplied to
        the UI process during a "DHTML"-defined drag (i.e. DragSourceActionDHTML).

        Test: DataInteractionTests.CanStartDragOnDivWithDraggableAttribute

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _simulateDataInteractionEntered:]): Deleted.
        (-[WKWebView _simulateDataInteractionUpdated:]): Deleted.
        (-[WKWebView _simulateDataInteractionPerformOperation:]): Deleted.
        (-[WKWebView _simulateDataInteractionEnded:]): Deleted.
        (-[WKWebView _simulateDataInteractionSessionDidEnd:]): Deleted.
        (-[WKWebView _simulateWillBeginDataInteractionWithSession:]): Deleted.
        (-[WKWebView _simulatedItemsForSession:]): Deleted.
        (-[WKWebView _simulateItemsForAddingToSession:atLocation:completion:]): Deleted.
        (-[WKWebView _simulatePrepareForDataInteractionSession:completion:]): Deleted.

        Remove all -_simulate*: testing helpers on WKWebView.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/DragDropInteractionState.mm:
        (WebKit::shouldUseDragImageToCreatePreviewForDragSource):
        (WebKit::shouldUseTextIndicatorToCreatePreviewForDragSource):

        Add shouldUseDragImageToCreatePreviewForDragSource, which returns YES when dragging an image or DHTML-defined
        draggable element and the drag image exists. This is called from previewForDragItem when constructing the drag
        preview for a given UIDragItem.

        (WebKit::DragDropInteractionState::previewForDragItem const):
        (WebKit::shouldUseTextIndicatorToCreatePreviewForDragAction): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _simulateDataInteractionEntered:]): Deleted.
        (-[WKContentView _simulateDataInteractionUpdated:]): Deleted.
        (-[WKContentView _simulateDataInteractionEnded:]): Deleted.
        (-[WKContentView _simulateDataInteractionPerformOperation:]): Deleted.
        (-[WKContentView _simulateDataInteractionSessionDidEnd:]): Deleted.
        (-[WKContentView _simulateWillBeginDataInteractionWithSession:]): Deleted.
        (-[WKContentView _simulatedItemsForSession:]): Deleted.
        (-[WKContentView _simulatePrepareForDataInteractionSession:completion:]): Deleted.
        (-[WKContentView _simulateItemsForAddingToSession:atLocation:completion:]): Deleted.

        Remove all -_simulate*: testing helpers on WKContentView.

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

        Modernize BoxExtent into RectEdges
        https://bugs.webkit.org/show_bug.cgi?id=176437

        Reviewed by Simon Fraser.

        * Scripts/webkit/messages.py:
        (class_template_headers):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-11  Andy Estes  <aestes@apple.com>

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

        Reviewed by Eric Carlson.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-11  JF Bastien  <jfbastien@apple.com>

        cmake build fix

        Unreviewed

        * PlatformMac.cmake: one file was deleted, another renamed.

2017-09-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION: [GTK] Generated HTML API documentation is missing descriptions
        https://bugs.webkit.org/show_bug.cgi?id=176667

        Reviewed by Michael Catanzaro.

        Fix several typos in API documentation.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init):
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init):
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:

2017-09-10  Brady Eidson  <beidson@apple.com>

        Try to avoid creating the default WKWebsiteDataStore until its actually needed.
        <rdar://problem/33164453> and https://bugs.webkit.org/show_bug.cgi?id=176551

        Reviewed by Tim Horton.

        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::defaultDataStore):
        (API::WebsiteDataStore::defaultDataStoreExists):
        * UIProcess/API/APIWebsiteDataStore.h:

        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetWebsiteDataStore):

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _defaultDataStoreExists]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        (WebKit::m_hiddenPageThrottlingTimer):
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::warmInitialProcess):
        (WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::isAssociatedProcessPool const):

2017-09-09  Mark Lam  <mark.lam@apple.com>

        Avoid duplicate computations of ExecState::vm().
        https://bugs.webkit.org/show_bug.cgi?id=176647

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/JSNPMethod.h:
        (WebKit::JSNPMethod::create):
        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::setProperty):
        (WebKit::NPJSObject::removeProperty):
        (WebKit::NPJSObject::enumerate):

2017-09-08  Joseph Pecoraro  <pecoraro@apple.com>

        Fetch's Response.statusText is unexpectedly the full http status line for HTTP/2 responses
        https://bugs.webkit.org/show_bug.cgi?id=176479

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        Initialize AtomicString statics like emptyAtom().

2017-09-08  Commit Queue  <commit-queue@webkit.org>

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

        This caused build failures. (Requested by mlewis13 on
        #webkit).

        Reverted changeset:

        "[Mac] Upstream QTKit-related WebKitSystemInterface functions"
        https://bugs.webkit.org/show_bug.cgi?id=176472
        http://trac.webkit.org/changeset/221773

2017-09-08  Stephan Szabo  <stephan.szabo@am.sony.com>

        [WinCairo] Add Storage Process files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=176567

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:
        * StorageProcess/EntryPoint/win/StorageProcessMain.cpp: Added.
        (main):
        * StorageProcess/win/StorageProcessMainWin.cpp: Added.
        (WebKit::StorageProcessMainWin):
        * StorageProcess/win/StorageProcessMainWin.h: Added.

2017-09-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r221771.

        This change caused two API tests to crash.

        Reverted changeset:

        "Clean up API::UIClient"
        https://bugs.webkit.org/show_bug.cgi?id=176568
        http://trac.webkit.org/changeset/221771

2017-09-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] UI process crash in WebBackForwardList::restoreFromState
        https://bugs.webkit.org/show_bug.cgi?id=176303

        Reviewed by Michael Catanzaro.

        Ensure the current index provided by the session state is not out of actual item list bounds. This is a bug in
        the session state decoder, but WebBackForwardList::backForwardListState() is already doing the check and using
        the last item index instead, so it's not easy to know where the actual problem is. In any case we should
        still protect the decoder.

        * UIProcess/API/glib/WebKitWebViewSessionState.cpp:
        (decodeSessionState):

2017-09-07  Andy Estes  <aestes@apple.com>

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

        Reviewed by Eric Carlson.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Clean up API::UIClient
        https://bugs.webkit.org/show_bug.cgi?id=176568

        Reviewed by Brady Eidson.

        We don't need createNewPage and createNewPageAsync.
        An async version can support synchronous delegate calls by just calling the completion handler synchronously.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        (API::UIClient::createNewPageAsync): Deleted.
        (API::UIClient::canCreateNewPageAsync): Deleted.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitUIClient.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::createNewPageCommon): Deleted.
        (WebKit::UIDelegate::UIClient::canCreateNewPageAsync): Deleted.
        (WebKit::UIDelegate::UIClient::createNewPageAsync): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Make DragControllerAction an enum class
        https://bugs.webkit.org/show_bug.cgi?id=176565

        Reviewed by Andy Estes.

        * Shared/DragControllerAction.h:
        (): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dragEntered):
        (WebKit::WebPageProxy::dragUpdated):
        (WebKit::WebPageProxy::dragExited):
        (WebKit::WebPageProxy::performDragOperation):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-09-07  Myles C. Maxfield  <mmaxfield@apple.com>

        [PAL] Unify PlatformUserPreferredLanguages.h with Language.h
        https://bugs.webkit.org/show_bug.cgi?id=176561

        Reviewed by Brent Fulgham.

        * UIProcess/WebProcessPool.cpp:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::userPreferredLanguagesChanged const):

2017-09-07  Youenn Fablet  <youenn@apple.com>

        Remove entry from CacheStorageEngineConnection lock map when unlocking a Cache
        https://bugs.webkit.org/show_bug.cgi?id=176548

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::dereference):

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

        [WK2] Add C API to retrieve the originating page of a WKDownload
        https://bugs.webkit.org/show_bug.cgi?id=176557
        <rdar://problem/34314776>

        Reviewed by Alex Christensen.

        Add C API to retrieve the original page of a WKDownload. This is the C API equivalent to
        _WKDownload.originatingWebView which already exists in ObjC. The pointer is weak so as
        to not keep alive the page for the duration of the download.

        * UIProcess/API/C/WKDownload.cpp:
        (WKDownloadGetOriginatingPage):
        * UIProcess/API/C/WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload originatingWebView]):
        * UIProcess/API/Cocoa/_WKDownloadInternal.h:
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::originatingPage const):
        (WebKit::DownloadProxy::setOriginatingPage):
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::download):
        (WebKit::WebProcessPool::resumeDownload):
        (WebKit::WebProcessPool::createDownloadProxy):
        * UIProcess/WebProcessPool.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::handleDownloadRequest):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::handleDownloadRequest):

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Clean up Geolocation request handling
        https://bugs.webkit.org/show_bug.cgi?id=176562

        Reviewed by Tim Horton.

        Instead of passing a GeolocationPermissionRequestProxy& to each client and returning a bool if the request will be handled,
        pass a Function<void(bool)>&& completionHandler and return the function if it won't be handled.
        This allows to temporarily support our UIClient/PageClient hybrid design while moving towards a sane design.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::Function<void):
        (API::UIClient::decidePolicyForGeolocationPermissionRequest): Deleted.
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKGeolocationPermissionRequest.cpp:
        (WKGeolocationPermissionRequestGetTypeID):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/GeolocationPermissionRequestProxy.cpp:
        (WebKit::GeolocationPermissionRequestProxy::allow):
        (WebKit::GeolocationPermissionRequestProxy::deny):
        (WebKit::GeolocationPermissionRequestProxy::invalidate):
        * UIProcess/GeolocationPermissionRequestProxy.h:
        (WebKit::GeolocationPermissionRequest::create):
        (WebKit::GeolocationPermissionRequest::allow):
        (WebKit::GeolocationPermissionRequest::deny):
        (WebKit::GeolocationPermissionRequest::GeolocationPermissionRequest):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::decidePolicyForGeolocationPermissionRequest): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::Function<void):
        (WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest): Deleted.
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKGeolocationProviderIOS.h:
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS decidePolicyForGeolocationRequestFromOrigin:frame:completionHandler:view:]):
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        (-[WKGeolocationProviderIOS geolocationAuthorizationDenied]):
        (-[WKWebAllowDenyPolicyListener initWithCompletionHandler:]):
        (-[WKWebAllowDenyPolicyListener allow]):
        (-[WKWebAllowDenyPolicyListener deny]):
        (-[WKGeolocationProviderIOS decidePolicyForGeolocationRequestFromOrigin:frame:request:view:]): Deleted.
        (-[WKWebAllowDenyPolicyListener initWithPermissionRequestProxy:]): Deleted.

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Allow modern decoding of enums and OptionSets
        https://bugs.webkit.org/show_bug.cgi?id=176480

        Reviewed by Andy Estes.

        * Platform/IPC/ArgumentCoders.h:
        (IPC::ArgumentCoder<OptionSet<T>>::decode):
        * Platform/IPC/Decoder.h:
        (IPC::Decoder::operator>>):
        * Platform/IPC/Encoder.h:
        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::encode const):
        (WebKit::WebsitePolicies::decode):

2017-09-07  Frederic Wang  <fwang@igalia.com>

         Move more code from ScrollingTreeScrollingNodeDelegateIOS to ScrollingTreeScrollingNodeDelegate
         https://bugs.webkit.org/show_bug.cgi?id=174130

         Reviewed by Simon Fraser.

         * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h: Remove some members,
         headers and pre-declaration that are moved into the delegate.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollLayer): Deleted.
         * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: Remove some headers and
         WKOverflowScrollViewDelegate since they are moved into the delegate file. Also fix the
         comment to closing the WebKit namespace.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::~ScrollingTreeOverflowScrollingNodeIOS):
         Remove some code moved into the delegate and call the corresponding helper function to
         preserve the current behavior.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren): Ditto.
         Note that it is only necessary to cast the parameter to a ScrollingStateTreeNode.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateAfterChildren): Ditto.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterAncestorChange): Ditto.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollPosition): Ditto.
         (WebKit::ScrollingTreeOverflowScrollingNodeIOS::setScrollLayerPosition): Ditto.
         (-[WKOverflowScrollViewDelegate initWithScrollingTreeNodeDelegate:]): Deleted.
         (-[WKOverflowScrollViewDelegate scrollViewDidScroll:]): Deleted.
         (-[WKOverflowScrollViewDelegate scrollViewWillBeginDragging:]): Deleted.
         (-[WKOverflowScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]): Deleted.
         (-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]): Deleted.
         (-[WKOverflowScrollViewDelegate scrollViewDidEndDecelerating:]): Deleted.
         * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: Import headers and members
         from ScrollingTreeOverflowScrollingNodeIOS. Define new helper functions for the code imported
         from ScrollingTreeOverflowScrollingNodeIOS. Remove the friendship with
         ScrollingTreeOverflowScrollingNodeIOS and only makes public the function used by that class.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollLayer): This function is moved from
         ScrollingTreeOverflowScrollingNodeIOS.
         * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: Add headers,
         WKOverflowScrollViewDelegate (renamed WKScrollingNodeScrollViewDelegate) and some helper code
         imported from ScrollingTreeOverflowScrollingNodeIOS.
         (-[WKScrollingNodeScrollViewDelegate scrollViewDidScroll:]): Moved from
         ScrollingTreeOverflowScrollingNodeIOS.
         (-[WKScrollingNodeScrollViewDelegate scrollViewWillBeginDragging:]): Ditto.
         (-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]): Ditto.
         (-[WKScrollingNodeScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]): Ditto.
         (-[WKScrollingNodeScrollViewDelegate scrollViewDidEndDecelerating:]): Ditto.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::~ScrollingTreeScrollingNodeDelegateIOS):
         Import code from ScrollingTreeOverflowScrollingNodeIOS.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::resetScrollViewDelegate): New helper function
         importing code from ScrollingTreeOverflowScrollingNodeIOS.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren): Ditto.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren): Ditto.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateLayersAfterAncestorChange): Ditto.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollPosition): Ditto.
         (WebKit::ScrollingTreeScrollingNodeDelegateIOS::setScrollLayerPosition): Ditto.

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

        [WK2] Notify client when downloads are redirected
        https://bugs.webkit.org/show_bug.cgi?id=176481
        <rdar://problem/34309065>

        Reviewed by Geoffrey Garen.

        Notify client when downloads are redirected via both ObjC and C
        API.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::willSendRedirectedRequest):
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/mac/DownloadMac.mm:
        (-[WKDownloadAsDelegate download:willSendRequest:redirectResponse:]):
        * UIProcess/API/APIDownloadClient.h:
        (API::DownloadClient::willSendRequest):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetDownloadClient):
        * UIProcess/API/C/WKContextDownloadClient.h:
        * UIProcess/API/Cocoa/_WKDownloadDelegate.h:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::DownloadClient):
        (WebKit::DownloadClient::willSendRequest):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::willSendRequest):
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/Downloads/DownloadProxy.messages.in:

        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
        Set menu proxy before calling menuFromProposedMenu() client delegate.
        This allows me to perform one of the menu item's action from the
        menuFromProposedMenu() client delegate in my API test.

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Modernize Geolocation code
        https://bugs.webkit.org/show_bug.cgi?id=176496

        Reviewed by Andy Estes.

        Making the GeolocationPermissionRequestManager take a reference instead of a pointer
        spilled into making the other supplement constructors do the same.

        * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
        (WebKit::LegacyCustomProtocolManager::LegacyCustomProtocolManager):
        (WebKit::LegacyCustomProtocolManager::startLoading):
        (WebKit::LegacyCustomProtocolManager::stopLoading):
        * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::addSupplement):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::AuthenticationManager):
        (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::decidePolicyForGeolocationPermissionRequest):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::WebCookieManager):
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        (WebKit::WebCookieManager::deleteCookie):
        (WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManager::getAllCookies):
        (WebKit::WebCookieManager::getCookies):
        (WebKit::WebCookieManager::setCookie):
        (WebKit::WebCookieManager::setCookies):
        (WebKit::WebCookieManager::notifyCookiesDidChange):
        (WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
        (WebKit::GeolocationPermissionRequestManager::GeolocationPermissionRequestManager):
        (WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
        (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation):
        * WebProcess/Geolocation/GeolocationPermissionRequestManager.h:
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        (WebKit::WebGeolocationManager::WebGeolocationManager):
        (WebKit::WebGeolocationManager::registerWebPage):
        (WebKit::WebGeolocationManager::unregisterWebPage):
        (WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
        (WebKit::WebGeolocationManager::didChangePosition):
        (WebKit::WebGeolocationManager::didFailToDeterminePosition):
        (WebKit::WebGeolocationManager::resetPermissions):
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.h:
        (WebKit::WebMediaKeyStorageManager::WebMediaKeyStorageManager):
        * WebProcess/Notifications/WebNotificationManager.cpp:
        (WebKit::WebNotificationManager::WebNotificationManager):
        (WebKit::WebNotificationManager::show):
        (WebKit::WebNotificationManager::cancel):
        (WebKit::WebNotificationManager::clearNotifications):
        (WebKit::WebNotificationManager::didDestroyNotification):
        * WebProcess/Notifications/WebNotificationManager.h:
        * WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
        (WebKit::WebGeolocationClient::requestPermission):
        (WebKit::WebGeolocationClient::cancelPermissionRequest):
        * WebProcess/WebCoreSupport/WebGeolocationClient.h:
        (WebKit::WebGeolocationClient::WebGeolocationClient):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::addSupplement):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::UserMediaCaptureManager):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's pageDidScroll
        https://bugs.webkit.org/show_bug.cgi?id=176482
        <rdar://problem/29270035>

        Reviewed by Tim Horton.
        
        Covered by a new API test!

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::pageDidScroll):

2017-09-06  Youenn Fablet  <youenn@apple.com>

        NetworkProcess Cache and Caches should be cleared when the last related WebProcess Cache or CacheStorage is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=176249

        Reviewed by Alex Christensen.

        CacheStorageEngineConnection will store the number of Caches references for its related WebProcess.
        For a new reference, CacheStorageEngineConnection will notify its engine to lock the related Cache.
        When the last reference is gone, CacheStorageEngineConnection will ask the engine to release the lock.

        CacheStorageEngine will keep locks as a counter for each Cache object.
        When the counter goes to zero, the engine asks the Cache to dispose itself.
        Disposal is done by its parent Caches as only Caches knows whether the Cache is persistent or has been removed.

        The Caches will remove the Cache from memory.
        For removed caches, all information will be lost.
        For caches that are not removed, they will keep their identifiers but all in-memory record information will be discarded.
        If there is a need to reopen the Cache, it will need to read its information from the filesystem.
        If the Caches has no longer any active Cache object, it will ask the engine to release itself.

        WebProcess crashing is handled correctly as the CacheStorageEngineConnection will release its locks at destruction
        time of the connection to the web process.

        Adding the possiblity to grab an engine representation for test purposes.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        (WebKit::CacheStorage::Engine::removeCaches):
        (WebKit::CacheStorage::Engine::lock):
        (WebKit::CacheStorage::Engine::unlock):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::Cache):
        (WebKit::CacheStorage::Cache::dispose):
        (WebKit::CacheStorage::Cache::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        (WebKit::CacheStorage::Cache::isActive const):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::dispose):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::create):
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::~CacheStorageEngineConnection):
        (WebKit::CacheStorageEngineConnection::reference):
        (WebKit::CacheStorageEngineConnection::dereference):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::reference):
        (WebKit::WebCacheStorageConnection::dereference):
        * WebProcess/Cache/WebCacheStorageConnection.h:

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's pinnedStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=176474
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Rather than telling the UIClient that the pinned state changed and having the application check 4 bools
        like we do with WKPage, I made a KVO property on the WKWebView.  I introduce _WKRectEdge for this purpose,
        which is like UIRectEdge but unfortunately NSRectEdge and CGRectEdge cannot be used as NS_OPTIONS/flags.
        This same structure is used for rubber band state.
        
        Covered by a new API test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _pinnedState]):
        (-[WKWebView _rubberBandState]):
        (-[WKWebView _setRubberBandState:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::pinnedState):
        (WebKit::WebViewImpl::rubberBandState):
        (WebKit::WebViewImpl::setRubberBandState):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::pinnedStateWillChange):
        (WebKit::PageClient::pinnedStateDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::pinnedStateWillChange):
        (WebKit::PageClientImpl::pinnedStateDidChange):

2017-09-06  Youenn Fablet  <youenn@apple.com>

        Introduce asynchronous opening of CacheStorageEngine cache
        https://bugs.webkit.org/show_bug.cgi?id=176425

        Reviewed by Alex Christensen.

        Introducing Cache::open to allow reading from the filesystem to fill the Cache.
        This is called by Caches when engine requests to open an existing Cache.

        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::Cache):
        (WebKit::CacheStorage::Cache::open):
        (WebKit::CacheStorage::Cache::finishOpening):
        (WebKit::CacheStorage::Cache::readRecordsList):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::find):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::find const): Deleted.
        * NetworkProcess/cache/CacheStorageEngineCaches.h:

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

        Unreviewed, rolling out r221694.

        broke build

        Reverted changeset:

        "Add WKUIDelegatePrivate equivalent of WKPageUIClient's
        pinnedStateDidChange"
        https://bugs.webkit.org/show_bug.cgi?id=176474
        http://trac.webkit.org/changeset/221694

2017-09-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r221461.

        The LayoutTest added with this change crashes under
        GuardMalloc.

        Reverted changeset:

        "Add (entirely incorrect) fetching of ServiceWorker scripts."
        https://bugs.webkit.org/show_bug.cgi?id=176179
        http://trac.webkit.org/changeset/221461

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

        Add modern decoders for POD types
        https://bugs.webkit.org/show_bug.cgi?id=176456

        Reviewed by Geoffrey Garen.

        * Platform/IPC/Decoder.cpp:
        (IPC::Decoder::getOptional):
        (IPC::Decoder::operator>>):
        * Platform/IPC/Decoder.h:
        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's pinnedStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=176474
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Rather than telling the UIClient that the pinned state changed and having the application check 4 bools
        like we do with WKPage, I made a KVO property on the WKWebView.  I introduce _WKRectEdge for this purpose,
        which is like UIRectEdge but unfortunately NSRectEdge and CGRectEdge cannot be used as NS_OPTIONS/flags.
        This same structure is used for rubber band state.
        
        Covered by a new API test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _pinnedState]):
        (-[WKWebView _rubberBandState]):
        (-[WKWebView _setRubberBandState:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::pinnedState):
        (WebKit::WebViewImpl::rubberBandState):
        (WebKit::WebViewImpl::setRubberBandState):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::pinnedStateWillChange):
        (WebKit::PageClient::pinnedStateDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::pinnedStateWillChange):
        (WebKit::PageClientImpl::pinnedStateDidChange):

2017-09-06  Brent Fulgham  <bfulgham@apple.com>

        Deny third-party cookie creation for prevalent resources without interaction
        https://bugs.webkit.org/show_bug.cgi?id=175232
        <rdar://problem/33709386>

        Reviewed by Alex Christensen.

        Prior to Intelligent Tracking Prevention, WebKit would deny the ability to create a third party cookie if the user's
        settings prohibited it. Due to the internal mechanics of cookie partitioning, we now accept the third party cookie,
        but destroy it at some arbitrary moment which is difficult for websites to work with.
        
        This patch revises WebKit so that attempts to set third party cookies without user interaction fails immediately,
        which is what sites are expecting from Safari.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsWithAndWithoutInteraction):
        (WebKit::NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains): Renamed to updatePrevalentDomainsWithAndWithoutInteraction.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in: Renamed the UpdateCookiePartitioningForTopPrivatelyOwnedDomains message
        to UpdatePrevalentDomainsWithAndWithoutInteraction.
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Recognize cases where a network session should block cookies, and
        use the stateless session so we fail immediately when attempting an invalid cookie set operation.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (WebKit::WKWebsiteDataStore::_resourceLoadStatisticsSetShouldPartitionCookies): Use new helper function to clear partitioning state.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): Update for revised naming.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning): Track domains with and without interaction so that we can recognize
        domains that should be immediately blocked from setting cookies.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains): Update for revised naming.
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains): Added helper function for testing.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsWithAndWithoutInteraction): Update for revised naming.
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback): Ditto.
        (WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains): Renamed to updatePrevalentDomainsWithAndWithoutInteraction.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-09-06  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][CMake] Fix path to the WebKitApplicationInfo.h header.

        Unreviewed build fix.

        This doesn't really make a difference for the build bots, but it makes
        it possible to craft working release tarballs of WPE.

        * PlatformWPE.cmake: Use the WPE version of WebKitApplicationInfo.h

2017-09-06  Frédéric Wang  <fwang@igalia.com>

        Introduce ScrollingTreeScrollingNodeDelegateIOS to share code between overflow and frame scrolling
        https://bugs.webkit.org/show_bug.cgi?id=174097

        Reviewed by Darin Adler.

        This patch introduces a new ScrollingTreeScrollingNodeDelegateIOS that can be used by
        WKOverflowScrollViewDelegate to communicate to the scrolling tree and nodes. It can also be
        used as a helper class by ScrollingTreeOverflowScrollingNodeIOS. For now, only the non-
        overriden member functions of ScrollingTreeOverflowScrollingNodeIOS are moved to that new
        class. In follow-up commits, WKOverflowScrollViewDelegate can become a generic
        ScrollViewDelegate and more code can be moved into the ScrollingTreeScrollingNodeDelegateIOS
        file. Frame scrolling nodes will then be able to share the same UI code as overflow:auto when
        iOS frame scrolling is implemented (bug 149264).

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h: Move non-overriden member
        functions and m_updatingFromStateNode into the delegate class. Also define a member to store
        that delegate.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: Use the node delegate to
        communicate to the scrolling tree and node.
        (-[WKOverflowScrollViewDelegate initWithScrollingTreeNodeDelegate:]): Init with a delegate.
        (-[WKOverflowScrollViewDelegate scrollViewDidScroll:]): Call the delegate function.
        (-[WKOverflowScrollViewDelegate scrollViewWillBeginDragging:]): Ditto.
        (-[WKOverflowScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
        Use the delegate functions or pass by ScrollingTreeScrollingNodeDelegateIOS::scrollingNode().
        (-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]): Use the delegate
        functions.
        (-[WKOverflowScrollViewDelegate scrollViewDidEndDecelerating:]): Ditto.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::ScrollingTreeOverflowScrollingNodeIOS):
        Init the delegate for this class.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateAfterChildren): Use the delegate.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::setScrollLayerPosition): Use the delegate
        function.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterDelegatedScroll): Ditto.
        (-[WKOverflowScrollViewDelegate initWithScrollingTreeNode:]): Deleted. This is renamed
        initWithScrollingTreeNodeDelegate and accepts a delegate.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateChildNodesAfterScroll): Deleted. Moved
        to ScrollingTreeScrollingNodeDelegateIOS.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollWillStart): Ditto.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollDidEnd): Ditto.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewWillStartPanGesture): Ditto.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollViewDidScroll): Ditto.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::currentSnapPointIndicesDidChange): Ditto.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: Added. New delegate class
        for ScrollingTreeOverflowScrollingNodeIOS. The members used by WKOverflowScrollViewDelegate
        are public and the others are private. ScrollingTreeOverflowScrollingNodeIOS is a friend of
        ScrollingTreeScrollingNodeDelegateIOS so that it can access private members e.g.
        updateChildNodesAfterScroll() or  m_updatingFromStateNode.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: Added.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::ScrollingTreeScrollingNodeDelegateIOS):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::~ScrollingTreeScrollingNodeDelegateIOS):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll): Code extracted
        from ScrollingTreeOverflowScrollingNodeIOS.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollWillStart): Ditto.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollDidEnd): Ditto.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewWillStartPanGesture): Ditto.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll): Ditto.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::currentSnapPointIndicesDidChange): Ditto.
        * WebKit.xcodeproj/project.pbxproj: Add ScrollingTreeScrollingNodeDelegateIOS files to the
        build system.

2017-09-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Add plumbing for WKContentView to ask the web process for additional drag items
        https://bugs.webkit.org/show_bug.cgi?id=176348
        Work towards <rdar://problem/31144674>

        Reviewed by Tim Horton.

        Adds boilerplate plumbing to request additional items to an existing session. This implements some UI-side logic
        in WKContentView to send an additional drag items request and handle a response from the web process. 
        To start, WebPageProxy::requestAdditionalItemsForDragSession is invoked by -_dragInteraction:
        itemsForAddingToSession:withTouchAtPoint:completion: in WKContentView, and the response from the web process is
        handled in -[WKContentView _didHandleAdditionalDragItemsRequest:].

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

        Add SPI to simulate a request for additional drag items. See Tools/ChangeLog for more detail.

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Add an IPC message handler for the additional drag items response from the web process.

        * UIProcess/ios/DragDropInteractionState.h:
        (WebKit::DragDropInteractionState::BlockPtr<void):
        * UIProcess/ios/DragDropInteractionState.mm:
        (WebKit::DragDropInteractionState::shouldRequestAdditionalItemForDragSession const):
        (WebKit::DragDropInteractionState::dragSessionWillRequestAdditionalItem):

        Invoke the new additional items completion handler when tearing down to avoid getting UIKit into a bad state.

        (WebKit::DragDropInteractionState::dragAndDropSessionsDidEnd):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didHandleAdditionalDragItemsRequest):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):

        Factors common logic to convert a staged WebItemProviderRegistrationInfoList and DragSourceState into a list of
        drag items, invoking the private UI delegate in the process. This is called both when starting a drag session,
        and adding items to an existing drag session.

        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):

        Implements a (proposed) additional drag item delegate that serves as an asynchronous alternative to the API
        variant, -_dragInteraction:itemsForAddingToSession:withTouchAtPoint:. See <rdar://problem/33146803> for more
        information.

        (-[WKContentView dragInteraction:itemsForBeginningSession:]):

        Refactored to use -_itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:.

        (-[WKContentView _simulateItemsForAddingToSession:atLocation:completion:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didHandleAdditionalDragItemsRequest):
        (WebKit::WebPageProxy::requestAdditionalItemsForDragSession):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Add an IPC message handler for the additional drag items request from the UI process.

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

2017-09-05  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's mouseDidMoveOverElement
        https://bugs.webkit.org/show_bug.cgi?id=176428
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Covered by a new API test.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::mouseDidMoveOverElement):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        (WebKit::UIDelegate::UIClient::createNewPageCommon):
        (WebKit::UIDelegate::UIClient::runJavaScriptAlert):
        (WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
        (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
        (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
        (WebKit::UIDelegate::UIClient::takeFocus):
        (WebKit::UIDelegate::UIClient::focus):
        (WebKit::UIDelegate::UIClient::unfocus):
        (WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
        (WebKit::UIDelegate::UIClient::didNotHandleWheelEvent):
        (WebKit::toNSEventModifierFlags):
        (WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
        (WebKit::UIDelegate::UIClient::toolbarsAreVisible):
        (WebKit::UIDelegate::UIClient::didClickAutoFillButton):
        (WebKit::UIDelegate::UIClient::handleAutoplayEvent):
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        (WebKit::UIDelegate::UIClient::printFrame):
        (WebKit::UIDelegate::UIClient::close):
        (WebKit::UIDelegate::UIClient::fullscreenMayReturnToInline):
        (WebKit::UIDelegate::UIClient::didEnterFullscreen):
        (WebKit::UIDelegate::UIClient::didExitFullscreen):
        (WebKit::UIDelegate::UIClient::requestPointerLock):
        (WebKit::UIDelegate::UIClient::didLosePointerLock):
        (WebKit::UIDelegate::UIClient::hasVideoInPictureInPictureDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::mouseDidMoveOverElement):
        * UIProcess/WebPageProxy.h:

2017-09-05  Brent Fulgham  <bfulgham@apple.com>

        Relax keychain access to permit users to permanently allow client certificates
        https://bugs.webkit.org/show_bug.cgi?id=175857
        <rdar://problem/32293867>

        Reviewed by Alex Christensen.

        Further relax the write permissions on the user's Keychain directory to support local certificates.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-09-05  Youenn Fablet  <youenn@apple.com>

        Cache Storage Engine should not mix different origin caches
        https://bugs.webkit.org/show_bug.cgi?id=176394

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::readCachesFromDisk): Initializing the salt before creating the Caches object
        so that its persistency path is correctly computed.
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::cachesRootPath): Setting origin as partition string.

2017-09-05  Brent Fulgham  <bfulgham@apple.com>

        Use a single network storage session for stateless connections
        https://bugs.webkit.org/show_bug.cgi?id=176386
        <rdar://problem/34262148>

        Reviewed by Alex Christensen.

        Change the name of 'm_dataTaskMapWithoutCredentials' to 'm_dataTaskMapWithoutState'
        to reflect that the data tasks do not involve credential or cookie storage. Ditto for
        the change from 'm_sessionWIthoutCredentialStorage' to 'm_statelessSession'.

        This update should not change behavior, unless some stateless sessions were depending
        on cookies to be persistent (which would be a bug!)

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Update for new variable names.
        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa): Ditto.
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Update the configuration to block
        cookies as well.
        (WebKit::NetworkSessionCocoa::invalidateAndCancel): Update for new names.
        (WebKit::NetworkSessionCocoa::clearCredentials): Ditto.
        (WebKit::NetworkSessionCocoa::dataTaskForIdentifier): Ditto.

2017-09-05  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Add Network Process files for wincairo webkit
        https://bugs.webkit.org/show_bug.cgi?id=176069

        Reviewed by Alex Christensen.

        * NetworkProcess/Downloads/curl/DownloadCurl.cpp: Added.
        (WebKit::Download::resume):
        (WebKit::Download::platformDidFinish):
        (WebKit::Download::startNetworkLoadWithHandle):
        (WebKit::Download::startNetworkLoad):
        (WebKit::Download::platformInvalidate):
        * NetworkProcess/EntryPoint/win/NetworkProcessMain.cpp: Added.
        (main):
        * NetworkProcess/curl/NetworkProcessCurl.cpp: Added.
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::platformSetURLCacheSize):
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost):
        (WebKit::NetworkProcess::clearCacheForAllOrigins):
        (WebKit::NetworkProcess::clearDiskCache):
        (WebKit::NetworkProcess::platformTerminate):
        * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp: Added.
        (WebKit::RemoteNetworkingContext::~RemoteNetworkingContext):
        (WebKit::RemoteNetworkingContext::isValid const):
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::RemoteNetworkingContext::storageSession const):
        (WebKit::RemoteNetworkingContext::blockedError const):
        * NetworkProcess/win/NetworkProcessMainWin.cpp: Added.
        (WebKit::NetworkProcessMainWin):
        * NetworkProcess/win/NetworkProcessMainWin.h: Added.
        * NetworkProcess/win/SystemProxyWin.cpp: Added.
        (WindowsSystemProxy::getSystemHttpProxy):
        (WindowsSystemProxy::setCurlHttpProxy):
        (WindowsSystemProxy::parseProxyString):
        * NetworkProcess/win/SystemProxyWin.h: Added.
        * PlatformWin.cmake:

2017-09-05  Youenn Fablet  <youenn@apple.com>

        Allow retrieving Cache Storage records for a given URL only
        https://bugs.webkit.org/show_bug.cgi?id=176202

        Reviewed by Alex Christensen.

        Update CacheStorageEngineCache to store records as a map URL -> Vector of Records.
        This allows regular record retrieval to be faster.
        Retrieval of all records is less efficient but this should happen less often.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::queryCache):
        (WebKit::CacheStorage::Cache::retrieveRecords const):
        (WebKit::CacheStorage::computeKeyURL):
        (WebKit::CacheStorage::Cache::addNewURLRecord):
        (WebKit::CacheStorage::Cache::recordsFromURL):
        (WebKit::CacheStorage::Cache::recordsFromURL const):
        (WebKit::CacheStorage::Cache::put):
        (WebKit::CacheStorage::Cache::remove):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::doRetrieveRecords):
        * WebProcess/Cache/WebCacheStorageConnection.h:

2017-09-05  Youenn Fablet  <youenn@apple.com>

        WebKitTestRunner should set the cache storage directory path
        https://bugs.webkit.org/show_bug.cgi?id=176373

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationCopyCacheStorageDirectory):
        (WKContextConfigurationSetCacheStorageDirectory):
        * UIProcess/API/C/WKContextConfigurationRef.h:

2017-09-05  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's unavailablePluginButtonClicked
        https://bugs.webkit.org/show_bug.cgi?id=176274
        <rdar://problem/29270035>

        Reviewed by Darin Adler.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::unavailablePluginButtonClicked):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setPluginsEnabled:]):
        (-[WKPreferences _pluginsEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::toWKPluginUnavailabilityReason):
        (WebKit::UIDelegate::UIClient::unavailablePluginButtonClicked):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):

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

        Allow classes to have modern and legacy decoders to aid transition
        https://bugs.webkit.org/show_bug.cgi?id=176186

        Reviewed by Zan Dobersek.

        To illustrate this, I made legacy and modern decoders to WTF::String and transitioned one String decoder.

        * Platform/IPC/ArgumentCoder.h:
        * Platform/IPC/ArgumentCoders.cpp:
        (IPC::ArgumentCoder<String>::decode):
        * Platform/IPC/ArgumentCoders.h:
        * Platform/IPC/Decoder.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):

2017-09-05  Frederic Wang  <fwang@igalia.com>

        Use TilesBacking for iframes when async frame scrolling is enabled
        https://bugs.webkit.org/show_bug.cgi?id=173644

        Reviewed by Simon Fraser.

        This patch adds creation of TilesBacking for non-main frames when async frame scrolling is
        enabled. RenderLayerBacking::m_isMainFrameLayerWithTiledBacking is also renamed to reflect
        that tiled backing is not exclusive to the main frame. More adjustments might be needed for
        non-main frames and will be handled in follow-up commits.

        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::shouldUseTiledBackingForFrameView): Also use tiled
        backing when asyncFrameScrollingEnabled is true.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::shouldUseTiledBackingForFrameView): Ditto.

2017-09-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Rename PLUGIN_ARCHITECTURE(X11) as PLUGIN_ARCHITECTURE(UNIX)
        https://bugs.webkit.org/show_bug.cgi?id=176330

        Reviewed by Michael Catanzaro.

        It's no longer X11 specific since it's also used in Wayland when the X11 target is enabled. It should be renamed
        as UNIX and make it available when building the wayland target even if the X11 on is disabled.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * PluginProcess/unix/PluginProcessMainUnix.cpp:
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::tryLoad):
        * Shared/Plugins/Netscape/NetscapePluginModule.h:
        * Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp: Renamed from Source/WebKit/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp.
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        (WebKit::PluginInfoCache::getPluginInfo):
        (WebKit::PluginInfoCache::updatePluginInfo):
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        (WebKit::PluginProcessProxy::scanPlugin):
        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
        (WebKit::NPN_InvalidateRect):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::initialize):
        (WebKit::NetscapePlugin::destroy):
        (WebKit::NetscapePlugin::geometryDidChange):
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.cpp:
        * WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.h:
        * config.h:

2017-09-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Wrong use of PLUGIN_ARCHITECTURE(X11) in several places
        https://bugs.webkit.org/show_bug.cgi?id=176329

        Reviewed by Michael Catanzaro.

        We are using PLUGIN_ARCHITECTURE(X11) in several places where we should actually be using PLATFORM(X11). This is
        confusing because PLUGIN_ARCHITECTURE(X11) is no longer specific to X11, it will be renamed as UNIX in a follow
        up patch. Because of this we only support plugins in Wayland when building with both X11 and Wayland targets
        enabled.

        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/unix/PluginProcessMainUnix.cpp:
        * Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
        (WebKit::NetscapePluginModule::determineQuirks):
        * Shared/Plugins/PluginQuirks.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
        (WebKit::NPN_GetValue):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::shouldLoadSrcURL):
        (WebKit::NetscapePlugin::initialize):
        * WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.cpp:
        (WebKit::NetscapePlugin::platformHandleMouseEvent):
        * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
        * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:
        * WebProcess/Plugins/PluginController.h:
        * WebProcess/Plugins/PluginProxy.cpp:
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/Plugins/PluginProxy.messages.in:
        * WebProcess/Plugins/PluginView.cpp:
        * WebProcess/Plugins/PluginView.h:

2017-09-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Refactor drag and drop logic in WKContentView in preparation for supporting multiple drag items in a drag session
        https://bugs.webkit.org/show_bug.cgi?id=176264
        <rdar://problem/31144674>

        Reviewed by Darin Adler.

        Move DataInteractionState from WKContentViewInteraction.h to DragDropInteractionState.h, and also rename it to
        DragDropInteractionState. Additionally, refactor drag and drop state in the UI process to capture metadata about
        the dragged element in a separate DragSourceState struct. This patch also moves drag and drop state transition
        logic that doesn't involve WKContentView internals out of WKContentView, and into the implementation of
        DragDropInteractionState.

        To support multiple drag items per session, we also introduce a simple mechanism to trace a UIDragItem back to
        the DragSourceState used to generate it. When generating a DragSourceState, we assign it a unique identifier,
        which we also set as the privateLocalContext of all UIDragItems generated when beginning the drag (this
        includes drag items returned by an internal client that uses one of the SPI hooks to augment drag items when
        starting a drag). This is subsequently used in the implementation of lift and cancellation preview delegate
        methods to supply the appropriate drag preview for each UIDragItem.

        Lastly, fix a bug wherein the pageX and pageY of mouse drag events are inconsistent with other synthetic mouse
        events, such as synthetic clicks. For synthetic clicks, the PlatformMouseEvent is initialized with the same
        position and globalPosition. Whether this is really intended is unclear (see http://webkit.org/b/173855), but
        it's a trivial change for now to keep mouse events on iOS consistent by tweaking the behavior during drag and
        drop. See Tools/ChangeLog for some more information.

        * Platform/spi/ios/UIKitSPI.h:

        Add -[UIDragItem privateLocalContext].

        * UIProcess/ios/DragDropInteractionState.h: Added.
        (WebKit::DragDropInteractionState::stagedDragSource const):
        (WebKit::DragDropInteractionState::dropSessionDidExit):
        (WebKit::DragDropInteractionState::dropSessionWillPerformDrop):
        (WebKit::DragDropInteractionState::adjustedPositionForDragEnd const):
        (WebKit::DragDropInteractionState::didBeginDragging const):
        (WebKit::DragDropInteractionState::isPerformingDrop const):
        (WebKit::DragDropInteractionState::dragSession const):
        (WebKit::DragDropInteractionState::dropSession const):

        Wrap private drag/drop state member variables behind const getters, and move drag and drop logic that involves
        only the DragDropInteractionState into helper methods on DragDropInteractionState.

        (WebKit::DragDropInteractionState::BlockPtr<void):
        * UIProcess/ios/DragDropInteractionState.mm: Added.
        (WebKit::dragItemMatchingIdentifier):
        (WebKit::createTargetedDragPreview):
        (WebKit::uiImageForImage):

        Move drag preview creation logic here, from WKContentViewInteraction.mm.

        (WebKit::shouldUseTextIndicatorToCreatePreviewForDragAction):
        (WebKit::DragDropInteractionState::activeDragSourceForItem const):
        (WebKit::DragDropInteractionState::anyActiveDragSourceIs const):
        (WebKit::DragDropInteractionState::prepareForDragSession):
        (WebKit::DragDropInteractionState::dragSessionWillBegin):
        (WebKit::DragDropInteractionState::previewForDragItem const):
        (WebKit::DragDropInteractionState::dragSessionWillDelaySetDownAnimation):
        (WebKit::DragDropInteractionState::dropSessionDidEnterOrUpdate):
        (WebKit::DragDropInteractionState::stageDragItem):
        (WebKit::DragDropInteractionState::hasStagedDragSource const):
        (WebKit::DragDropInteractionState::clearStagedDragSource):
        (WebKit::DragDropInteractionState::dragAndDropSessionsDidEnd):
        (WebKit::DragDropInteractionState::updatePreviewsForActiveDragSources):
        * UIProcess/ios/WKContentViewInteraction.h:

        Move drag-and-drop-related state tied to the WKContentView here, from DataInteractionState (for instance, the
        UIView for the drop caret, the WKContentView snapshot when dropping, and a flag use to keep track of hiding the
        callout bar when dragging a text selection).

        (): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
        (-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):
        (-[WKContentView _didChangeDragInteractionPolicy]):
        (-[WKContentView setupDataInteractionDelegates]):
        (-[WKContentView teardownDataInteractionDelegates]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (-[WKContentView computeClientAndGlobalPointsForDropSession:outClientPoint:outGlobalPoint:]):
        (-[WKContentView cleanUpDragSourceSessionState]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDataInteractionControllerOperation:]):
        (-[WKContentView _didChangeDataInteractionCaretRect:currentRect:]):
        (-[WKContentView currentDragOrDropSession]):
        (-[WKContentView _restoreCalloutBarIfNeeded]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:previewForLiftingItem:session:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:sessionWillBegin:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:previewForCancellingItem:withDefault:]):
        (-[WKContentView _dragInteraction:item:shouldDelaySetDownAnimationWithCompletion:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:sessionDidEnter:]):
        (-[WKContentView dropInteraction:sessionDidUpdate:]):
        (-[WKContentView dropInteraction:sessionDidExit:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):

        Pull out logic that mutates drag and drop state into DragDropInteractionState. Adjust places that previously
        accessed DataInteractionState's members directly with corresponding getters in DragDropInteractionState.

        (-[WKContentView _simulateDataInteractionEntered:]):
        (-[WKContentView _simulateDataInteractionUpdated:]):
        (-[WKContentView _simulateDataInteractionEnded:]):
        (-[WKContentView _simulateDataInteractionPerformOperation:]):
        (-[WKContentView _simulateDataInteractionSessionDidEnd:]):
        (-[WKContentView _simulateWillBeginDataInteractionWithSession:]):
        (-[WKContentView _simulatedItemsForSession:]):
        (-[WKContentView _simulatePrepareForDataInteractionSession:completion:]):

        Rename _dataInteraction => _dragInteraction and _dataOperation => _dropInteraction.

        (uiImageForImage): Deleted.
        (shouldUseTextIndicatorToCreatePreviewForDragAction): Deleted.
        (-[WKContentView dragPreviewForImage:frameInRootViewCoordinates:clippingRectsInFrameCoordinates:backgroundColor:]): Deleted.
        (-[WKContentView dragPreviewForCurrentDataInteractionState]): Deleted.
        (-[WKContentView _transitionDragPreviewToImageIfNecessary:]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2017-09-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Threaded Compositor] Deadlock in ThreadedDisplayRefreshMonitor
        https://bugs.webkit.org/show_bug.cgi?id=176296

        Reviewed by Žan Doberšek.

        The main thread tries to schedule a display refresh monitor from RAF, requestDisplayRefreshMonitorUpdate() tries
        to take the attributes lock to update coordinateUpdateCompletionWithClient. The compositing thread has finished
        a frame and sceneUpdateFinished() takes the attributes lock to update clientRendersNextFrame and then asks the
        display refresh monitor if it requires a new callback. ThreadedDisplayRefreshMonitor::requiresDisplayRefreshCallback()
        takes its lock to check the state, and requestDisplayRefreshMonitorUpdate() was called by
        ThreadedDisplayRefreshMonitor::requestRefreshCallback() with the display refresh monitor lock taken. So,
        the compositing thread has the attributes lock and wants the display refresh monitor one, and main thread has the
        display refresh monitor lock and wants the attributes one.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::requestRefreshCallback): Release the mutex before calling
        ThreadedCompositor::requestDisplayRefreshMonitorUpdate().

2017-09-03  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Libgcrypt warning: missing initialization - please fix the application
        https://bugs.webkit.org/show_bug.cgi?id=171230

        Reviewed by Michael Catanzaro.

        Replicate the libgcrypt initialization in the NetworkProcess entrypoint.
        This is required due to libgcrypt being used through digest operations
        originating from the certificate hash computation in SoupNetworkSession.

        The initialization is moved to the PAL library, and the initialize()
        function is now leveraged in both NetworkProcess and WebProcess entrypoints.

        * NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:
        (main):
        * WebProcess/EntryPoint/unix/WebProcessMain.cpp:
        (main):

2017-09-03  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Use the device scale factor value in WebPageCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=175377

        Reviewed by Michael Catanzaro.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
        WebPageCreationParameters::deviceScaleFactor value should be used
        to set the device scale factor on the given WebPage object. This
        enables correctly leveraging the scale factor for the WPE port
        which enters accelerated mode unconditionally and as such doesn't
        wait for the backing store update that would provide that value
        otherwise.

2017-09-03  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Remove unnecessary IOHIDEventServiceFastPathUserClient access
        https://bugs.webkit.org/show_bug.cgi?id=175947
        <rdar://problem/33353627>

        Reviewed by Darin Adler.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-09-03  Dan Bernstein  <mitz@apple.com>

        WKContentViewInteraction.mm includes redundant declaration of UIPreviewItemController's presentationSecondaryGestureRecognizer
        https://bugs.webkit.org/show_bug.cgi?id=176322

        Reviewed by Darin Adler.

        * UIProcess/ios/WKContentViewInteraction.mm: Removed the declaration, which is already made in the
          SDK or in UIKitSPI.h.

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

        Try to fix the iOS build

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (-[WKRemoteView initWithFrame:contextID:]):

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

        Fix some style issues in the Remote Layer Tree code
        https://bugs.webkit.org/show_bug.cgi?id=176298

        Reviewed by Dan Bernstein.

        In bugs 176273 and 176297, the style bot noticed some existing style
        issues in the UI-side compositing code. Fix them, because there aren't
        many and they're straightforward.

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
        * Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:

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

        String#utf8() allocates new CString
        https://bugs.webkit.org/show_bug.cgi?id=176302

        Reviewed by Sam Weinig.

        * NetworkProcess/webrtc/NetworkRTCSocket.cpp:
        (WebKit::NetworkRTCSocket::sendTo):

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

        Move shared part of the Remote Layer Tree code out of a Mac-specific directory
        https://bugs.webkit.org/show_bug.cgi?id=176297

        Reviewed by Dan Bernstein.

        UI-side compositing works on all Cocoa platforms, so the code should
        not live inside Mac/. Also merge the Scrolling directory in here,
        since those files are very related.

        * PlatformMac.cmake:
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.h: Renamed from Shared/mac/RemoteLayerBackingStore.h.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: Renamed from Shared/mac/RemoteLayerBackingStore.mm.
        * Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h: Renamed from Shared/mac/RemoteLayerBackingStoreCollection.h.
        * Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: Renamed from Shared/mac/RemoteLayerBackingStoreCollection.mm.
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h: Renamed from Shared/mac/RemoteLayerTreePropertyApplier.h.
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm: Renamed from Shared/mac/RemoteLayerTreePropertyApplier.mm.
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: Renamed from Shared/mac/RemoteLayerTreeTransaction.h.
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: Renamed from Shared/mac/RemoteLayerTreeTransaction.mm.
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: Renamed from Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp.
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.h: Renamed from Shared/Scrolling/RemoteScrollingCoordinatorTransaction.h.
        * WebKit.xcodeproj/project.pbxproj:

2017-09-03  Sam Weinig  <sam@webkit.org>

        Remove CanvasProxy
        https://bugs.webkit.org/show_bug.cgi?id=176288

        Reviewed by Yusuke Suzuki.

        CanvasProxy does not appear to be in any current HTML spec
        and was disabled and unimplemented in our tree. Time to 
        get rid of it.

        * Configurations/FeatureDefines.xcconfig:

2017-09-02  Andy Estes  <aestes@apple.com>

        [CA] Upstream QuartzCore-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176270

        Reviewed by Tim Horton.

        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForPort):
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::enterAcceleratedCompositingMode):
        (WebKit::PageClientImpl::updateAcceleratedCompositingMode):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        * WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm:
        (WebKit::makeRenderLayer):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

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

        Move UI Process part of the Remote Layer Tree code out of a Mac-specific directory
        https://bugs.webkit.org/show_bug.cgi?id=176273

        Reviewed by Dan Bernstein.

        UI-side compositing works on all Cocoa platforms, so the code should
        not live inside Mac/. Also merge the Scrolling directory in here,
        since those files are very related.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: Renamed from SourceebKit/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in: Renamed from UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.messages.in.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: Renamed from UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h: Renamed from UIProcess/mac/RemoteLayerTreeHost.h.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: Renamed from UIProcess/mac/RemoteLayerTreeHost.mm.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.h: Renamed from UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.h.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.mm: Renamed from UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.mm.
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: Renamed from UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp.
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: Renamed from UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h.
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: Renamed from UIProcess/Scrolling/RemoteScrollingTree.cpp.
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h: Renamed from UIProcess/Scrolling/RemoteScrollingTree.h.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: Renamed from UIProcess/ios/RemoteLayerTreeHostIOS.mm.
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: Renamed from UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h: Renamed from UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: Renamed from UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm.
        * WebKit.xcodeproj/project.pbxproj:

2017-09-02  Joseph Pecoraro  <pecoraro@apple.com>

        Web Automation: -[_WKAutomationSession init] leaks
        https://bugs.webkit.org/show_bug.cgi?id=176268

        Reviewed by Darin Adler.

        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
        (-[_WKAutomationSession init]):

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

        Fix some style issues in the Web Process part of the Remote Layer Tree code
        https://bugs.webkit.org/show_bug.cgi?id=176272

        Reviewed by Dan Bernstein.

        In bug 176271, the style bot noticed some existing style issues in the UI-side
        compositing code. Fix them, because there aren't many and they're straightforward.

        * WebProcess/WebPage/Cocoa/RemoteLayerTree/GraphicsLayerCARemote.cpp:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCAAnimationRemote.h:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::PlatformCAAnimationRemote::setValues):
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::appendSublayer):
        (WebKit::PlatformCALayerRemote::insertSublayer):
        (WebKit::PlatformCALayerRemote::replaceSublayer):
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCALayerRemote.h:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::clone const):
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.h:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/RemoteScrollingCoordinator.h:
        * WebProcess/WebPage/Cocoa/RemoteLayerTree/RemoteScrollingCoordinator.mm:

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

        Move Web Process part of the Remote Layer Tree code out of a Mac-specific directory
        https://bugs.webkit.org/show_bug.cgi?id=176271

        Rubber-stamped by Dan Bernstein.

        UI-side compositing works on all Cocoa platforms, so the code should
        not live inside Mac/. Also merge the Scrolling directory in here,
        since those files are very related.

        * WebKit.xcodeproj/project.pbxproj:
        * DerivedSources.make:
        * PlatformMac.cmake:
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp: Renamed from WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp.
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h: Renamed from WebProcess/WebPage/mac/GraphicsLayerCARemote.h.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h: Renamed from WebProcess/WebPage/mac/PlatformCAAnimationRemote.h.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: Renamed from WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemote.cpp.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemote.h.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.h: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.h: Renamed from WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h: Renamed from WebProcess/WebPage/mac/RemoteLayerTreeContext.h.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm: Renamed from WebProcess/WebPage/mac/RemoteLayerTreeContext.mm.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h: Renamed from WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.h.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: Renamed from WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.mm.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: Renamed from WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: Renamed from WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm.
        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h: Renamed from WebProcess/Scrolling/RemoteScrollingCoordinator.h.
        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.messages.in: Renamed from WebProcess/Scrolling/RemoteScrollingCoordinator.messages.in.
        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: Renamed from WebProcess/Scrolling/RemoteScrollingCoordinator.mm.

2017-09-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] Use fast malloc to allocate backing store cairo surfaces data
        https://bugs.webkit.org/show_bug.cgi?id=176226

        Reviewed by Michael Catanzaro.

        Do not create the cairo surface for BackingStoreBackendCairoImpl. When not using X11 we are going to use an
        image surface anyway, so we don't really need to use the create similar. This way we only need to pass the size
        and device scale factor to BackingStoreBackendCairoImpl that will create the image surface using fast malloc to
        allocate the data.

        * UIProcess/cairo/BackingStoreCairo.cpp:
        (WebKit::BackingStore::createBackend):

2017-09-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] Opening FedoraProject's pastebin chews CPU
        https://bugs.webkit.org/show_bug.cgi?id=175942

        Reviewed by Žan Doberšek.

        This regressed when we introduced the display refresh monitor. The monitor schedules updates immediately,
        because we removed the option to not do frame sync in X11 to let swapBuffers do the throttling, but that's
        not happening in Wayland because the nested compositor is dispatching frame callbacks on surface commit.
        We need to ensure that frame callbacks are dispatched on every monitor refresh, because swapBuffers waits for
        frame callbacks to be queued on display.

        * UIProcess/gtk/WaylandCompositor.cpp:
        (WebKit::WaylandCompositor::Surface::~Surface): Destroy pending frame callbacks too.
        (WebKit::WaylandCompositor::Surface::setWebPage): Add a tick callback to the web view widget to flush all
        committed frame callbacks on every frame update.
        (WebKit::WaylandCompositor::Surface::requestFrame): Add the callbacks to m_pendingFrameCallbackList.
        (WebKit::WaylandCompositor::Surface::flushFrameCallbacks): Dispatch all committed frame callabcks.
        (WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks): Dispatch all pending frame callbacks.
        (WebKit::WaylandCompositor::Surface::commit): Do not dispatch frame callbacks here, move them to the list of
        committed frame callbacks that will be dispatched on the next frame clock update.
        * UIProcess/gtk/WaylandCompositor.h:
        (WebKit::WaylandCompositor::Surface::setWebPage): Moved to the cpp.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
        (WebKit::AcceleratedSurfaceWayland::AcceleratedSurfaceWayland): Move surface initialization and destruction to
        the compositing thread.
        (WebKit::AcceleratedSurfaceWayland::initialize):
        (WebKit::AcceleratedSurfaceWayland::finalize):
        (WebKit::AcceleratedSurfaceWayland::~AcceleratedSurfaceWayland): Deleted.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h:

2017-09-01  Youenn Fablet  <youenn@apple.com>

        Do not Reject CacheStorage promises when updating the persistent filesystem data fails
        https://bugs.webkit.org/show_bug.cgi?id=176241

        Reviewed by Alex Christensen.

        Open/Remove caches may succeed in the memory representation but the write-to-disk operation may fail.
        In that case, the callback does not return an error but a value containing the cache identifier.
        The value will also contain a boolean flag set to true to notify the client that persistent storage failed this time.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::remove):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:

2017-09-01  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's toolbarsAreVisible
        https://bugs.webkit.org/show_bug.cgi?id=176246
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::toolbarsAreVisible):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::toolbarsAreVisible):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getToolbarsAreVisible):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

2017-09-01  Alex Christensen  <achristensen@webkit.org>

        Make PageClientImplCocoa a proper superclass of PageClientImpls for Mac and iOS
        https://bugs.webkit.org/show_bug.cgi?id=176239

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/PageClientImplCocoa.h: Added.
        (WebKit::PageClientImplCocoa::PageClientImplCocoa):
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::isPlayingAudioWillChange):
        (WebKit::PageClientImplCocoa::isPlayingAudioDidChange):
        (WebKit::PageClientImpl::isPlayingAudioWillChange): Deleted.
        (WebKit::PageClientImpl::isPlayingAudioDidChange): Deleted.
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        * UIProcess/mac/PageClientImpl.h: Removed.
        * UIProcess/mac/PageClientImpl.mm: Removed.
        * UIProcess/mac/PageClientImplMac.h: Copied from Source/WebKit/UIProcess/mac/PageClientImpl.h.
        * UIProcess/mac/PageClientImplMac.mm: Copied from Source/WebKit/UIProcess/mac/PageClientImpl.mm.
        (WebKit::PageClientImpl::PageClientImpl):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        * UIProcess/mac/WebPageProxyMac.mm:
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        * WebKit.xcodeproj/project.pbxproj:

2017-09-01  Alex Christensen  <achristensen@webkit.org>

        Replace WKUIDelegatePrivate's isPlayingMediaDidChange with KVO _isPlayingAudio on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=176212

        Reviewed by Tim Horton.

        Dan suggested this in bug 176203, I think it's a good idea,
        and I'll need to add more KVO properties soon anyways so I'd better learn how.
        Determining if audio playing changed is important for Safari, so WKPageUIClient's
        isPlayingAudioDidChange was correctly named but incorrectly fired if either audio
        or video playing changed and had you check if audio was playing, possibly too often.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::isPlayingMediaDidChange):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _isPlayingAudio]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::isPlayingMediaDidChange): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::isPlayingAudioWillChange):
        (WebKit::WebViewImpl::isPlayingAudioDidChange):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isPlayingMediaDidChange):
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::isPlayingAudioDidChange):
        (WebKit::PageClientImpl::isPlayingAudioWillChange):

2017-09-01  Alex Christensen  <achristensen@webkit.org>

        Disable ObjC WebGL policy SPI on iOS
        https://bugs.webkit.org/show_bug.cgi?id=176233

        Reviewed by Tim Horton.
        
        In r221465 I uploaded new SPI that is only needed on Mac with a beautiful test that only works on Mac.
        Since it fails on iOS and is not needed on iOS, let's just disable it on iOS.

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

2017-09-01  Andy Estes  <aestes@apple.com>

        [CG] Upstream CoreGraphics-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176200

        Reviewed by Tim Horton.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::platformInitializeProcess):
        * UIProcess/mac/WindowServerConnection.h:
        * UIProcess/mac/WindowServerConnection.mm:
        (WebKit::registerOcclusionNotificationHandler):
        (WebKit::WindowServerConnection::WindowServerConnection):
        (WebKit::WindowServerConnection::applicationWindowModificationsStarted): Deleted.
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

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

        [Win] Compile error, 'Cache' is not declared.
        https://bugs.webkit.org/show_bug.cgi?id=176062

        Reviewed by Youenn Fablet.

        Rename DOMCache to DOMCacheEngine.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::queryCache):
        (WebKit::CacheStorage::Engine::writeFile):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DOMCacheEngine::CacheInfo>::encode):
        (IPC::ArgumentCoder<DOMCacheEngine::CacheInfo>::decode):
        (IPC::ArgumentCoder<DOMCacheEngine::Record>::encode):
        (IPC::ArgumentCoder<DOMCacheEngine::Record>::decode):
        (IPC::ArgumentCoder<DOMCache::CacheInfo>::encode): Deleted.
        (IPC::ArgumentCoder<DOMCache::CacheInfo>::decode): Deleted.
        (IPC::ArgumentCoder<DOMCache::Record>::encode): Deleted.
        (IPC::ArgumentCoder<DOMCache::Record>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/Cache/WebCacheStorageConnection.messages.in:

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

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

        Reviewed by Brady Eidson.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::initializeCocoaOverrides):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        * UIProcess/mac/WKTextInputWindowController.mm:
        (-[WKTextInputPanel init]):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

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

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's isPlayingAudioDidChange
        https://bugs.webkit.org/show_bug.cgi?id=176203
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::isPlayingMediaDidChange):
        (API::UIClient::isPlayingAudioDidChange): Deleted.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::isPlayingMediaDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isPlayingMediaDidChange):

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

        Add ObjC SPI corresponding to WKPageLoaderClient's webGLLoadPolicy and resolveWebGLLoadPolicy
        https://bugs.webkit.org/show_bug.cgi?id=175779
        <rdar://problem/22367975>

        Reviewed by Tim Horton.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::webGLLoadPolicy const):
        (API::NavigationClient::resolveWebGLLoadPolicy const):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::toWebCoreWebGLLoadPolicy):
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::webGLPolicyForURL):
        (WebKit::WebPageProxy::resolveWebGLPolicyForURL):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::webGLPolicyForURL const):
        (WebKit::WebFrameLoaderClient::resolveWebGLPolicyForURL const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::webGLPolicyForURL):
        (WebKit::WebPage::resolveWebGLPolicyForURL):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::webGLPolicyForURL):
        (WebKit::WebPage::resolveWebGLPolicyForURL):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::webGLPolicyForURL):
        (WebKit::WebPage::resolveWebGLPolicyForURL):

2017-08-31  Brady Eidson  <beidson@apple.com>

        Add (entirely incorrect) fetching of ServiceWorker scripts.
        https://bugs.webkit.org/show_bug.cgi?id=176179

        Reviewed by Andy Estes.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::finishFetchingScriptInServer):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

2017-08-31  Megan Gardner  <megan_gardner@apple.com>

        Fix error in protocol revving
        https://bugs.webkit.org/show_bug.cgi?id=176191

        Protocol definition was mastered out of later iOS submissions, causing them to not build.

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:]):

2017-08-31  Youenn Fablet  <youenn@apple.com>

        Update CacheStorage caches only if it is updated
        https://bugs.webkit.org/show_bug.cgi?id=176135

        Reviewed by Alex Christensen.

        For each change to CacheStorageEngineCaches list of cache, CacheStorageEngineCaches increments a counter.
        When sending the list of caches, CacheStorageEngineCaches will compare its counter with the one provided.
        If they sare the same, CacheStorageEngineCaches will return nothing.
        Otherwise it returns the whole list of caches.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveCaches):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
        (WebKit::CacheStorage::Caches::cacheInfos const):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::updateCounter const):
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::caches):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::doRetrieveCaches):
        * WebProcess/Cache/WebCacheStorageConnection.h:

2017-08-31  Youenn Fablet  <youenn@apple.com>

        Introduce CacheStorageEngineCache to handle cache records
        https://bugs.webkit.org/show_bug.cgi?id=176137

        Reviewed by Alex Christensen.

        CacheStorageEngineCache is the equivalent of WebCore Cache.
        It contains a list of records that it needs to manage (add, update, remove).
        Moving the logic of this management from CacheStorageEngine to this new class so as to ease future development.

        * CMakeLists.txt:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::remove):
        (WebKit::CacheStorage::Engine::retrieveRecords):
        (WebKit::CacheStorage::Engine::putRecords):
        (WebKit::CacheStorage::Engine::deleteMatchingRecords):
        (WebKit::CacheStorage::Engine::cache):
        (WebKit::CacheStorage::Engine::writeCacheRecords): Deleted.
        (WebKit::CacheStorage::Engine::removeCacheRecords): Deleted.
        (WebKit::CacheStorage::Engine::queryCache): Deleted.
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp: Added.
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        (WebKit::CacheStorage::Cache::identifier const):
        (WebKit::CacheStorage::Cache::name const):
        (WebKit::CacheStorage::Cache::info const):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::find):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        (WebKit::CacheStorage::encodeCacheNames):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::cacheInfos const):
        * WebKit.xcodeproj/project.pbxproj:

2017-08-31  David Quesada  <david_quesada@apple.com>

        WKNavigationDelegatePrivate client redirect SPI needs to be able to detect redirects scheduled before the document finishes loading
        https://bugs.webkit.org/show_bug.cgi?id=176128
        rdar://problem/34068476

        Reviewed by Brady Eidson.

        _webView:didPerformClientRedirect: isn't useful for delegates that want to know about client redirects
        started before the document is finished loading. This is because the method would be called after the
        navigation scheduler's timer fires and the navigation for the redirect has begun. Since this happens in
        a later iteration of the run loop, the document has already finished loading. Address this by replacing
        the method with two that give the navigation delegate more information about when client redirects are
        scheduled and canceled.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::willPerformClientRedirect):
        (API::NavigationClient::didCancelClientRedirect):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::didCancelClientRedirect):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidCancelClientRedirect):
        (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-08-30  Megan Gardner  <megan_gardner@apple.com>

        Remove IsBlockSelection flag
        https://bugs.webkit.org/show_bug.cgi?id=176141

        Reviewed by Dean Jackson.

        Block selection is disabled. Removed code associated with this flag to allow removal of the
        flag in UIKit.
        
        No tests for a removed feature.

        * Platform/spi/ios/UIKitSPI.h:
        * Shared/ios/GestureTypes.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (toUIWKSelectionFlags):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::rangeForWebSelectionAtPosition):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::contractedRangeFromHandle):
        (WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):
        (WebKit::WebPage::updateBlockSelectionWithTouch):
        (WebKit::WebPage::updateSelectionWithTouches):

2017-08-30  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's didClickAutoFillButton
        https://bugs.webkit.org/show_bug.cgi?id=176139
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Covered by a cool new API test!

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didClickAutoFillButton):

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

        Use WTF::crossThreadCopy() in more places
        https://bugs.webkit.org/show_bug.cgi?id=176169

        Reviewed by Andreas Kling.

        Use WTF::crossThreadCopy() in more places to make code more concise.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):

2017-08-31  Youenn Fablet  <youenn@apple.com>

        Take into account removed caches in Caches::remove assertion
        https://bugs.webkit.org/show_bug.cgi?id=176164

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::remove):

2017-08-31  Youenn Fablet  <youenn@apple.com>

        Do not create a salt if the CacheStorage engine should not persist
        https://bugs.webkit.org/show_bug.cgi?id=176138

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::~Engine): Ensuring that Caches will not try using the engine if it goes away.
        (WebKit::CacheStorage::Engine::initialize): Removing making a salt if engine data is not persistent.
        * NetworkProcess/cache/CacheStorageEngine.h: Check persistency according the root path. If it is null, caches should not try to do persistency.
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::cachesRootPath):
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::detach):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::shouldPersist const):
        * NetworkProcess/cache/NetworkCacheData.cpp: Making makeSalt private again.
        (WebKit::NetworkCache::makeSalt):
        * NetworkProcess/cache/NetworkCacheData.h:


2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Several InputMethodFilter tests are failing and crashing
        https://bugs.webkit.org/show_bug.cgi?id=176158

        Reviewed by Carlos Alberto Lopez Perez.

        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::confirmCurrentComposition): Return early in testing mode because the page is not available.
        (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting): Use hexadecimal numbers for
        logging key codes.

2017-08-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] Crash when gdk_keymap_get_entries_for_keyval returns TRUE but n_keys=0
        https://bugs.webkit.org/show_bug.cgi?id=176154

        Reviewed by Carlos Alberto Lopez Perez.

        In Wayland gdk_keymap_get_entries_for_keyval() can return TRUE with n_keys=0. We have several places in WebKit
        where we just check the return value of gdk_keymap_get_entries_for_keyval() and then use the returned array to
        get the first position assuming it has at least one item. This has always worked in X11 because the GDK X11
        backend does the right thing, but it's crashing in Wayland now. It should be fixed in GTK+ but in the meantime
        it's easy to workaround by also checking n_keys > 0.

        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::doKeyStrokeEvent):

2017-08-30  Dan Bernstein  <mitz@apple.com>

        [iOS] REGRESSION (r218144) -[WKContentView targetForAction:withSender:] returns the content view for actions implemented only by the WKWebView, causing a crash
        https://bugs.webkit.org/show_bug.cgi?id=176077
        <rdar://problem/34145200>

        Reviewed by Sam Weinig.

        Test: TestWebKitAPI/Tests/WebKitCocoa/WKContentViewTargetForAction.mm

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView targetForAction:withSender:]): Override and forward WKContentView actions to
          -[WKContentView targetForActionForWebView:withSender:].
        * UIProcess/ios/WKContentViewInteraction.h: Declare -targetForActionForWebView:withSender:.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView targetForAction:withSender:]): Forward to the WKWebView.
        (-[WKContentView targetForActionForWebView:withSender:]): Call super’s
          -targetForAction:withSender:.

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

        Fix whitespace and formatting
        https://bugs.webkit.org/show_bug.cgi?id=176134

        Reviewed by Sam Weinig.

        Bring the file formatting into compliance with WebKit Coding Style.

        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration _webStorageDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _indexedDBDatabaseDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setIndexedDBDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _webSQLDatabaseDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setWebSQLDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _cookieStorageFile]):
        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageFile:]):
        (-[_WKWebsiteDataStoreConfiguration _resourceLoadStatisticsDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setResourceLoadStatisticsDirectory:]):

2017-08-30  Youenn Fablet  <youenn@apple.com>

        Remove the list of removed caches from CacheStorageEngine
        https://bugs.webkit.org/show_bug.cgi?id=176136

        Reviewed by Alex Christensen.


        This list is no longer useful as CacheStorageEngineCaches handles its own removed caches.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::remove):
        (WebKit::CacheStorage::Engine::cache):
        * NetworkProcess/cache/CacheStorageEngine.h:

2017-08-30  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r221068): Graphics corruption when dragging images on iOS
        https://bugs.webkit.org/show_bug.cgi?id=176132
        <rdar://problem/34142983>

        Reviewed by Dean Jackson.

        * Shared/mac/ColorSpaceData.mm:
        (WebKit::ColorSpaceData::encode):
        Color space encoding was entirely disabled on iOS, so after r221068,
        ShareableBitmap would make different decisions about image format
        on both sides of the wire.

        Enable color space encoding on iOS (decoding is already implemented)
        by moving some ifdefs around.

2017-08-30  Youenn Fablet  <youenn@apple.com>

        [Cache API] Support cache names persistency
        https://bugs.webkit.org/show_bug.cgi?id=175995

        Reviewed by Alex Christensen.

        Adding disk read/write capacities to CacheStorage engine.
        This is used to store per-origin cache names in a file.
        Making Engine a thread safe refcounted object so that it does read/write in a background thread.

        Introducing CacheStorage::Caches as the object managing the list of Cache objects for a given origin.
        Caches will be responsible to do all the read/write operations for all of its caches.
        It will be responsible for quota limitation as well.

        Moving part of the logic from CacheStorage::Engine into CacheStorage::Caches.

        CacheStorage::Engine is initialized asynchronously as it first creates a salt which is used
        to obfuscate the names of the various files stored on disk.

        In the same spirit, CacheStorage::Caches is initialized asynchronously as it needs to read from the disk the list of cache names.
        Once read, the names will be stored in memory.
        Added the possibility to clear this in-memory representation. This will be useful for testing.
        This might also be useful to save memory when there is no more use of CacheStorage by web pages.

        Introducing a new cacheStorageSubdirectoryName parameter for WebsiteDataStore so as to segment the different per session CacheStorageEngine
        in direct sub folders of the main cacheStorageDirectory folder.

        * CMakeLists.txt:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::remove):
        (WebKit::CacheStorage::Engine::retrieveCaches):
        (WebKit::CacheStorage::Engine::retrieveRecords):
        (WebKit::CacheStorage::Engine::initialize):
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        (WebKit::CacheStorage::Engine::cache):
        (WebKit::CacheStorage::Engine::writeFile): Making use of default parameter to directly return to the main loop.
        (WebKit::CacheStorage::Engine::readFile): Ditto.
        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngine.h:
        (WebKit::CacheStorage::Engine::rootPath const):
        (WebKit::CacheStorage::Engine::salt const):
        (WebKit::CacheStorage::Engine::nextCacheIdentifier):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp: Added.
        (WebKit::CacheStorage::cachesRootPath):
        (WebKit::CacheStorage::cachesListFilename):
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::find):
        (WebKit::CacheStorage::Caches::open):
        (WebKit::CacheStorage::Caches::remove):
        (WebKit::CacheStorage::encodeCacheNames):
        (WebKit::CacheStorage::decodeCachesNames):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
        (WebKit::CacheStorage::Caches::cacheInfos const):
        * NetworkProcess/cache/CacheStorageEngineCaches.h: Added.
        (WebKit::CacheStorage::Caches::create):
        (WebKit::CacheStorage::Caches::isInitialized const):
        (WebKit::CacheStorage::Caches::detach):
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * NetworkProcess/cache/NetworkCacheData.cpp:
        (WebKit::NetworkCache::makeSalt):
        * NetworkProcess/cache/NetworkCacheData.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
        * WebProcess/Cache/WebCacheStorageConnection.h:

2017-08-30  Brady Eidson  <beidson@apple.com>

        Add "Identified" base class to replace a whole bunch of custom identifier generators.
        https://bugs.webkit.org/show_bug.cgi?id=176120

        Reviewed by Alex Christensen.

        * UIProcess/API/APIUserScript.cpp:
        (API::UserScript::UserScript):
        (API::generateIdentifier): Deleted.
        * UIProcess/API/APIUserScript.h:

        * UIProcess/API/APIUserStyleSheet.cpp:
        (API::UserStyleSheet::UserStyleSheet):
        (API::generateIdentifier): Deleted.
        * UIProcess/API/APIUserStyleSheet.h:

        * UIProcess/UserContent/WebScriptMessageHandler.cpp:
        (WebKit::WebScriptMessageHandler::WebScriptMessageHandler):
        (WebKit::generateIdentifier): Deleted.
        * UIProcess/UserContent/WebScriptMessageHandler.h:
        (WebKit::WebScriptMessageHandler::identifier const): Deleted.

        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
        (WebKit::WebUserContentControllerProxy::~WebUserContentControllerProxy):
        (WebKit::WebUserContentControllerProxy::addProcess):
        (WebKit::WebUserContentControllerProxy::removeProcess):
        (WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
        (WebKit::WebUserContentControllerProxy::removeUserContentWorldUses):
        (WebKit::WebUserContentControllerProxy::addUserScript):
        (WebKit::WebUserContentControllerProxy::removeUserScript):
        (WebKit::WebUserContentControllerProxy::removeAllUserScripts):
        (WebKit::WebUserContentControllerProxy::addUserStyleSheet):
        (WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
        (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
        (WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
        (WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
        (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):
        (WebKit::WebUserContentControllerProxy::addContentRuleList):
        (WebKit::WebUserContentControllerProxy::removeContentRuleList):
        (WebKit::WebUserContentControllerProxy::removeAllContentRuleLists):
        (WebKit::generateIdentifier): Deleted.
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        (WebKit::WebUserContentControllerProxy::identifier const): Deleted.

        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::~VisitedLinkStore):
        (WebKit::VisitedLinkStore::VisitedLinkStore):
        (WebKit::VisitedLinkStore::addProcess):
        (WebKit::VisitedLinkStore::removeProcess):
        (WebKit::VisitedLinkStore::removeAll):
        (WebKit::VisitedLinkStore::pendingVisitedLinksTimerFired):
        (WebKit::VisitedLinkStore::sendTable):
        (WebKit::generateIdentifier): Deleted.
        * UIProcess/VisitedLinkStore.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::generateIdentifier): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::identifier const): Deleted.

        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::WebSocketStream):
        (WebKit::WebSocketStream::~WebSocketStream):
        (WebKit::WebSocketStream::messageSenderDestinationID):
        * WebProcess/Network/WebSocketStream.h:

2017-08-30  Brady Eidson  <beidson@apple.com>

        Implement all of "Register" right up until where the script is fetched.
        https://bugs.webkit.org/show_bug.cgi?id=176082

        Reviewed by Andy Estes.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::resolveJobInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:

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

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

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setAccessibilityWebProcessToken):
        (WebKit::WebViewImpl::updateRemoteAccessibilityRegistration):
        (WebKit::WebViewImpl::accessibilityRegisterUIProcessTokens):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformInitialize):
        (WebKit::WebPage::registerUIProcessAccessibilityTokens):

2017-08-30  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE] Enable MEMORY_SAMPLER
        https://bugs.webkit.org/show_bug.cgi?id=176099

        Reviewed by Michael Catanzaro.

        Enable it at runtime if the environment variable WEBKIT_SAMPLE_MEMORY is set.

        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_compositingManagerProxy):

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

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

        Reviewed by Alex Christensen.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::cgWindowID):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::scriptCodeFromCurrentKeyboardInputSource):
        (WebKit::NetscapePlugin::sendComplexTextInput):

2017-08-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Try to fix layout test timing out after r221344.

        There seems to be an infinite loop in the web process when WebPage::platformEditorState is called with non
        content editable result.

        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformEditorState const):

2017-08-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r221064): [GTK] Editor not correctly working after r221064
        https://bugs.webkit.org/show_bug.cgi?id=176052

        Reviewed by Michael Catanzaro.

        Since r221064 we are not always notified about typing attributes when editor state changes. didChangeSelection
        no longer includes the typing attributes in EditorStateChange message, it's scheduled to be sent after the
        compositing layer have been flushed, but that part is not implemented for GTK+ port.

        Fixes test /webkit2/WebKitWebView/editor-state/typing-attributes.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::updateBackingStoreState): Call WebPage::flushPendingEditorStateUpdate() after
        the layout.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired): Call WebPage::flushPendingEditorStateUpdate() after
        the display sync.
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display): Call WebPage::flushPendingEditorStateUpdate() after the layout.
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformEditorState const): Also return early, setting isMissingPostLayoutData to true, when
        there's no frame view, the view needs a layout or the result is not for editable content.

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

        ResourceLoadStatistics logic does not understand custom WebsiteData stores
        https://bugs.webkit.org/show_bug.cgi?id=176037
        <rdar://problem/33338238>

        Reviewed by Alex Christensen.

        The NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains always notifies the default website
        data store about observations it has made. This should be revised so that WebKit clients that register
        custom data stores through the WKWebsiteDataStores API can be assured that observations made in one session
        do not manipulate data from another session.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains): Use the passed sessionID to locate
        the correct NetworkStorageSession to notify about the new partitioning data.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in: Accept new argument.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains): Include the WebsiteDataStore's
        session ID in the message to update cookie partition data.

2017-08-29  Alex Christensen  <achristensen@webkit.org>

        Automatically determine if a class has a modern decoder
        https://bugs.webkit.org/show_bug.cgi?id=176084

        Reviewed by Sam Weinig.

        Instead of determining if ModernDecoder is defined in the class,
        just check the signature of the decode member function.

        * Platform/IPC/ArgumentCoder.h:
        (): Deleted.
        * Shared/WebPageCreationParameters.h:
        * Shared/WebPageGroupData.h:
        * Shared/WebsitePolicies.h:

2017-08-29  Alex Christensen  <achristensen@webkit.org>

        Begin transition to modern IPC decoding
        https://bugs.webkit.org/show_bug.cgi?id=176043

        Reviewed by JF Bastien.

        Right now, if a class is decoded from IPC we must have a default constructor.
        This prevents us from having Ref or C++ references in such types, which is cluttering up our code.
        This is because IPC::decode makes a default-constructed object, fills it, and returns a bool indicating success.
        Making IPC::decode instead return a std::optional makes it so we do not need to call an empty constructor.
        This could also enable us to add IPC::Decoder::operator>> and other fun things!
        I also modernized two arbitrary classes, WebsitePolicies and WebPageGroupData with more to come.
        There's no good way to update the actual generated IPC code until each class has been transitioned.

        * Platform/IPC/ArgumentCoder.h:
        (IPC::ArgumentCoder::decode):
        * Platform/IPC/Decoder.h:
        (IPC::Decoder::decode):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::decode):
        * Shared/WebPageGroupData.h:
        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::decode):

2017-08-29  Youenn Fablet  <youenn@apple.com>

        Setting the cache storage engine root path according the session WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=176055

        Reviewed by Alex Christensen.

        Adding disk read/write capacities to CacheStorage engine.
        This is used to store per-origin cache names in a file.
        Making Engine a thread safe refcounted object so that it does read/write in a background thread.

        Setting the root path of the engine to the directory set for the session in use according the WebsiteDataStore.
        For each WebsiteDataStore, a path and a sandbox extension is passed to the network process if persistency of the cache storage is wanted.
        Ephemeral sessions will set the path of the engine to null so that no read/write access is performed.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::cacheStorageDirectory const):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::defaultEngine):
        (WebKit::CacheStorage::Engine::Engine):
        (WebKit::CacheStorage::Engine::writeFile):
        * NetworkProcess/cache/CacheStorageEngine.h:
        (WebKit::CacheStorage::Engine::create):
        (WebKit::CacheStorage::Engine::shouldPersist const):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):

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

        Add initial support for dataTransferItem.webkitGetAsEntry()
        https://bugs.webkit.org/show_bug.cgi?id=176038
        <rdar://problem/34121095>

        Reviewed by Wenson Hsieh.

        Make dataTransfer.items an experimental feature so that it can be easily
        turned on from the Develop menu, for testing convenience.

        * Shared/WebPreferencesDefinitions.h:

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

        [Mac] Upstream WKSetMetadataURL() from WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=176046

        Reviewed by Alex Christensen.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplicationRaw):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

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

        [Cocoa] Upstream WKGetWebDefaultCFStringEncoding()
        https://bugs.webkit.org/show_bug.cgi?id=176039

        Reviewed by Alex Christensen.

        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-08-28  Megan Gardner  <megan_gardner@apple.com>

        Fix incorrect enum in atBoundaryOfGranularity call
        https://bugs.webkit.org/show_bug.cgi?id=176004

        Reviewed by Wenson Hsieh and Enrica Casucci

        Enum that was being used was incorrect, as that case in not covered in called function.
        Resulted in a no-op. Should now have correct behavior around line boundaries.
        
        Not possible to add tests for selections with velocity. Will attempt to add this behavior later.

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

2017-08-28  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Add PlatformWin cmake for Webkit
        https://bugs.webkit.org/show_bug.cgi?id=176027

        Reviewed by Brent Fulgham.

        * PlatformWin.cmake: Added.

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

        [Cocoa] Upstream CFNetwork-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176032

        Reviewed by Alex Christensen.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::privateBrowsingSession):
        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformHasLocalDataForURL):
        (WebKit::cachedResponseForURL):

2017-08-28  Brent Fulgham  <bfulgham@apple.com>

        Disable access to secure cookies if an HTTPS site loads mixed content (Part 2: Header Requests)
        https://bugs.webkit.org/show_bug.cgi?id=175992
        <rdar://problem/34086613>

        Reviewed by Daniel Bates.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): Use a better label than 'result'.
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): Modify to accept a flag
        indicating if secure cookies should be included, and return a pair containing the resulting
        cookie string and a boolean indicating if secure cookies were accessed.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in: Ditto.
        * Shared/mac/CookieStorageShim.mm:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL): Ditto.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue): Ditto.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-08-28  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's didExceedBackgroundResourceLimitWhileInForeground
        https://bugs.webkit.org/show_bug.cgi?id=176028
        <rdar://problem/29270035>

        Reviewed by Andy Estes.

        An API test for this did not succeed with either the memory or CPU limit calls,
        possibly because the app must be in the foreground for this call to be made.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::toWKResourceLimit):
        (WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):

2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement screen capture commands
        https://bugs.webkit.org/show_bug.cgi?id=174615

        Reviewed by Brian Burg.

        Extend takeScreenshot command to optionally take a screenshot of an element. When no element is provided, the
        screenshot is taken from the page visible area.

        * PlatformGTK.cmake: Add WebAutomationSessionCairo.cpp to compilation.
        * PlatformWPE.cmake: Ditto.
        * UIProcess/Automation/Automation.json: Add ScreenshotError and several optional parameters to takeScreenshot.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::takeScreenshot): Receive optional frame, node and scrollIntoView that are
        checked and passed to the web process.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp: Added.
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData): Cairo implementation.
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::snapshotRectForScreenshot): Helper to get the rectangle to be used for a screenshot.
        (WebKit::WebAutomationSessionProxy::takeScreenshot): If a node handle is provided take the snapshot using the
        element rectangle, otherwise use the page visible content rectangle.
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in: Update TakeSnapshot message.

2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        Automation: takeScreenshot should use the visible content rect not the document rect
        https://bugs.webkit.org/show_bug.cgi?id=175665

        Reviewed by Brian Burg.

        According to the spec, we should get the toplevel browsing context document rectangle and take a screenshot of
        it using the current viewport width and height. We are currently using the document size.

        19. Screen Capture.
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-draw-a-bounding-box-from-the-framebuffer

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::takeScreenshot): Use FrameView::visibleContentRect().

2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] ASSERTION FAILED: !isOpen() in WebKit::IconDatabase::~IconDatabase()
        https://bugs.webkit.org/show_bug.cgi?id=175719

        Reviewed by Michael Catanzaro.

        This is happening always when running /webkit2/WebKitFaviconDatabase/favicon-database-test in debug builds. The
        last step we do is removing all icons, then the test finishes, which destroys the WebKitFaviconDatabase object
        that closes the icon database on dispose. The problem is that removing all icons schedules a main thread
        notification and IconDatabase is not considered closed until all main thread callbacks have been dispatched. This
        is never going to happen in the test, because the main loop is no longer running at that point. I don't think
        it's worth it to consider the database open while main thread callbacks are pending, they are just notifications
        and the client is no longer insterested on them afer closing the database. I think it's bettter and simpler to
        simply cancel the pending callbacks on database close. That ensures that isOpen() after close() is always
        false. This patch adds a helper private class to schedule notifications to the main thread that can be cancelled
        on database close. It also removes the didClose() notification because it was unused and because it's pointless
        now that we know the database is closed after close().

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::open): Mark the main thread notifier as active.
        (WebKit::IconDatabase::close): Mark the main thread notifier as not active.
        (WebKit::IconDatabase::IconDatabase): Remove m_mainThreadCallbackCount initialization.
        (WebKit::IconDatabase::isOpen const): Do what isOpenBesidesMainThreadCallbacks() used to do.
        (WebKit::IconDatabase::removeAllIconsOnThread): Remove the notification because it's currently unused.
        (WebKit::IconDatabase::dispatchDidImportIconURLForPageURLOnMainThread): Use MainThreadNotifier.
        (WebKit::IconDatabase::dispatchDidImportIconDataForPageURLOnMainThread): Ditto.
        (WebKit::IconDatabase::dispatchDidFinishURLImportOnMainThread): Ditto.
        (WebKit::IconDatabase::isOpenBesidesMainThreadCallbacks const): Deleted.
        (WebKit::IconDatabase::checkClosedAfterMainThreadCallback): Deleted.
        (WebKit::IconDatabase::dispatchDidRemoveAllIconsOnMainThread): Deleted.
        * UIProcess/API/glib/IconDatabase.h:
        (WebKit::IconDatabaseClient::didChangeIconForPageURL):
        (WebKit::IconDatabaseClient::didFinishURLImport):
        (WebKit::IconDatabase::MainThreadNotifier::MainThreadNotifier):
        (WebKit::IconDatabase::MainThreadNotifier::setActive):
        (WebKit::IconDatabase::MainThreadNotifier::notify):
        (WebKit::IconDatabase::MainThreadNotifier::stop):
        (WebKit::IconDatabase::MainThreadNotifier::timerFired):
        (WebKit::IconDatabaseClient::didRemoveAllIcons): Deleted.
        (WebKit::IconDatabaseClient::didClose): Deleted.

2017-08-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Picking an emoji via the emoji dialog (Ctrl+Cmd+Space) fires inconsistent beforeinput events.
        https://bugs.webkit.org/show_bug.cgi?id=170955
        <rdar://problem/31697653>

        Reviewed by Ryosuke Niwa.

        Currently, we insert text with TextEventInputAutocompletion as the text event input type if any text range to
        replace was specified by the platform. Instead, limit this only to when the text replacement range is not empty.
        This more closely matches the intention of the spec, which states that the "insertReplacementText" inputType
        should be used when "[replacing] existing text by means of a spell checker, auto-correct or similar".

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

2017-08-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Web process crashes after changing selection to the end of the document when speaking a selection
        https://bugs.webkit.org/show_bug.cgi?id=176011
        <rdar://problem/32614095>

        Reviewed by Ryosuke Niwa.

        Adds an SPI hook to test accessibility codepaths when speaking selected content. This patch does some minor
        refactoring by introducing _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:, which takes
        and invokes a completion handler block. The existing _accessibilityRetrieveRectsAtSelectionOffset:withText:
        method simply turns around and calls the former variant with `nil` as a completion handler.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::visiblePositionForPositionWithOffset): Deleted.

2017-08-25  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's saveDataToFileInDownloadsFolder
        https://bugs.webkit.org/show_bug.cgi?id=176000
        <rdar://problem/29270035>

        Reviewed by Andy Estes.
        
        Covered by a new API test.

        * Shared/Cocoa/WKNSData.h:
        (wrapper): Deleted.
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::saveDataToFileInDownloadsFolder):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::saveDataToFileInDownloadsFolder):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::saveDataToFileInDownloadsFolder):
        (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::url const):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::savePDFToFileInDownloadsFolder):
        * WebProcess/WebPage/WebPage.h:

2017-08-25  David Kilzer  <ddkilzer@apple.com>

        Fix -Wunused-lambda-capture warnings in WebKit with new clang compiler
        <https://webkit.org/b/175911>
        <rdar://problem/33667497>

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveCaches): Remove unused
        lambda capture for 'this'.
        (WebKit::CacheStorage::Engine::putRecords): Remove unused
        lambda capture for 'cacheIdentifier'.
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::records): Ditto.

2017-08-25  Brian Burg  <bburg@apple.com>

        Web Automation: add capabilities to control ICE candidate filtering and insecure media capture
        https://bugs.webkit.org/show_bug.cgi?id=175563
        <rdar://problem/33734492>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::requestAutomationSessionWithCapabilities):
        Translate new capabilities to _WKAutomationSessionConfiguration properties.

2017-08-24  Brian Burg  <bburg@apple.com>

        Web Automation: use automation session configurations to propagate per-session settings
        https://bugs.webkit.org/show_bug.cgi?id=175562
        <rdar://problem/30853362>

        Reviewed by Joseph Pecoraro.

        Some WebDriver capabilities need WebKit support in order to be implemented correctly.
        There is currently no easy way to forward WebDriver capability keys and values to WebKit
        at session creation time. This is unfortunate, as it would be best to implement many of
        them via existing mechanisms (i.e., WKPreferences properties) that need to be set up
        before any windows are opened in the session.

        This patch adds WebKit-side plumbing to forward named capabilities from a remote
        WebDriver client to the _WKAutomationSession and its delegate in WebKit2 UIProcess.
        These capabilities are exposed via API in ways that abstract away details of how the
        capabilities are represented in RWI wire protocol messages.

        In the Cocoa API, these capabilities are exposed via a session configuration object
        that's similar to WKWebView's WKWebViewConfiguration. A session's configuration is copied
        and used at initialization and cannot be modified after the session is created.
        Code in the Cocoa subclass of API::AutomationClient translates between RWI protocol
        capability names and property values on the _WKAutomationSessionConfiguration it
        uses to request a new session.

        Later patches will hook up the two properties present in the configuration in this patch.
        Most of this patch is just generic plumbing without doing any capability-specific work.

        * UIProcess/API/Cocoa/_WKAutomationDelegate.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
        (-[_WKAutomationSession init]):
        (-[_WKAutomationSession initWithConfiguration:]):
        (-[_WKAutomationSession configuration]):
        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKAutomationDelegate.h.
        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSession.h.
        (-[_WKAutomationSessionConfiguration init]):
        (-[_WKAutomationSessionConfiguration description]):
        * UIProcess/Cocoa/AutomationClient.h:
        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::AutomationClient):
        (WebKit::AutomationClient::requestAutomationSession):
        (WebKit::AutomationClient::requestAutomationSessionWithCapabilities):
        * WebKit.xcodeproj/project.pbxproj:

2017-08-25  Brady Eidson  <beidson@apple.com>

        Introduce ServerWorkerRegistration task queues.
        https://bugs.webkit.org/show_bug.cgi?id=175851

        Reviewed by Andy Estes.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        (WebKit::WebSWServerConnection::identifier const): Deleted.

        * WebProcess/Storage/WebSWClientConnection.h:
        (WebKit::WebSWClientConnection::identifier const): Deleted.

2017-08-25  Youenn Fablet  <youenn@apple.com>

        [Cache API] UIProcess should provide the directory path where to store Cache Storage data
        https://bugs.webkit.org/show_bug.cgi?id=175884
        <rdar://problem/34072441>

        Unreviewed.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration): Fixing typo.

2017-08-25  Jonathan Bedard  <jbedard@apple.com>

        Fix build breakage with Public iOS 11 SDK
        https://bugs.webkit.org/show_bug.cgi?id=175960
        <rdar://problem/34069264>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h: Add UIURLDragPreviewView declaration.

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

        [Directory Upload] Add basic support for input.webkitdirectory
        https://bugs.webkit.org/show_bug.cgi?id=175950
        <rdar://problem/33951915>

        Reviewed by Geoffrey Garen.

        Add private API to toggle Directory Upload support.

        Add new member to WKOpenPanelParameters to communicate to the
        client that the file picker should allow selecting directories.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FileChooserSettings>::encode):
        (IPC::ArgumentCoder<FileChooserSettings>::decode):
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/APIOpenPanelParameters.h:
        (API::OpenPanelParameters::allowDirectories const):
        * UIProcess/API/C/WKOpenPanelParametersRef.cpp:
        (WKOpenPanelParametersGetAllowsDirectories):
        * UIProcess/API/C/WKOpenPanelParametersRef.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetDirectoryUploadEnabled):
        (WKPreferencesGetDirectoryUploadEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKOpenPanelParameters.h:
        * UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
        (-[WKOpenPanelParameters allowsDirectories]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-24  Youenn Fablet  <youenn@apple.com>

        [Cache API] UIProcess should provide the directory path where to store Cache Storage data
        https://bugs.webkit.org/show_bug.cgi?id=175884

        Reviewed by Brady Eidson.

        Adding API to set the cache storage directory path.
        Updating IPC to pass this parameter with its sandbox extension to NetworkProcess at creation time.

        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::cacheStorageDirectory const):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultCacheStorageDirectory):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-08-24  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate equivalent of WKPageUIClient's handleAutoplayEvent
        https://bugs.webkit.org/show_bug.cgi?id=175965
        <rdar://problem/29270035>

        Reviewed by Tim Horton.

        Covered by updating API tests to use UIDelegate instead of _pageForTesting and WKPageUIClient.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::toWKFocusDirection):
        (WebKit::toWKAutoplayEventFlags):
        (WebKit::toWKAutoplayEvent):
        (WebKit::UIDelegate::UIClient::handleAutoplayEvent):

2017-08-24  Brady Eidson  <beidson@apple.com>

        Remove duplicate WebCore::URL encoder/decoder
        https://bugs.webkit.org/show_bug.cgi?id=175952

        Reviewed by Chris Dumez.

        Don't need the WebCoreArgumentCoder in WebKit since the URL class defines its own coders.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<URL>::encode): Deleted.
        (IPC::ArgumentCoder<URL>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:

2017-08-24  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate callback corresponding to PageUIClient's didNotHandleWheelEvent
        https://bugs.webkit.org/show_bug.cgi?id=175957
        <rdar://problem/29270035>

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didNotHandleWheelEvent):

2017-08-24  Tim Horton  <timothy_horton@apple.com>

        Overflow scroll views are inset to avoid safe areas even if the parent view is not
        https://bugs.webkit.org/show_bug.cgi?id=175949
        <rdar://problem/34063057>

        Reviewed by Beth Dakin.

        * UIProcess/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        Disable automatic content inset adjustment to avoid safe areas on
        all of WKWebView's child UIScrollViews.

2017-08-24  Tim Horton  <timothy_horton@apple.com>

        Layout size override changes during in-flight animated resize are dropped on the floor forever
        https://bugs.webkit.org/show_bug.cgi?id=175916
        <rdar://problem/33887295>

        Reviewed by Beth Dakin.

        Layout size override changes that come in during an animated resize
        are currently stored, but not sent in a separate message, because
        they're sent as part of the resize. However, if a layout size override
        change happens after the animated resize message was already sent, but
        before the animated resize is ended, that change will be stored, but
        not sent in the animated resize message (because it's too late), and
        then subsequent calls with the same size will early-return, because
        we're testing against the stored size, not the size we last actually
        sent to the Web Content process.

        Instead, store the last-sent size, so that subsequent layout size override
        changes with the same size won't bail, and if it differs from the active
        state after the animated resize completes, send an out-of-band update.

        All of the above also applies to device orientation, which follows
        exactly the same pattern.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _dispatchSetMinimumLayoutSize:]):
        (-[WKWebView _dispatchSetMaximumUnobscuredSize:]):
        (-[WKWebView _dispatchSetDeviceOrientation:]):
        (-[WKWebView _frameOrBoundsChanged]):
        (-[WKWebView _windowDidRotate:]):
        (-[WKWebView _didRelaunchProcess]):
        (-[WKWebView _setMinimumLayoutSizeOverride:]):
        (-[WKWebView _setInterfaceOrientationOverride:]):
        (-[WKWebView _setMaximumUnobscuredSizeOverride:]):
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):

2017-08-24  Tim Horton  <timothy_horton@apple.com>

        _WKThumbnailView snapshots have to be copied by CA on first commit due to bad row alignment
        https://bugs.webkit.org/show_bug.cgi?id=175898
        <rdar://problem/34029673>

        Reviewed by Sam Weinig.

        In order to avoid copying, CGImages used as layer contents need to have certain
        alignment requirements fulfilled. Align the row stride to the desired value.

        * Shared/ShareableBitmap.cpp:
        (WebKit::ShareableBitmap::create):
        (WebKit::ShareableBitmap::createShareable):
        (WebKit::ShareableBitmap::numBytesForSize):
        (WebKit::ShareableBitmap::calculateBytesPerPixel): Deleted.
        * Shared/ShareableBitmap.h:
        (WebKit::ShareableBitmap::sizeInBytes const):
        (WebKit::ShareableBitmap::numBytesForSize): Deleted.
        Merge the interfaces of numBytesPerSize and sizeInBytes between the platforms.
        numBytesForSize now makes use of the new calculateBytesPerRow, which is
        implemented by each platform ShareableBitmap implementation to do the
        requisite alignment for that platform.

        * Shared/cairo/ShareableBitmapCairo.cpp:
        (WebKit::ShareableBitmap::calculateBytesPerRow):
        (WebKit::ShareableBitmap::calculateBytesPerPixel):
        (WebKit::createSurfaceFromData):
        (WebKit::ShareableBitmap::numBytesForSize): Deleted.
        Implement calculateBytesPerRow (which used to be hidden inside of numBytesForSize)
        and get rid of the now-duplicative numBytesForSize.

        * Shared/cg/ShareableBitmapCG.cpp:
        (WebKit::ShareableBitmap::calculateBytesPerRow):
        (WebKit::ShareableBitmap::createGraphicsContext):
        (WebKit::ShareableBitmap::createCGImage const):
        Implement calculateBytesPerRow and make use of it when providing a row stride
        to CoreGraphics.

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

        [iOS] ViewServices started by StoreKitUIService may get suspended unexpectedly
        https://bugs.webkit.org/show_bug.cgi?id=175922
        <rdar://problem/34028921>

        Reviewed by Tim Horton.

        ViewServices started by StoreKitUIService may get suspended unexpectedly. This is
        because StoreKitUIService is itself a ViewService and is therefore in the background.
        To address the issue, treat StoreKitUIService as initially foreground in
        ApplicationStateTracker so that its ViewServices do not get suspended. We don't
        have good way to deal with ViewServices started by other ViewServices unfortunately.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker):

2017-08-23  Youenn Fablet  <youenn@apple.com>

        [Cache API] Unify WebCore and WebKit error handling
        https://bugs.webkit.org/show_bug.cgi?id=175902

        Reviewed by Alex Christensen.

        Removing all callbacks and error definitions from WebKit
        and reusing DOMCache ones instead.

        * NetworkProcess/cache/CacheStorage.h: Removed.
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::caches const):
        (WebKit::CacheStorage::Engine::queryCache):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::putRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DOMCache::CacheInfo>::encode):
        (IPC::ArgumentCoder<DOMCache::CacheInfo>::decode):
        (IPC::ArgumentCoder<DOMCache::Record>::encode):
        (IPC::ArgumentCoder<DOMCache::Record>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::doBatchPutOperation):
        (WebKit::WebCacheStorageConnection::openCompleted):
        (WebKit::WebCacheStorageConnection::removeCompleted):
        (WebKit::WebCacheStorageConnection::updateCaches):
        (WebKit::WebCacheStorageConnection::updateRecords):
        (WebKit::WebCacheStorageConnection::deleteRecordsCompleted):
        (WebKit::WebCacheStorageConnection::putRecordsCompleted):
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/Cache/WebCacheStorageConnection.messages.in:

2017-08-23  Alex Christensen  <achristensen@webkit.org>

        Clean up UIClients
        https://bugs.webkit.org/show_bug.cgi?id=175906

        Reviewed by Tim Horton.

        There were some unnecessary checks to see if the client implements something,
        when the default behavior is to do nothing if the client doesn't implement the callback.
        Also, make some overrides finals and fix some spacing.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didNotHandleKeyEvent):
        (API::UIClient::implementsDidNotHandleKeyEvent const): Deleted.
        (API::UIClient::implementsDidNotHandleWheelEvent const): Deleted.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveEvent):

2017-08-23  Alex Christensen  <achristensen@webkit.org>

        Add WKUIDelegatePrivate callbacks corresponding to WKPageUIClient's takeFocus, focus, and unfocus
        https://bugs.webkit.org/show_bug.cgi?id=175896

        Reviewed by Tim Horton.
        
        I also renamed _webViewShow to _showWebView based on feedback from https://bugs.webkit.org/show_bug.cgi?id=175797

        Added an API test.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::toWKFocusDirection):
        (WebKit::UIDelegate::UIClient::takeFocus):
        (WebKit::UIDelegate::UIClient::focus):
        (WebKit::UIDelegate::UIClient::unfocus):
        (WebKit::UIDelegate::UIClient::showPage):

2017-08-23  Youenn Fablet  <youenn@apple.com>

        [CacheAPI] Introduce a WebKit::CacheStorage namespace
        https://bugs.webkit.org/show_bug.cgi?id=175885

        Reviewed by Alex Christensen.

        Introducing WebKit::CacheStorage namespace.
        Splitting CacheStorageEngine.h in three files.
        Updating client code accordingly.

        * NetworkProcess/cache/CacheStorage.h: Added.
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::globalEngineMap):
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::destroyEngine):
        (WebKit::CacheStorage::Engine::defaultEngine):
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::remove):
        (WebKit::CacheStorage::Engine::retrieveCaches):
        (WebKit::CacheStorage::Engine::retrieveRecords):
        (WebKit::CacheStorage::Engine::putRecords):
        (WebKit::CacheStorage::Engine::deleteMatchingRecords):
        (WebKit::CacheStorage::Engine::writeCachesToDisk):
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        (WebKit::CacheStorage::Engine::readCache):
        (WebKit::CacheStorage::Engine::writeCacheRecords):
        (WebKit::CacheStorage::Engine::removeCacheRecords):
        (WebKit::CacheStorage::Engine::cache):
        (WebKit::CacheStorage::Engine::caches const):
        (WebKit::CacheStorage::Engine::queryCache):
        * NetworkProcess/cache/CacheStorageEngineCache.h: Added.
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::caches):
        (WebKit::CacheStorageEngineConnection::records):
        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
        (WebKit::CacheStorageEngineConnection::putRecords):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::openCompleted):
        (WebKit::WebCacheStorageConnection::removeCompleted):
        (WebKit::WebCacheStorageConnection::updateCaches):
        (WebKit::WebCacheStorageConnection::updateRecords):
        (WebKit::WebCacheStorageConnection::deleteRecordsCompleted):
        (WebKit::WebCacheStorageConnection::putRecordsCompleted):
        * WebProcess/Cache/WebCacheStorageConnection.h:

2017-08-23  Youenn Fablet  <youenn@apple.com>

        [Cache API] Enable persistent coder to encode FetchOptions
        https://bugs.webkit.org/show_bug.cgi?id=175883

        Reviewed by Alex Christensen.

        Removing FetchOptions related ArgumentCoders specific code.

        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:

2017-08-23  Youenn Fablet  <youenn@apple.com>

        CacheStorageEngine readCachesFromDisk callback should return the read Caches
        https://bugs.webkit.org/show_bug.cgi?id=175882

        Reviewed by Alex Christensen.

        Callback of readCachesFromDisk takes now a Caches or error parameter.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorageEngine::open):
        (WebKit::CacheStorageEngine::retrieveCaches):
        (WebKit::CacheStorageEngine::readCachesFromDisk):
        * NetworkProcess/cache/CacheStorageEngine.h:

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

        Regression(r221059): NetworkDataTask::didReceiveResponse() should not use PolicyUse for HTTP/0.9
        https://bugs.webkit.org/show_bug.cgi?id=175872

        Reviewed by Daniel Bates.

        r221059 was calling the ResponseCompletionHandler with {} which ended up being
        PolicyUse. Since this is an error case and do not want to receive the data, it
        makes more sense to use PolicyIgnore instead. There should not be a behavior
        change on WebKit side though since we are cancelling the load right after
        calling the completion handler anyway.

        Tests under http/tests/security/http-0.9/ are still passing.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):

2017-08-22  Tim Horton  <timothy_horton@apple.com>

        _WKThumbnailView should use the screen color space instead of sRGB
        https://bugs.webkit.org/show_bug.cgi?id=175858
        <rdar://problem/33925559>

        Reviewed by Dean Jackson.

        Currently, _WKThumbnailView uses software snapshotting via
        WebPage's takeSnapshot and friends, which always use sRGB.
        However, it is immediately presented in display space, which
        causes an expensive color conversion, which could have been avoided
        if the snapshot was instead originally taken in display space.

        To solve this, add:

        - a mechanism allowing ShareableBitmap to be constructed with a
          configuration, which can include a color space as well as the
          existing flags (flipping SupportsAlpha to be IsOpaque instead
          because most callers want alpha)

        - a WebImage constructor allowing callers to pass a ShareableBitmap
          configuration through

        - a bit in SnapshotOptions for callers to indicate that they
          want to snapshot in the display's color space (repurposed
          from the ExtendedColor bit)

        And then make use of that bit in _WKThumbnailView.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::snapshotOptionsFromImageOptions):
        Remove this incorrect conversion (WKImageOptions doesn't include
        kWKSnapshotOptionsExtendedColor).

        (WebKit::toSnapshotOptions):
        Plumb kWKSnapshotOptionsExtendedColor to WebKit::SnapshotOptions
        as the "UseScreenColorSpace". Leave the SPI name intact because
        it has clients, but the difference isn't so huge that it will be
        a problem.

        * Shared/ImageOptions.h:
        (WebKit::snapshotOptionsToImageOptions):
        Remove ImageOptionsExtendedColor, and rename
        SnapshotOptionsExtendedColor to SnapshotOptionsUseScreenColorSpace.

        * Shared/ShareableBitmap.cpp:
        (WebKit::ShareableBitmap::Handle::Handle):
        (WebKit::ShareableBitmap::Handle::encode const):
        (WebKit::ShareableBitmap::Handle::decode):
        (WebKit::ShareableBitmap::Handle::clear):
        (WebKit::ShareableBitmap::Configuration::encode const):
        (WebKit::ShareableBitmap::Configuration::decode):
        (WebKit::ShareableBitmap::create):
        (WebKit::ShareableBitmap::createShareable):
        (WebKit::ShareableBitmap::createHandle const):
        (WebKit::ShareableBitmap::ShareableBitmap):
        (WebKit::ShareableBitmap::calculateBytesPerPixel):
        (WebKit::calculateBytesPerPixel): Deleted.
        * Shared/ShareableBitmap.h:
        (WebKit::ShareableBitmap::numBytesForSize):
        (WebKit::ShareableBitmap::sizeInBytes const):
        * Shared/cg/ShareableBitmapCG.cpp:
        (WebKit::colorSpace):
        (WebKit::bitmapInfo):
        (WebKit::ShareableBitmap::calculateBytesPerPixel):
        (WebKit::ShareableBitmap::createGraphicsContext):
        (WebKit::ShareableBitmap::createCGImage const):
        Remove ShareableBitmap's flags parameter, and replace it with
        a configuration parameter. Configuration is a struct that currently
        encompasses the newly-flipped IsOpaque bit and (on Cocoa platforms)
        a platform colorspace object. Compute bytesPerPixel dynamically
        based on the colorspace and whether it uses extended colors or not.

        * Shared/WebImage.cpp:
        (WebKit::WebImage::create):
        * Shared/WebImage.h:
        Pass ShareableBitmap::Configuration through to the ShareableBitmap
        constructor, if provided.

        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        (-[_WKThumbnailView requestSnapshot]):
        Make use of the new bit, and use the screen's color space.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::snapshotOptionsToBitmapConfiguration):
        (WebKit::WebPage::snapshotAtSize):
        (WebKit::WebPage::snapshotNode):
        If the snapshot option to use the display color space is set,
        fill in the colorSpace field in the ShareableBitmap::Configuration
        with the screen's color space.

        (WebKit::WebPage::drawRectToImage):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::encodeImage):
        * Shared/ContextMenuContextData.cpp:
        (WebKit::ContextMenuContextData::ContextMenuContextData):
        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::snapshot):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::snapshot):
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::geometryDidChange):
        (WebKit::PluginProxy::updateBackingStore):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertImageToBitmap):
        (WebKit::convertCGImageToBitmap):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::createSelectionSnapshot const):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):
        Adopt ShareableBitmap::Configuration. Since IsOpaque
        defaults to false, all callers who previously constructed
        ShareableBitmap with SupportsAlpha now don't have to do anything.

2017-08-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] WKWebView schedules nonstop layout after pressing cmb+b,i,u inside a contenteditable div
        https://bugs.webkit.org/show_bug.cgi?id=175116
        <rdar://problem/28279301>

        Reviewed by Darin Adler and Ryosuke Niwa.

        Refactors WebPage::editorState to only use the StyleProperties derived from EditingStyle, instead of inserting
        and removing a temporary node to figure out the style. Also adds hooks to notify the UI delegate of EditorState
        changes.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (nsTextAlignment):
        (dictionaryRepresentationForEditorState):
        (-[WKWebView _didChangeEditorState]):

        Alerts the private UI delegate of UI-side EditorState updates.

        (-[WKWebView _web_editorStateDidChange]):
        (-[WKWebView _executeEditCommand:argument:completion:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _web_editorStateDidChange]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::selectionDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::executeEditCommand):

        Change executeEditCommand(name, callback) to executeEditCommand(name, argument, callback) and lift out of iOS
        platform code and into WebPage.cpp.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView executeEditCommandWithCallback:]):
        (-[WKContentView _selectionChanged]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::executeEditCommand): Deleted.

        Move the iOS-specific implementation of executeEditCommand that invokes a callback when the web process responds
        out of WebPageProxyIOS, and into cross-platform WebPageProxy code. Additionally, add a parameter for the edit
        command's argument.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):

        Use EditingStyle::styleAtSelectionStart instead of Editor::styleForSelectionStart when computing an EditorState.
        Tweak bold, italic and underline to use EditingStyle TriStates.

        (WebKit::WebPage::executeEditCommandWithCallback):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::executeEditCommandWithCallback): Deleted.

2017-08-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] EditorState updates should be rolled into the layer update lifecycle when possible
        https://bugs.webkit.org/show_bug.cgi?id=175370
        <rdar://problem/33799806>

        Reviewed by Ryosuke Niwa.

        See per-method comments for more detail. WebPage::didChangeSelection now schedules EditorState updates to be sent
        during the next layer tree transaction rather than sending them synchronously. To ensure that iOS and Mac continue
        to behave correctly w.r.t. EditorState updates, we immediately dispatch EditorStates in the following cases:
        - After the composition changes, is confirmed, or is canceled.
        - After an edit command is executed.
        - After ending user-triggered selection changes.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::hasEditorState const):
        (WebKit::RemoteLayerTreeTransaction::editorState const):
        (WebKit::RemoteLayerTreeTransaction::setEditorState):

        Attaches an optional EditorState to the RemoteLayerTreeTransaction. This EditorState is computed and sent over
        when setting up the transaction in WebPage, if something previously scheduled an EditorState update.

        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        (WebKit::RemoteLayerTreeTransaction::decode):

        Add coder support for sending over a layer tree transaction's EditorState.

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

        Add _doAfterNextPresentationUpdate to WKView (used in TestWebKitAPI -- refer to
        WebKitAgnosticTest::waitForNextPresentationUpdate).

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::dispatchPresentationCallbacksAfterFlushingLayers):
        * UIProcess/DrawingAreaProxy.messages.in:

        Add a new IPC messages, DispatchPresentationCallbacksAfterFlushingLayers, to invoke in-flight presentation
        callbacks in the UI process following a layer flush in the web process.

        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::~TiledCoreAnimationDrawingAreaProxy):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchPresentationCallbacksAfterFlushingLayers):

        Run all pending _doAfterNextPresentationUpdate callbacks.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::didApplyStyle):
        (WebKit::WebEditorClient::respondToChangedContents):
        (WebKit::WebEditorClient::didEndUserTriggeredSelectionChanges):
        (WebKit::WebEditorClient::didUpdateComposition):

        Forward editor client calls to the WebPage.

        (WebKit::WebEditorClient::didChangeSelectionAndUpdateLayout): Deleted.
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):
        (WebKit::WebPage::updateEditorStateAfterLayoutIfEditabilityChanged):
        (WebKit::WebPage::willCommitLayerTree):
        (WebKit::WebPage::didApplyStyle):

        Allow style application to immediately trigger EditorState updates, if we're not currently ignoring selection
        changes in the Editor.

        (WebKit::WebPage::didChangeContents):

        Allow applying top-level edit commands to immediately trigger EditorState updates, if we're not currently
        ignoring selection changes in the Editor.

        (WebKit::WebPage::didChangeSelection):
        (WebKit::WebPage::didUpdateComposition):
        (WebKit::WebPage::didEndUserTriggeredSelectionChanges):
        (WebKit::WebPage::discardedComposition):
        (WebKit::WebPage::canceledComposition):

        When handling composition updates, always send an EditorState to the UI process. Unlike other cases, IME
        requires immediate EditorState data, so we need to be explicit here in sending updates right away.

        (WebKit::WebPage::sendEditorStateUpdate):
        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):
        (WebKit::WebPage::flushPendingEditorStateUpdate):

        Helper methods to schedule an EditorState update to be sent upon the next layer tree update, or flush any
        pending EditorState update that has been scheduled. The private, more aggressive variant of this is
        sendEditorStateUpdate, which ignores whether or not there was already an EditorState update scheduled, and sends
        one anyways (this still fulfills any EditorState update that was previously scheduled).

        These helper methods are treated as no-ops when invoked while ignoring selection changes. This is to prevent
        temporary selection state and editor commands during operations such as text indicator snapshotting from pushing
        bogus information about transient editor states to the UI process.

        (WebKit::WebPage::sendPostLayoutEditorStateIfNeeded): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::executeEditCommandWithCallback):
        (WebKit::selectionIsInsideFixedPositionContainer):
        (WebKit::WebPage::updateVisibleContentRects):

        Fix a hack that was computing an EditorState to figure out whether the current selection starts or ends in a
        fixed position container. Factors out relevant logic into a separate helper, and also schedules an EditorState
        update instead of immediately computing it.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID):

        Add support for registering and dispatching presentation callbacks that hook into the layer flush lifecycle,
        using the tiled CA drawing area. These are used by Mac LayoutTests and API tests that need to wait until the
        next flush before checking for state that depends on EditorState updates in the UI process.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

        Tell the WebPage to flush any pending EditorState updates.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformEditorState const):

2017-08-22  Brent Fulgham  <bfulgham@apple.com>

        Relax keychain access to permit users to permanently allow client certificates
        https://bugs.webkit.org/show_bug.cgi?id=175857
        <rdar://problem/32293867>

        Reviewed by Alex Christensen.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

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

        Introduce a new CompletionHandler type and use it for NetworkDataTaskClient's completion handlers to help catch bugs
        https://bugs.webkit.org/show_bug.cgi?id=175832

        Reviewed by Alex Christensen.

        Use new CompletionHandler type for NetworkDataTaskClient's completion handlers to help catch bugs.
        It actually already found a bug in our HTTP 0.9 error handling which is fixed in this patch
        as well.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/mac/AuthenticationManager.mac.mm:
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Add UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
        https://bugs.webkit.org/show_bug.cgi?id=175797
        <rdar://problem/29270035>

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::showPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::registerURLSchemeHandler):
        window.open, createWebViewWithConfiguration, and WKURLSchemeHandlers all used together
        make it so that URLSchemeHandlers are added to WebPages that already have them.  The
        assertions are no longer valid.

2017-08-22  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r221026.

        This caused a consistent API failure on iOS Simulator.

        Reverted changeset:

        "Add UIDelegatePrivate SPI corresponding to
        WKPageUIClient.showPage"
        https://bugs.webkit.org/show_bug.cgi?id=175797
        http://trac.webkit.org/changeset/221026

2017-08-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r221027.

        This change caused LayoutTests to exit early with assertion
        failures.

        Reverted changeset:

        "Add sanity check for source origin in
        WebLoaderStrategy::startPingLoad()"
        https://bugs.webkit.org/show_bug.cgi?id=175827
        http://trac.webkit.org/changeset/221027

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

        [WK2] Enable Beacon API by default
        https://bugs.webkit.org/show_bug.cgi?id=175839

        Reviewed by Youenn Fablet.

        * Shared/WebPreferencesDefinitions.h:

2017-08-22  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (High Sierra): PDFPlugin won't render PostScript Files
        https://bugs.webkit.org/show_bug.cgi?id=175840
        <rdar://problem/33877923>

        Reviewed by Brent Fulgham.

        * WebProcess/com.apple.WebProcess.sb.in:
        Add a sandbox exception for the PostScript conversion process.

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

        Clean up PingLoad::processContentExtensionRulesForLoad()
        https://bugs.webkit.org/show_bug.cgi?id=175834

        Reviewed by Alex Christensen.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::processContentExtensionRulesForLoad):
        * NetworkProcess/PingLoad.h:

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Remove ChromeClient::scrollbarsModeDidChange
        https://bugs.webkit.org/show_bug.cgi?id=175805

        Reviewed by Daniel Bates.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::scrollbarsModeDidChange const): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.h:

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

        Add sanity check for source origin in WebLoaderStrategy::startPingLoad()
        https://bugs.webkit.org/show_bug.cgi?id=175827

        Reviewed by Geoffrey Garen.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::startPingLoad):

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Add UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
        https://bugs.webkit.org/show_bug.cgi?id=175797
        <rdar://problem/29270035>

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::showPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::registerURLSchemeHandler):
        window.open, createWebViewWithConfiguration, and WKURLSchemeHandlers all used together
        make it so that URLSchemeHandlers are added to WebPages that already have them.  The
        assertions are no longer valid.

2017-08-22  Youenn Fablet  <youenn@apple.com>

        [Cache API] Add support for overwriting responses with put on an existing record
        https://bugs.webkit.org/show_bug.cgi?id=175825

        Reviewed by Geoffrey Garen.

        Add support for encoding/decoding the update counter.
        Incrementing it when overwriting an existing response.
        Storing the new body in addition to the new response.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorageEngine::putRecords):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::encode):
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::decode):

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Remove ChromeClient::hasOpenedPopup
        https://bugs.webkit.org/show_bug.cgi?id=175804

        Reviewed by Sam Weinig.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::hasOpenedPopup const): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-08-22  Brent Fulgham  <bfulgham@apple.com> and Pranjal Jumde  <pjumde@apple.com>

        Disable access to secure cookies if an HTTPS site loads mixed content
        https://bugs.webkit.org/show_bug.cgi?id=157053
        <rdar://problem/11290808>

        Reviewed by Dan Bates.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): Pass new arguments needed by WebCore.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in: Updated the CookiesForDOM message with the new foundMixedContent
        argument and the new didAccessSecureCookies reply.
        * Shared/mac/CookieStorageShim.mm:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL): Drive-by fix to use the right message.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookiesForDOM): Check and return whether secure cookies were accessed. Accept a new argument
        indicating whether secure cookies should be included in the response.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-08-22  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WPE] Rename StorageProcessMainGtk.cpp to StorageProcessMainGLib.cpp
        https://bugs.webkit.org/show_bug.cgi?id=175814

        Reviewed by Gyuyoung Kim.

        Both GTK+ and WPE ports already compile the StorageProcessMainGtk.cpp
        file, but it should be renamed to StorageProcessMainGLib and moved into
        the StorageProcess/glib/ directory.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * StorageProcess/glib/StorageProcessMainGLib.cpp: Renamed from Source/WebKit/StorageProcess/gtk/StorageProcessMainGtk.cpp.

2017-08-21  Zan Dobersek  <zdobersek@igalia.com>

        [WK] Add missing ENABLE(NETWORK_CACHE) build guards
        https://bugs.webkit.org/show_bug.cgi?id=175769

        Reviewed by Carlos Alberto Lopez Perez.

        Given that the build guard exists, it should be possible to
        compile the WebKit layer with the feature disabled. Missing
        guards are added in order to achieve that.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::clearDiskCache):
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache):

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

        [Beacon] Content extensions should be able to intercept Beacon / Ping redirects
        https://bugs.webkit.org/show_bug.cgi?id=175746
        <rdar://problem/33946050>

        Reviewed by Alex Christensen.

        Update PingLoad to process content extension rules upon redirect. This allows content
        extensions to block and upgrade to HTTPS beacon / ping loads.

        Because ping loads can outlive the WebProcess, the content extensions rules are passed
        to the NetworkProcess when starting the Ping load. The PingLoad can then consult those
        rules upon redirect, on the NetworkProcess side.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::contentExtensionsBackend):
        (WebKit::PingLoad::processContentExtensionRulesForLoad):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::startPingLoad):

2017-08-21  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Unused variables in UserMediaProcessManager.cpp
        https://bugs.webkit.org/show_bug.cgi?id=175799

        Reviewed by Alex Christensen.

        The code which uses the "audioExtensionPath" and "videoExtensionPath" variables is guarded
        with "#if ENABLE(SANDBOX_EXTENSIONS)”, so do the same for the variables themselves.

        * UIProcess/UserMediaProcessManager.cpp: Add missing guards.

2017-08-21  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/mac directory into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175649

        Reviewed by Myles C. Maxfield.

        * Platform/mac/MenuUtilities.mm:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        * Shared/mac/WebEventFactory.mm:
        * Shared/mac/WebHitTestResultData.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/mac/ServicesController.mm:
        * UIProcess/mac/TextCheckerMac.mm:
        * UIProcess/mac/ViewGestureControllerMac.mm:
        * UIProcess/mac/WKImmediateActionController.h:
        * UIProcess/mac/WKImmediateActionController.mm:
        * UIProcess/mac/WKSharingServicePickerDelegate.mm:
        * UIProcess/mac/WKTextFinderClient.mm:
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-08-21  Brady Eidson  <beidson@apple.com>

        Split the one SWServer::Connection into SWClientConnection and SWServer::Connection.
        https://bugs.webkit.org/show_bug.cgi?id=175745

        Reviewed by Andy Estes.

        * CMakeLists.txt:
        * DerivedSources.make:
        * WebKit.xcodeproj/project.pbxproj:

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.cpp.
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::disconnectedFromWebProcess):
        (WebKit::WebSWServerConnection::rejectJobInClient):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h.
        (WebKit::WebSWServerConnection::identifier const):
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in.

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::removeSWServerConnection):
        * StorageProcess/StorageToWebProcessConnection.h:

        * WebProcess/Storage/WebSWClientConnection.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp.
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        (WebKit::WebSWClientConnection::~WebSWClientConnection):
        (WebKit::WebSWClientConnection::scheduleJobInServer):
        * WebProcess/Storage/WebSWClientConnection.h: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h.
        (WebKit::WebSWClientConnection::identifier const):
        * WebProcess/Storage/WebSWClientConnection.messages.in: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in.

        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebServiceWorkerProvider.h:

        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:

2017-08-21  Charlie Turner  <cturner@igalia.com>

        MemoryCache::setCapacities assertion failure maxDeadBytes <= totalBytes
        https://bugs.webkit.org/show_bug.cgi?id=175571

        Reviewed by Antti Koivisto.

        * Shared/CacheModel.cpp:
        (WebKit::calculateMemoryCacheSizes): Ensure cacheTotalCapacity is
        set to a reasonable value even in low-memory environments.

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

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

        Reviewed by Sam Weinig.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::startPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

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

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

        Reviewed by Darin Adler.

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

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::didFinishPingLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::~PingLoad):
        (WebKit::PingLoad::didFinish):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::didReceiveChallenge):
        (WebKit::PingLoad::didReceiveResponseNetworkSession):
        (WebKit::PingLoad::didCompleteWithError):
        (WebKit::PingLoad::wasBlocked):
        (WebKit::PingLoad::cannotShowURL):
        (WebKit::PingLoad::timeoutTimerFired):
        (WebKit::PingLoad::currentRequest const):
        (WebKit::PingLoad::makeCrossOriginAccessRequestWithPreflight):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didFinishPingLoad):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::networkProcessCrashed):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::didFinishPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

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

        REGRESSION (r220601): Crash when closing google doc after switching the order of tabs in safari
        https://bugs.webkit.org/show_bug.cgi?id=175721
        <rdar://problem/33928369>

        Reviewed by Geoffrey Garen.

        Make sure WebProcess::markAllLayersVolatile() does not call WTFMove() multiple times
        on the same completion handler. Use a RefCounter to hold on to the completion handler
        and make sure the handler gets called when the RefCounter's value becomes 0.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::markAllLayersVolatile):
        (WebKit::WebProcess::cancelMarkAllLayersVolatile):
        * WebProcess/WebProcess.h:

2017-08-18  Youenn Fablet  <youenn@apple.com>

        [Cache API] Add response body storage
        https://bugs.webkit.org/show_bug.cgi?id=175658

        Reviewed by Alex Christensen.

        Added IPC serialization of Record response body.
        Updated CacheStorageEngine implementation as Record has no longer a copy constructor.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorageEngine::retrieveRecords):
        (WebKit::CacheStorageEngine::deleteMatchingRecords):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::encodeSharedBuffer):
        (IPC::decodeSharedBuffer):
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::encode):
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::decode):

2017-08-18  Brady Eidson  <beidson@apple.com>

        Bounce ServiceWorker jobs to the Storage Process.
        https://bugs.webkit.org/show_bug.cgi?id=175650

        Reviewed by Andy Estes.

        * CMakeLists.txt:
        * DerivedSources.make:
        * WebKit.xcodeproj/project.pbxproj:

        * Platform/Logging.h:

        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        (WebKit::StorageToWebProcessConnection::removeSWServerConnection):
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer):
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:

        * WebProcess/Storage/WebSWServerConnection.cpp: Added.
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::disconnectedFromWebProcess):
        (WebKit::WebSWServerConnection::scheduleJob):
        (WebKit::WebSWServerConnection::scheduleStorageJob):
        * WebProcess/Storage/WebSWServerConnection.h: Copied from Source/WebCore/workers/service/ServiceWorkerJob.h.
        (WebKit::WebSWServerConnection::create):
        (WebKit::WebSWServerConnection::identifier const):
        * WebProcess/Storage/WebSWServerConnection.messages.in: Copied from Source/WebKit/StorageProcess/StorageToWebProcessConnection.messages.in.

        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::scheduleJob): Deleted.
        * WebProcess/Storage/WebServiceWorkerProvider.h:

        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:

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

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

        Reviewed by Youenn Fablet.

        WebLoaderStrategy now generates an identifier for ping loads and keep
        the completion handler in a local HashMap. Once the ping load is done,
        the network process sends an IPC message back to the WebContent process
        so that WebLoaderStrategy can look up the completion handler for the
        ping load and call it.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::didFinishPingLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::~PingLoad):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didFinishPingLoad):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::generatePingLoadIdentifier):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::didFinishPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-08-18  Youenn Fablet  <youenn@apple.com>

        [Cache API] Add a WK2 implementation of CacheStorageConnection
        https://bugs.webkit.org/show_bug.cgi?id=175640

        Reviewed by Alex Christensen & Chris Dumez.

        Adding WebCacheStorageConnection as an implementation of CacheStorageConnection.
        Making WebCacheStorageProvider instantiates such class.
        One WebCacheStorageConnection is created for each session of a given WebProcess.

        WebCacheStorageConnection is sending IPC calls to the network process.
        Main implementation of the cache API is done in the network process by CacheStorageEngineConnection and CacheStorageEngine.
        There is one WebCacheStorageConnection per session.
        WebCacheStorageConnection is passing the session ID for each call to the network process to ensure the right cache storage engine is used.

        CacheStorageEngineConnection mirrors WebCacheStorageConnection on the network process.
        There is one CacheStorageEngine per session and CacheStorageEngineConnection will select the right CacheStorageEngine using the given session ID.

        CacheStorageEngine is responsible of storing and matching cache API records.
        Current implementation only keeps in memory the cached objects.

        CacheStorageEngine is keeping (for each different origin) caches and records as a Vector as the order of insertion is important as per spec.
        It also keeps a list of removed caches. These caches should remain functional until the last web page having access to these is gone.
        The mechanism to fully remove these caches is not implemented yet.

        Adding IPC encodings for WTF::Expected, CacheQueryOptions, FetchOptions, CacheStorageConnection Record and CacheInfo.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::generateCacheStorageConnectionIdentifier):
        (WebKit::NetworkConnectionToWebProcess::createCacheStorageConnection):
        (WebKit::NetworkConnectionToWebProcess::closeCacheStorageConnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/cache/CacheStorageEngine.cpp: Added.
        (WebKit::defaultCacheStorageEngine):
        (WebKit::globalEngineMap):
        (WebKit::CacheStorageEngine::from):
        (WebKit::CacheStorageEngine::destroyEngine):
        (WebKit::CacheStorageEngine::defaultEngine):
        (WebKit::CacheStorageEngine::open):
        (WebKit::CacheStorageEngine::remove):
        (WebKit::CacheStorageEngine::retrieveCaches):
        (WebKit::CacheStorageEngine::retrieveRecords):
        (WebKit::CacheStorageEngine::putRecords):
        (WebKit::CacheStorageEngine::deleteMatchingRecords):
        (WebKit::CacheStorageEngine::writeCachesToDisk):
        (WebKit::CacheStorageEngine::readCachesFromDisk):
        (WebKit::CacheStorageEngine::readCache):
        (WebKit::CacheStorageEngine::writeCacheRecords):
        (WebKit::CacheStorageEngine::removeCacheRecords):
        (WebKit::CacheStorageEngine::cache):
        (WebKit::CacheStorageEngine::caches const):
        (WebKit::CacheStorageEngine::records):
        (WebKit::CacheStorageEngine::queryCache):
        * NetworkProcess/cache/CacheStorageEngine.h: Added.
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp: Added.
        (WebKit::CacheStorageEngineConnection::CacheStorageEngineConnection):
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::caches):
        (WebKit::CacheStorageEngineConnection::records):
        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
        (WebKit::CacheStorageEngineConnection::putRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h: Added.
        (WebKit::CacheStorageEngineConnection::create):
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in: Added.
        * Platform/IPC/ArgumentCoders.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<CacheQueryOptions>::encode):
        (IPC::ArgumentCoder<CacheQueryOptions>::decode):
        (IPC::ArgumentCoder<FetchOptions>::encode):
        (IPC::ArgumentCoder<FetchOptions>::decode):
        (IPC::ArgumentCoder<CacheStorageConnection::CacheInfo>::encode):
        (IPC::ArgumentCoder<CacheStorageConnection::CacheInfo>::decode):
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::encode):
        (IPC::ArgumentCoder<CacheStorageConnection::Record>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp: Added.
        (WebKit::WebCacheStorageConnection::WebCacheStorageConnection):
        (WebKit::WebCacheStorageConnection::~WebCacheStorageConnection):
        (WebKit::WebCacheStorageConnection::messageSenderConnection):
        (WebKit::WebCacheStorageConnection::doOpen):
        (WebKit::WebCacheStorageConnection::doRemove):
        (WebKit::WebCacheStorageConnection::doRetrieveCaches):
        (WebKit::WebCacheStorageConnection::doRetrieveRecords):
        (WebKit::WebCacheStorageConnection::doBatchDeleteOperation):
        (WebKit::WebCacheStorageConnection::doBatchPutOperation):
        (WebKit::WebCacheStorageConnection::openCompleted):
        (WebKit::WebCacheStorageConnection::removeCompleted):
        (WebKit::WebCacheStorageConnection::updateCaches):
        (WebKit::WebCacheStorageConnection::updateRecords):
        (WebKit::WebCacheStorageConnection::deleteRecordsCompleted):
        (WebKit::WebCacheStorageConnection::putRecordsCompleted):
        * WebProcess/Cache/WebCacheStorageConnection.h: Added.
        * WebProcess/Cache/WebCacheStorageConnection.messages.in: Added.
        * WebProcess/Cache/WebCacheStorageProvider.cpp: Copied from Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.h.
        (WebKit::WebCacheStorageProvider::createCacheStorageConnection):
        * WebProcess/Cache/WebCacheStorageProvider.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):

2017-08-18  Commit Queue  <commit-queue@webkit.org>

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

        I'm not sure we really need this (Requested by KaL on
        #webkit).

        Reverted changeset:

        "[GTK][WPE] Add NTLM authentication enabled API"
        https://bugs.webkit.org/show_bug.cgi?id=122952
        http://trac.webkit.org/changeset/220854

2017-08-15  Megan Gardner  <megan_gardner@apple.com>

        Update to changeSelectionWithTouchAt:baseIsStart:withFlags:
        https://bugs.webkit.org/show_bug.cgi?id=175615

        Update calls to use the flag versions, as they are used for passing state.
        Leave old calls, but set them up to be removed next cycle.

        Reviewed by Tim Horton.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:]):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]):
        (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]):

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

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

        Reviewed by Youenn Fablet.

        For performance reason, we should only copy the original request headers for Ping loads
        (Beacon at the moment), not for all CachedResourceRequests.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::makeCrossOriginAccessRequest):
        (WebKit::PingLoad::makeSimpleCrossOriginAccessRequest):
        (WebKit::PingLoad::originalRequestHeaders const): Deleted.
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::createPingHandle):
        * WebProcess/Network/WebLoaderStrategy.h:

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

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

        Reviewed by Alex Christensen.

        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers.templates): Deleted.
        (class_template_headers.template): Deleted.
        * Shared/ChildProcess.cpp:
        * Shared/SessionTracker.h:
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebPageCreationParameters.h:
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.h:
        * Shared/mac/CookieStorageShim.mm:
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.h:
        * StorageProcess/StorageProcess.cpp:
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageToWebProcessConnection.h:
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        * UIProcess/Plugins/PlugInAutoStartProvider.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        * WebProcess/Network/WebSocketStream.cpp:
        * WebProcess/Network/WebSocketStream.h:
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlugInClient.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebProcess.h:

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

        REGRESSION (r220601): Crash under ProcessAssertion::markAsInvalidated()
        https://bugs.webkit.org/show_bug.cgi?id=175685
        <rdar://problem/33868623>

        Reviewed by Sam Weinig.

        After r220601, it is no longer safe to call a default-initialized WTF::Function.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::markAsInvalidated):

2017-08-17  Andreas Kling  <akling@apple.com>

        Disable CSS regions at compile time
        https://bugs.webkit.org/show_bug.cgi?id=175630

        Reviewed by Antti Koivisto.

        * Configurations/FeatureDefines.xcconfig:

2017-08-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Respect type fidelities when copying image elements to the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=175638
        <rdar://problem/26556043>

        Reviewed by Ryosuke Niwa.

        Currently, we treat the case when copying an image enclosed by a link by only writing a URL to the pasteboard.
        This patch tweaks logic in WebPage::performActionOnElement to write both an image and a link to the pasteboard
        if the hit-tested image element is enclosed by an anchor.

        * Platform/spi/ios/UIKitSPI.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::containingLinkElement):

        Tweak this helper to be more restrictive when finding an enclosing 'link' -- only return an element if isLink()
        is true, and it is an HTMLAnchorElement. Currently, the isLink() also matches HTMLLinkElements, but this isn't
        the intention here.

        (WebKit::WebPage::performActionOnElement):

2017-08-17  Jacobo Aragunde Pérez  <jaragunde@igalia.com>

        [WPE][GTK] Ensure proper casting of data in gvariants
        https://bugs.webkit.org/show_bug.cgi?id=175667

        Reviewed by Michael Catanzaro.

        g_variant_builder_add requires data to have the correct width for their types, using
        casting if necessary. Corrected a call where a single precision float was being put
        into a double precision parameter without a cast.

        * UIProcess/API/glib/WebKitWebViewSessionState.cpp:
        (encodeFrameState):

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

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

        Reviewed by Antti Koivisto.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::Download):
        * NetworkProcess/Downloads/Download.h:
        (WebKit::Download::Download):
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        (WebKit::DownloadManager::resumeDownload):
        * NetworkProcess/Downloads/DownloadManager.h:
        (WebKit::DownloadManager::startDownload):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::createSocketStream):
        (WebKit::storageSession):
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::deleteCookie):
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::fetchDiskCacheEntries):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::downloadRequest):
        (WebKit::NetworkProcess::resumeDownload):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::create):
        (WebKit::NetworkSession::defaultSession):
        (WebKit::NetworkSession::NetworkSession):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::sessionID const):
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::create):
        (WebKit::NetworkSocketStream::NetworkSocketStream):
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::configurationForSessionID):
        (WebKit::NetworkSessionCocoa::create):
        (WebKit::NetworkSessionCocoa::defaultSession):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::NetworkSessionSoup):
        * NetworkProcess/soup/NetworkSessionSoup.h:
        * Scripts/webkit/messages.py:
        (forward_declarations_and_headers.templates): Deleted.
        (class_template_headers.template): Deleted.
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::initialize):
        * Shared/SessionTracker.cpp:
        (WebKit::staticSessionMap):
        (WebKit::SessionTracker::networkSession):
        (WebKit::SessionTracker::setSession):
        (WebKit::SessionTracker::destroySession):
        * Shared/SessionTracker.h:
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebPageCreationParameters.h:
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.h:
        * Shared/mac/CookieStorageShim.mm:
        (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::idbServer):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer):
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::setWebsiteDataStore):
        (API::PageConfiguration::sessionID):
        (API::PageConfiguration::setSessionID):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::defaultDataStore):
        (API::WebsiteDataStore::createLegacy):
        (API::WebsiteDataStore::WebsiteDataStore):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerGetHostnamesWithCookies):
        (WKCookieManagerDeleteCookiesForHostname):
        (WKCookieManagerDeleteAllCookies):
        (WKCookieManagerDeleteAllCookiesModifiedAfterDate):
        (WKCookieManagerSetHTTPCookieAcceptPolicy):
        (WKCookieManagerGetHTTPCookieAcceptPolicy):
        (WKCookieManagerStartObservingCookieChanges):
        (WKCookieManagerStopObservingCookieChanges):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setCookieAcceptPolicy:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (webkit_cookie_manager_set_accept_policy):
        (webkit_cookie_manager_get_accept_policy):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::fetchWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::PlugInAutoStartProvider):
        (WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
        (WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy const):
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
        (WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
        * UIProcess/Plugins/PlugInAutoStartProvider.h:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::fetchWebsiteData):
        (WebKit::StorageProcessProxy::deleteWebsiteData):
        (WebKit::StorageProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::getHostnamesWithCookies):
        (WebKit::WebCookieManagerProxy::deleteCookiesForHostname):
        (WebKit::WebCookieManagerProxy::deleteAllCookies):
        (WebKit::WebCookieManagerProxy::deleteCookie):
        (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManagerProxy::setCookie):
        (WebKit::WebCookieManagerProxy::setCookies):
        (WebKit::WebCookieManagerProxy::getAllCookies):
        (WebKit::WebCookieManagerProxy::getCookies):
        (WebKit::WebCookieManagerProxy::startObservingCookieChanges):
        (WebKit::WebCookieManagerProxy::stopObservingCookieChanges):
        (WebKit::WebCookieManagerProxy::setCookieObserverCallback):
        (WebKit::WebCookieManagerProxy::registerObserver):
        (WebKit::WebCookieManagerProxy::unregisterObserver):
        (WebKit::WebCookieManagerProxy::cookiesDidChange):
        (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebCookieManagerProxy.messages.in:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::sessionID const):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::pageAddedToProcess):
        (WebKit::WebProcessPool::pageRemovedFromProcess):
        (WebKit::WebProcessPool::download):
        (WebKit::WebProcessPool::resumeDownload):
        (WebKit::WebProcessPool::addPlugInAutoStartOriginHash):
        (WebKit::WebProcessPool::plugInDidReceiveUserInteraction):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessPool.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData):
        (WebKit::WebProcessProxy::fetchWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::createNonPersistent):
        (WebKit::WebsiteDataStore::create):
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::sessionID const):
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        (WebKit::WebCookieManager::deleteCookiesForHostname):
        (WebKit::WebCookieManager::deleteAllCookies):
        (WebKit::WebCookieManager::deleteCookie):
        (WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManager::getAllCookies):
        (WebKit::WebCookieManager::getCookies):
        (WebKit::WebCookieManager::setCookie):
        (WebKit::WebCookieManager::setCookies):
        (WebKit::WebCookieManager::notifyCookiesDidChange):
        (WebKit::WebCookieManager::startObservingCookieChanges):
        (WebKit::WebCookieManager::stopObservingCookieChanges):
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Cookies/WebCookieManager.messages.in:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::create):
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/Databases/WebDatabaseProvider.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didCacheResource):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::createPingHandle):
        * WebProcess/Network/WebSocketProvider.cpp:
        (WebKit::WebSocketProvider::createSocketStreamHandle):
        * WebProcess/Network/WebSocketProvider.h:
        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::create):
        (WebKit::WebSocketStream::WebSocketStream):
        * WebProcess/Network/WebSocketStream.h:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession):
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/WebPlugInClient.cpp:
        (WebKit::WebPlugInClient::didStartFromOrigin):
        * WebProcess/WebCoreSupport/WebPlugInClient.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::startDownload):
        (WebKit::WebFrame::convertMainResourceLoadToDownload):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID):
        (WebKit::WebPage::updatePreferences):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::sessionID const):
        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::WebProcess::ensurePrivateBrowsingSession):
        (WebKit::WebProcess::destroySession):
        (WebKit::WebProcess::isPlugInAutoStartOriginHash):
        (WebKit::WebProcess::plugInDidStartFromOrigin):
        (WebKit::WebProcess::didAddPlugInAutoStartOriginHash):
        (WebKit::WebProcess::resetPlugInAutoStartOriginDefaultHashes):
        (WebKit::WebProcess::resetPlugInAutoStartOriginHashes):
        (WebKit::WebProcess::plugInDidReceiveUserInteraction):
        (WebKit::WebProcess::fetchWebsiteData):
        (WebKit::WebProcess::deleteWebsiteData):
        (WebKit::WebProcess::deleteWebsiteDataForOrigins):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-08-17  Joseph Pecoraro  <pecoraro@apple.com>

        Fix typo: setUpInectedBundleClient
        https://bugs.webkit.org/show_bug.cgi?id=175655

        Reviewed by Andreas Kling.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (setUpInjectedBundleClient):
        (-[WKProcessGroup initWithInjectedBundleURL:]):

2017-08-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add NTLM authentication enabled API
        https://bugs.webkit.org/show_bug.cgi?id=122952

        Reviewed by Michael Catanzaro.

        Add API to WebKitWebContext to enable/disable NTLM authentication.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::setNTLMAuthenticationEnabled):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_get_ntlm_authentication_enabled):
        (webkit_web_context_set_ntlm_authentication_enabled):
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitWebContext.h:
        * UIProcess/WebProcessPool.h:
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::setNTLMAuthenticationEnabled):

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

        [Apple Pay] Rename PaymentRequest to ApplePaySessionPaymentRequest
        https://bugs.webkit.org/show_bug.cgi?id=175648

        Reviewed by Tim Horton.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ContactFields>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::LineItem>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::LineItem>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::MerchantCapabilities>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::MerchantCapabilities>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ShippingMethod>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::ShippingMethod>::decode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::encode):
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest::TotalAndLineItems>::decode):
        (IPC::ArgumentCoder<PaymentRequest>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest>::decode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::ContactFields>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::ContactFields>::decode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::LineItem>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::LineItem>::decode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::MerchantCapabilities>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::MerchantCapabilities>::decode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::ShippingMethod>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::ShippingMethod>::decode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::TotalAndLineItems>::encode): Deleted.
        (IPC::ArgumentCoder<PaymentRequest::TotalAndLineItems>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
        (WebKit::WebPaymentCoordinatorProxy::didSelectShippingMethod):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (toShippingMethod):
        (WebKit::toPKContactFields):
        (WebKit::toPKAddressField):
        (WebKit::toPKPaymentSummaryItemType):
        (WebKit::toPKPaymentSummaryItem):
        (WebKit::toPKPaymentSummaryItems):
        (WebKit::toPKMerchantCapabilities):
        (WebKit::toPKShippingType):
        (WebKit::toPKShippingMethod):
        (WebKit::toPKPaymentRequest):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::showPaymentUI):
        (WebKit::WebPaymentCoordinator::didSelectShippingMethod):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/ApplePay/WebPaymentCoordinator.messages.in:

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

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

        Reviewed by Geoffrey Garen.

        Cross origin Beacon requests with a ArrayBuffer / ArrayBufferView payload should not do a CORS preflight.
        To achieve this, the following changes were made:
        1. Revert r220779 which caused us to use a non CORS-safelisted Content-Type header for such payload
        2. Teach PingLoad how to deal with "simple" cross origin requests (i.e. Don't assume we need a CORS
           preflight merely because the fetch mode is set to "cors").

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::loadRequest):
        (WebKit::PingLoad::originalRequestHeaders const):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::isAllowedRedirect const):
        (WebKit::PingLoad::makeCrossOriginAccessRequest):
        (WebKit::PingLoad::makeSimpleCrossOriginAccessRequest):
        (WebKit::PingLoad::makeCrossOriginAccessRequestWithPreflight):
        (WebKit::PingLoad::preflightSuccess):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::createPingHandle):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-08-16  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/ios and spi/win directories into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175171

        Reviewed by Antti Koivisto.

        * UIProcess/Cocoa/NavigationState.mm:
        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-08-16  Miguel Gomez  <magomez@igalia.com>

        [GTK] Crash of WebProcess with on-demand AC
        https://bugs.webkit.org/show_bug.cgi?id=171161

        Reviewed by Carlos Garcia Campos.

        Set the viewOverlayRootLayer to the previous layerTreeHost if it exists. This avoids a
        crash when reusing the previous layerTreeHost, because it would keep a reference to an
        already destroyed viewOverlayRootLayer.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::attachViewOverlayGraphicsLayer):

2017-08-16  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Simplify CoordinatedGraphicsScene state updates
        https://bugs.webkit.org/show_bug.cgi?id=175528
        <rdar://problem/33876795>

        Reviewed by Carlos Garcia Campos.

        Hold the information about state updates in ThreadedCompositor, in the
        m_attributes struct. This way we don't need to store the updates in
        functors and accumulate them in the CoordinatedGraphicsScene class, but
        instead just apply any pending state update or atlas removal before the
        scene is rendered.

        This removes the need to update the CoordinatedGraphicsScene object from
        the main thread with data that ultimately has to be handled on the
        composition thread. Similarly, when updating CoordinatedGraphicsScene, we
        only need to synchronize on the m_attributes lock object once in order to
        retrieve the scene update information, instead of having each functor do
        that repeatedly.

        Outside of CoordinatedGraphicsScene and ThreadedCompositor classes, the
        CompositingCoordinator class now passes the atlases-to-remove Vector by
        a const lvalue reference down to ThreadedCompositor, and then manually
        clears the Vector. Before the Vector was passed as an rvalue reference,
        depending on the ThreadedCompositor code to clear out the original Vector
        object by moving its resources into the functor object. This doesn't occur
        anymore because the Vector object is now appended to another Vector.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::applyStateChanges):
        (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
        (WebKit::CoordinatedGraphicsScene::detach):
        (WebKit::CoordinatedGraphicsScene::setActive):
        (WebKit::CoordinatedGraphicsScene::syncRemoteContent): Deleted.
        (WebKit::CoordinatedGraphicsScene::appendUpdate): Deleted.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree):
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::releaseUpdateAtlases):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::flushPendingLayerChanges):
        (WebKit::CompositingCoordinator::releaseAtlases):
        (WebKit::CompositingCoordinator::clearUpdateAtlases):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::releaseUpdateAtlases):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:

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

        [Payment Request] Add an ENABLE flag and an experimental feature preference
        https://bugs.webkit.org/show_bug.cgi?id=175622

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetPaymentRequestEnabled):
        (WKPreferencesGetPaymentRequestEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] WebKitAutomationSession should set session client to nullptr on dispose
        https://bugs.webkit.org/show_bug.cgi?id=175564

        Reviewed by Carlos Alberto Lopez Perez.

        WebAutomationSession expects its client to be nullptr in the destructor.

        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        (webkitAutomationSessionDispose):

2017-08-15  Tim Horton  <timothy_horton@apple.com>

        WKSnapshotConfiguration is missing from the WebKit umbrella header
        https://bugs.webkit.org/show_bug.cgi?id=175614
        <rdar://problem/33812691>

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WebKit.h:
        Add WKSnapshotConfiguration, which is a public header.

2017-08-15  Simon Fraser  <simon.fraser@apple.com>

        Allow WebCore logging channels to be set from the UI process
        https://bugs.webkit.org/show_bug.cgi?id=175608

        Reviewed by Tim Horton.

        The UI process can now read the "WebCoreLogging" default, and pass it to the web process
        via WebProcessCreationParameters, where WebProcess::platformInitializeWebProcess() uses
        it to set up WebCore logging channels. Note that these will override channels read from
        the web process user defaults domain (but those are hard to set anyway).

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

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

        [PAL] Move Sleep classes into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175456

        Reviewed by Ryosuke Niwa.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:

2017-08-15  Youenn Fablet  <youenn@apple.com>

        [Cache API] Adding generic support for CacheStorage and Cache methods
        https://bugs.webkit.org/show_bug.cgi?id=175455

        Reviewed by Chris Dumez.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageProvider.h: Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::cacheStorageProvider):

2017-08-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r220700.

        Broke debug bot

        Reverted changeset:

        "[CoordGraphics] Simplify CoordinatedGraphicsScene state
        updates"
        https://bugs.webkit.org/show_bug.cgi?id=175528
        http://trac.webkit.org/changeset/220700

2017-08-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: timeout when JavaScript alert is shown in onload handler
        https://bugs.webkit.org/show_bug.cgi?id=175315
        <rdar://problem/33788294>

        Reviewed by Brian Burg.

        When a JavaScript alert is shown in an onload handler, the alert prevents the load from finishing in case of
        normal page load strategy, so navigation commands or any other command for which we wait for navigation to
        complete end up timing out. There are two selenium tests covering this that are currently timing out:
        testShouldHandleAlertOnPageLoad and testShouldHandleAlertOnPageLoadUsingGet. The spec says that in case of page
        load timeout we should only fail with timeout error when there isn't an active alert dialog. If the next command
        expects an alert it will just work, otherwise it will fail with UnexpectedAlertOpen error when trying to handle
        user prompts.

        9 Navigation.
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-wait-for-navigation-to-complete

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::waitForNavigationToComplete): Do not wait for the timeout when the page is
        loading and there's an active alert in case of normal page load strategy.
        (WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout): Respond with timeout unless
        the page is showing a JavaScript dialog.
        (WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout): Ditto.
        (WebKit::WebAutomationSession::loadTimerFired): Use respondToPendingPageNavigationCallbacksWithTimeout() and
        respondToPendingFrameNavigationCallbacksWithTimeout().
        (WebKit::WebAutomationSession::willShowJavaScriptDialog): The page is about to show a JavaScript dialog, so
        we wait until the next run loop iteration to give time for the client to show the dialog, then check if page is
        loading and the dialog is still present. If that's the case we finish all normal strategy pending navigations.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptAlert): If controlled by automation, notify the session.
        (WebKit::WebPageProxy::runJavaScriptConfirm): Ditto.
        (WebKit::WebPageProxy::runJavaScriptPrompt): Ditto.
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): Ditto.

2017-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle click events on option elements
        https://bugs.webkit.org/show_bug.cgi?id=174710
        <rdar://problem/33459305>

        Reviewed by Brian Burg.

        Add selectOptionElement method to automation to select an option element according to the WebDriver
        specification.

        14.1 Element Click.
        https://w3c.github.io/webdriver/webdriver-spec.html#element-click

        * UIProcess/Automation/Automation.json: Add selectOptionElement method and ElementNotSelectable error.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::selectOptionElement):Send SelectOptionElement message to the web process.
        (WebKit::WebAutomationSession::didSelectOptionElement): Notify the driver.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.messages.in: Add DidSelectOptionElement message.
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::elementContainer): Helper to get the container of an element according to the spec.
        (WebKit::WebAutomationSessionProxy::computeElementLayout): Use the container element to scroll the view and
        compute the in-view center point.
        (WebKit::WebAutomationSessionProxy::selectOptionElement): Use HTMLSelectElement::optionSelectedByUser().
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in: Add SelectOptionElement message.

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove Proximity Events and related code
        https://bugs.webkit.org/show_bug.cgi?id=175545

        Reviewed by Daniel Bates.

        No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
        and other related code.

        * CMakeLists.txt:
        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebCoreSupport/WebDeviceProximityClient.cpp: Removed.
        * WebProcess/WebCoreSupport/WebDeviceProximityClient.h: Removed.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE(REQUEST_AUTOCOMPLETE) code, which was disabled everywhere
        https://bugs.webkit.org/show_bug.cgi?id=175504

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::didRequestAutocomplete): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE_VIEW_MODE_CSS_MEDIA and related code
        https://bugs.webkit.org/show_bug.cgi?id=175557

        Reviewed by Jon Lee.

        No port cares about the ENABLE(VIEW_MODE_CSS_MEDIA) feature, so remove it.

        * Configurations/FeatureDefines.xcconfig:

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

        [Apple Pay] Add support for phonetic contact names
        https://bugs.webkit.org/show_bug.cgi?id=175537
        <rdar://problem/32002644>

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: Soft-linked PKContactFieldPhoneticName.
        (WebKit::toPKContactFields): Added code to append PKContactFieldPhoneticName to result if
        contactFields.phoneticName is true.
        (WebKit::toNSError): Specified PKContactFieldPhoneticName as the contact field for
        PaymentError::ContactField::PhoneticName.

2017-08-14  Tim Horton  <timothy_horton@apple.com>

        Only create directory and sandbox extension handle for storage directories if they are set
        https://bugs.webkit.org/show_bug.cgi?id=175522

        Reviewed by Brady Eidson.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        If using a non-persistent WebsiteDataStore, all the storage directories
        are unset, but we still try to create them and make sandbox extensions
        for them. This has no effect except a ton of noisy logging, but that
        is reason enough to stop.

        This is similar to r216053, but for more directories.

2017-08-14  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Simplify CoordinatedGraphicsScene state updates
        https://bugs.webkit.org/show_bug.cgi?id=175528

        Reviewed by Carlos Garcia Campos.

        Hold the information about state updates in ThreadedCompositor, in the
        m_attributes struct. This way we don't need to store the updates in
        functors and accumulate them in the CoordinatedGraphicsScene class, but
        instead just apply any pending state update or atlas removal before the
        scene is rendered.

        This removes the need to update the CoordinatedGraphicsScene object from
        the main thread with data that ultimately has to be handled on the
        composition thread. Similarly, when updating CoordinatedGraphicsScene, we
        only need to synchronize on the m_attributes lock object once in order to
        retrieve the scene update information, instead of having each functor do
        that repeatedly.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::applyStateChanges):
        (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
        (WebKit::CoordinatedGraphicsScene::detach):
        (WebKit::CoordinatedGraphicsScene::setActive):
        (WebKit::CoordinatedGraphicsScene::syncRemoteContent): Deleted.
        (WebKit::CoordinatedGraphicsScene::appendUpdate): Deleted.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree):
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::releaseUpdateAtlases):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

2017-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Avoid emitting WebKitFaviconDatabase::favicon-changed multiple times while setting an icon
        https://bugs.webkit.org/show_bug.cgi?id=175531

        Reviewed by Michael Catanzaro.

        When webkitFaviconDatabaseSetIconForPageURL() is called, both setIconURLForPageURL() and setIconDataForIconURL()
        might notify the client, which ends up emitting the WebKitFaviconDatabase::favicon-changed signal and calling
        webkitFaviconDatabaseSetIconURLForPageURL(). Both things are already done by
        webkitFaviconDatabaseSetIconForPageURL() itself, so we can just ignore the client notification while setting a
        new icon.

        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (webkitFaviconDatabaseSetIconURLForPageURL): Return early if isSettingIcon is true.
        (webkitFaviconDatabaseSetIconForPageURL): Set isSettingIcon to true for the scope.

2017-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Crash in IconDatabase::IconRecord::setImageData()
        https://bugs.webkit.org/show_bug.cgi?id=175527

        Reviewed by Žan Doberšek.

        The problem is that when setImageData() is called from IconDatabase::readFromDatabase() the shared buffer might
        be nullptr, because getImageDataForIconURLFromSQLDatabase() returns nullptr if the icon data is not in the database.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::IconRecord::setImageData): Return early if passed in buffer is nullptr.

2017-08-14  Zan Dobersek  <zdobersek@igalia.com>

        [ThreadedCompositor] Improve composition and update state handling
        https://bugs.webkit.org/show_bug.cgi?id=172448

        Reviewed by Carlos Garcia Campos.

        In the ThreadedCompositor and related classes, we now track composition
        and scene update states separately. This enables properly piping in the
        DisplayRefreshMonitor object, leveraging it for both display refresh
        notifications and signalling to the client that the scene update is
        completed.

        In CompositingRunLoop, two separate states are now used, one for
        compositing and the other for scene update. Access to both should be done
        while the related Lock object is held. The pending update state is also
        tracked in order to schedule any required updates as soon as the current
        state update is completed.

        In ThreadedCompositor, the information about client notification and
        update completion coordination is now also kept under a Lock object,
        moving away from atomics. DisplayRefreshMonitor can now utilize just
        two methods in order to either schedule an update or report that update
        as finished.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::CompositingRunLoop):
        (WebKit::CompositingRunLoop::scheduleUpdate):
        (WebKit::CompositingRunLoop::stopUpdates):
        (WebKit::CompositingRunLoop::compositionCompleted):
        (WebKit::CompositingRunLoop::updateCompleted):
        (WebKit::CompositingRunLoop::updateTimerFired):
        (WebKit::CompositingRunLoop::isActive): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        (WebKit::CompositingRunLoop::stateLock):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::m_displayRefreshMonitor):
        (WebKit::ThreadedCompositor::sceneUpdateFinished):
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::requestDisplayRefreshMonitorUpdate):
        (WebKit::ThreadedCompositor::handleDisplayRefreshMonitorUpdate):
        (WebKit::ThreadedCompositor::renderNextFrameIfNeeded): Deleted.
        (WebKit::ThreadedCompositor::completeCoordinatedUpdateIfNeeded): Deleted.
        (WebKit::ThreadedCompositor::coordinateUpdateCompletionWithClient): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::requestRefreshCallback):
        (WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):

2017-08-13  Manuel Rego Casasnovas  <rego@igalia.com>

        Composition underline color is always black
        https://bugs.webkit.org/show_bug.cgi?id=174675

        Reviewed by Ryosuke Niwa.

        This patch uses the current color of the text instead of black
        for the composition underline marker.
        This makes it visible in the case we have a black/dark background.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::extractUnderlines): If NSUnderlineColorAttributeName
        is not present use text color for composition underline.
        (WebKit::WebViewImpl::setMarkedText): Use text color
        for composition underline in the plain text case.
        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::handleKeyboardEventWithCompositionResults):
        Use text color for composition underline.
        (WebKit::InputMethodFilter::updatePreedit): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setCompositionForTesting): Ditto.

2017-08-13  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Implement WebCore::standardUserAgent()
        https://bugs.webkit.org/show_bug.cgi?id=175507

        Reviewed by Carlos Alberto Lopez Perez.

        Implement missing User-Agent handling for the WPE port by sharing the code with the GTK+ port.

        * UIProcess/API/glib/WebKitSettings.cpp: Remove preprocessor conditionals for the WPE port.
        (webkit_settings_set_user_agent):
        (webkit_settings_set_user_agent_with_application_details):
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::standardUserAgent): Remove hardcoded value and make use of WebCore::standardUserAgent().

2017-08-11  Ryosuke Niwa  <rniwa@webkit.org>

        Replace DATA_TRANSFER_ITEMS by a runtime flag and add a stub implementation
        https://bugs.webkit.org/show_bug.cgi?id=175474
        <rdar://problem/33844628>

        Reviewed by Wenson Hsieh.

        Replaced the build flag by a runtime flag and disabled the feature by default.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetDataTransferItemsEnabled): Added to be used by WebKitTestRunner.
        (WKPreferencesGetDataTransferItemsEnabled): Ditto.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

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

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        * UIProcess/WebResourceLoadStatisticsStore.h:
        Update the default value for the updateCookiePartitioningForDomainsHandler parameter to be an 
        empty lambda, rather than default initialization, which leads to a null WTF::Function. This allows
        us to remove support for calling null WTF::Function. No change in behavior.

2017-08-11  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Build failure with Clang 4.0.1: no matching conversion for functional-style cast from 'pointer' (aka 'unsigned short *') to 'WTF::String'
        https://bugs.webkit.org/show_bug.cgi?id=175477

        Reviewed by Žan Doberšek.

        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::singleCharacterStringForKeyEvent): Cast to UChar* to make
        compiler choose the correct WTF::String constructor.

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

        [Soup] Cannot access HTTPS sites using a HTTP proxy that requires authentication
        https://bugs.webkit.org/show_bug.cgi?id=175378

        Reviewed by Sergio Villar Senin.

        In case of HTTPS resource with a proxy, libsoup uses a tunnel internally, that uses its own SoupMessage during
        the proxy authentication. We were ignoring authentication requests for other messages.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::authenticateCallback): Only return early if the message does't match and it's not
        HTTPS resource over a proxy.
        (WebKit::NetworkDataTaskSoup::authenticate): Use the soup message from the authentication challenge.
        (WebKit::NetworkDataTaskSoup::continueAuthenticate): Ditto.

2017-08-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Soup] Do not spawn the network process to setup cookie persistent storage
        https://bugs.webkit.org/show_bug.cgi?id=175424

        Reviewed by Sergio Villar Senin.

        The persistent storage configuration is saved and passed to network process as creation parameters, so we don't
        need to spawn the network process to configure it, when it's created eventually it will use the configuration.

        * UIProcess/soup/WebCookieManagerProxySoup.cpp:
        (WebKit::WebCookieManagerProxy::setCookiePersistentStorage): Use sendToNetworkingProcess() instead of
        endToNetworkingProcessRelaunchingIfNecessary().

2017-08-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Assertion failure in TimerBase inside WebCore::IconRecord::setImageData
        https://bugs.webkit.org/show_bug.cgi?id=173866
        <rdar://problem/33122050>

        Reviewed by Michael Catanzaro.

        IconDatabase creates and destroys IconRecord objects in both database and main thread. If the IconRecord has a
        valid icon, its Image could be created in one thread and destroyed in another, something that is not expected to
        happen, because Image has a Timer member. Since we have all the data and we are decoding it right after creating
        the Image, we don't really need to keep the Image object around, we could simply take a reference of the encoded
        data and the decoded native image to be returned by synchronousIconForPageURL().

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::IconRecord::image): Return NativeImagePtr now.
        (WebKit::IconDatabase::IconRecord::setImageData): Create a BitmapImage to decode it and keep a reference to the
        encoded data and decoded native image.
        (WebKit::IconDatabase::IconRecord::snapshot const): Use m_imageData to get the encoded data.
        (WebKit::IconDatabase::synchronousIconForPageURL): Return the native image and whether the icon is known or not.
        (WebKit::IconDatabase::IconRecord::loadImageFromResource): Deleted.
        * UIProcess/API/glib/IconDatabase.h:
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (getIconSurfaceSynchronously): Use new API.

2017-08-10  Dan Bernstein  <mitz@apple.com>

        Restored svn:ignore values that went missing when the project got renamed.

        * WebKit.xcodeproj: Added property svn:ignore.

2017-08-10  Brady Eidson  <beidson@apple.com>

        Rename the source files for the WTF persistent coders.
        https://bugs.webkit.org/show_bug.cgi?id=175441

        Reviewed by Tim Horton.

        * NetworkProcess/cache/NetworkCacheCoders.h:
        * NetworkProcess/cache/NetworkCacheKey.cpp:
        * NetworkProcess/cache/NetworkCacheKey.h:
        * UIProcess/API/APIContentRuleListStore.cpp:

2017-08-10  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Increase grandfathering time to 7 days
        https://bugs.webkit.org/show_bug.cgi?id=175414
        <rdar://problem/33818046>

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-08-10  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add significant figures to telemetry calls
        https://bugs.webkit.org/show_bug.cgi?id=175442
        <rdar://problem/33834834>

        Reviewed by Brent Fulgham.

        With this change, logged values are allowed to have 3 significant figures
        as opposed to today's 0 which is wrong.

        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::submitTopList):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):

2017-08-10  Mark Lam  <mark.lam@apple.com>

        Apply the UNLIKELY macro to some unlikely things.
        https://bugs.webkit.org/show_bug.cgi?id=175440
        <rdar://problem/33834767>

        Reviewed by Yusuke Suzuki.

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

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

        Turn on support for Beacon API by default in STP
        https://bugs.webkit.org/show_bug.cgi?id=175445
        <rdar://problem/33836379>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferencesDefinitions.h:

2017-08-10  Ross Kirsling  <ross.kirsling@sony.com>

        Fix iOS simulator build after change "[WTF] Move TextStream into WTF"
        https://bugs.webkit.org/show_bug.cgi?id=175211

        Reviewed by Myles C. Maxfield.

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

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

        [Beacon] Do connect-src CSP check on redirects as well
        https://bugs.webkit.org/show_bug.cgi?id=175410
        <rdar://problem/33815470>

        Reviewed by Youenn Fablet.

        Pass CSP Response headers to the NetworkProcess via NetworkResourceLoadParameters
        when doing a PingLoad. This allows PingLoad to do CSP checks (in particular
        connect-src ones) in case the ping load gets redirected. Those checks need to be
        done on the NetworkProcess side at this point because there is no guarantee the
        WebContent process is still around.

        To do the CSP checks, PingLoad lazily reconstructs a ContentSecurityPolicy object
        from the CSP response headers.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::contentSecurityPolicy):
        * NetworkProcess/PingLoad.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::createPingHandle):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-08-10  Brian Burg  <bburg@apple.com>

        WKPreferences should conform to NSCopying
        https://bugs.webkit.org/show_bug.cgi?id=175303
        <rdar://problem/33764939>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        Add conformance in the private header, as there is not consensus that this
        needs to be API.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences copyWithZone:]):
        Copy the wrapped WebPreferences instance and return its wrapper.

2017-08-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r220515) [GTK][CMake] Build with ENABLE_GEOLOCATION fails on Debian Jessie
        https://bugs.webkit.org/show_bug.cgi?id=175426

        Reviewed by Carlos Alberto Lopez Perez.

        * PlatformGTK.cmake:

2017-08-10  Brady Eidson  <beidson@apple.com>

        Add ServiceWorkerJob.
        https://bugs.webkit.org/show_bug.cgi?id=175241

        Reviewed by Tim Horton.

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

        * WebProcess/Storage/WebServiceWorkerProvider.cpp: Added.
        (WebKit::WebServiceWorkerProvider::singleton):
        (WebKit::WebServiceWorkerProvider::WebServiceWorkerProvider):
        (WebKit::WebServiceWorkerProvider::scheduleJob):
        * WebProcess/Storage/WebServiceWorkerProvider.h: Added.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

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

        Remove some unused lambda captures so that WebKit builds with -Wunused-lambda-capture
        https://bugs.webkit.org/show_bug.cgi?id=175436
        <rdar://problem/33667497>

        Reviewed by Simon Fraser.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):

2017-08-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove ENABLE_GAMEPAD_DEPRECATED
        https://bugs.webkit.org/show_bug.cgi?id=175361

        Reviewed by Carlos Garcia Campos.

        * Configurations/FeatureDefines.xcconfig:

2017-08-10  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Don't use --whole-archive linking flags for the WebKit2 target libraries
        https://bugs.webkit.org/show_bug.cgi?id=175416

        Reviewed by Carlos Garcia Campos.

        * PlatformGTK.cmake: Drop the ADD_WHOLE_ARCHIVE_TO_LIBRARIES instruction
        for the WebKit2 target. This unnecessarily bundles complete archive
        files both into the main .so library as well as single executables that
        are linked against the WebKit2 target.

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

        Disable Beacon API on WK1 DRT and WK2 when not using NETWORK_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=175401

        Reviewed by Brady Eidson.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetBeaconAPIEnabled):
        (WKPreferencesGetBeaconAPIEnabled):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        * config.h:

2017-08-09  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/cocoa and spi/cg directories into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175175

        Reviewed by Myles C. Maxfield.

        * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
        * NetworkProcess/Downloads/mac/DownloadMac.mm:
        * Platform/cocoa/SharedMemoryCocoa.cpp:
        * Platform/mac/LayerHostingContext.mm:
        * Shared/Cocoa/DataDetectionResult.mm:
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        * Shared/cf/CookieStorageUtilsCF.mm:
        * Shared/ios/InteractionInformationAtPosition.mm:
        * Shared/mac/HangDetectionDisablerMac.mm:
        * Shared/mac/RemoteLayerBackingStore.mm:
        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/mac/WKView.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        * UIProcess/mac/ServicesController.mm:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * UIProcess/mac/ViewGestureControllerMac.mm:
        * UIProcess/mac/ViewSnapshotStore.mm:
        * UIProcess/mac/WKViewLayoutStrategy.mm:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-08-09  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Increase grandfathering time to 3 days
        https://bugs.webkit.org/show_bug.cgi?id=175414
        <rdar://problem/33818046>

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-08-09  Jeremy Jones  <jeremyj@apple.com>

        Invalidate PlaybackSessionManager in same fashion as VideoFullscreenManager.
        https://bugs.webkit.org/show_bug.cgi?id=175399
        rdar://problem/33663344

        Reviewed by Eric Carlson.

        Invalidate PlaybackSessionManager when WebPage is destructed.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::~WebPage):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionManager::~PlaybackSessionManager):
        (WebKit::PlaybackSessionManager::invalidate):

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

        [WTF] Move TextStream into WTF
        https://bugs.webkit.org/show_bug.cgi?id=175211

        Reviewed by Myles C. Maxfield.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/VisibleContentRectUpdateInfo.h:
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (WebKit::operator<<):
        * UIProcess/ios/WebPageProxyIOS.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:

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

        Part 3 of: Rename DatabaseProcess to StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=175034

        Reviewed by Brady Eidson.

        We tried renaming com.apple.WebKit.Databases to com.apple.WebKit.Storage in r219986, but
        this prevented trunk WebKit from running on iOS 11 devices. This is because launchd keeps a
        codesigned cache of XPC services, and refuses to launch services that aren't in the cache.

        It's not possibe for us to rebuild the cache with the new service name (only Apple's
        production build system can do this), and disabling the cache or opting WebKit's XPC
        services out of the cache might have a negative impact on our performance testing.

        For now we'll retain the name "com.apple.WebKit.Databases" on iOS 11 devices to work around
        this issue. If we find a way to allow the new service to run without impacting performance,
        we can revert this change.

        We will rename the service to "com.apple.WebKit.Storage" on macOS and iOS Simulator, and in
        a follow-up patch we'll use the new service name on post-iOS 11 device builds.

        * Configurations/BaseTarget.xcconfig: Defined WK_STORAGE_SERVICE_PRODUCT_NAME to be
        com.apple.WebKit.Databases by default, and overrode it to com.apple.WebKit.Storage on macOS
        and iOS Simulator.
        * Configurations/StorageService.xcconfig: Changed PRODUCT_NAME to $(WK_STORAGE_SERVICE_PRODUCT_NAME).
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName): Changed to return "com.apple.WebKit.Storage" on macOS and
        iOS Simulator platforms.
        * WebKit.xcodeproj/project.pbxproj: Updated the "Copy XPC services for engineering builds"
        build phase to use WK_STORAGE_SERVICE_PRODUCT_NAME.

2017-08-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r220466, r220477, and r220487.
        https://bugs.webkit.org/show_bug.cgi?id=175411

        This change broke existing API tests and follow up fixes did
        not resolve all the issues. (Requested by ryanhaddad on
        #webkit).

        Reverted changesets:

        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220466

        "WTF::Function does not allow for reference / non-default
        constructible return types"
        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220477

        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220487

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

        [Beacon][NetworkSession] Support CORS-preflighting on redirects
        https://bugs.webkit.org/show_bug.cgi?id=175386
        <rdar://problem/33801370>

        Reviewed by Youenn Fablet.

        Add support to Beacon for doing CORS-preflighting upon redirect to a different
        domain.

        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::~PingLoad):
        (WebKit::PingLoad::loadRequest):
        (WebKit::PingLoad::securityOrigin const):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::didReceiveResponseNetworkSession):
        (WebKit::PingLoad::needsCORSPreflight const):
        (WebKit::PingLoad::doCORSPreflight):
        * NetworkProcess/PingLoad.h:

2017-08-09  Jeremy Jones  <jeremyj@apple.com>

        Use MPAVRoutingController instead of deprecated versions.
        https://bugs.webkit.org/show_bug.cgi?id=175063
        rdar://problem/33301230

        Reviewed by Tim Horton.

        Remove dependence on deprecated classes MPAVRoutingSheet and MPAudioVideoRoutingPopoverController.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker dealloc]):
        (-[WKAirPlayRoutePicker show:fromRect:]):
        (-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): Deleted.
        (-[WKAirPlayRoutePicker _presentAirPlayPopoverAnimated:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker _windowWillRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _windowDidRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _dismissAirPlayRoutePickerIPad]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPad:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): Deleted.

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

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        * UIProcess/WebResourceLoadStatisticsStore.h:
        Update the default value for the updateCookiePartitioningForDomainsHandler parameter to be an 
        empty lambda, rather than default initialization, which leads to a null WTF::Function. This allows
        us to remove support for calling null WTF::Function. No change in behavior.

2017-08-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] ENABLE_DRAG_SUPPORT should be turned off for iOS 10 and enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=175392
        <rdar://problem/33783207>

        Reviewed by Tim Horton and Megan Gardner.

        Tweak FeatureDefines to enable drag and drop by default, and disable only on unsupported platforms (i.e. iOS 10).

        * Configurations/FeatureDefines.xcconfig:

2017-08-09  Brady Eidson  <beidson@apple.com>

        ServiceWorker experimental feature should not be on by default (definitely not ready).
        https://bugs.webkit.org/show_bug.cgi?id=175389

        Rubberstamped by Andy Estes.

        * Shared/WebPreferencesDefinitions.h: false, not DEFAULT_EXPERIMENTAL_FEATURES_ENABLED

2017-08-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220457.

        This change introduced API test failures.

        Reverted changeset:

        "WTF::Function does not allow for reference / non-default
        constructible return types"
        https://bugs.webkit.org/show_bug.cgi?id=175244
        http://trac.webkit.org/changeset/220457

2017-08-09  Daniel Bates  <dabates@apple.com>

        REGRESSION (r219013): OAuth flows are broken when redirecting back to application after authentication
        https://bugs.webkit.org/show_bug.cgi?id=175247
        <rdar://problem/33679804>

        Reviewed by Brady Eidson.

        Add SPI WKNavigationAction._isRedirect to query whether the navigation was in response to receiving
        a redirect response. The majority of the WebKit change is plumbing this knowledge through to connect
        it with the SPI.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        Encode and decode the boolean NavigationActionData::isRedirect.
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction _isRedirect]): Added.
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Set NavigationActionData::isRedirect
        depending on whether the navigation is in response to receiving a redirect response.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        WTF::Function does not allow for reference / non-default constructible return types
        https://bugs.webkit.org/show_bug.cgi?id=175244

        Reviewed by Chris Dumez.

        * UIProcess/WebResourceLoadStatisticsStore.h:
        Update the default value for the updateCookiePartitioningForDomainsHandler parameter to be an 
        empty lambda, rather than default initialization, which leads to a null WTF::Function. This allows
        us to remove support for calling null WTF::Function. No change in behavior.

2017-08-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, rolling out r220393.

        This patch regresses the performance of WebPage::editorState.

        Reverted changeset:

        "[iOS WK2] WKWebView schedules nonstop layout after pressing
        cmb+b,i,u inside a contenteditable div"
        https://bugs.webkit.org/show_bug.cgi?id=175116
        http://trac.webkit.org/changeset/220393

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

        [Beacon] Add support for CORS-preflighting for WK2 / NETWORK_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=175264
        <rdar://problem/33547793>

        Reviewed by Youenn Fablet.

        Implement CORS-preflighting for beacons with a payload that has a non
        safelisted MIME type, as per:
        - https://w3c.github.io/beacon/#privacy
        - https://www.w3.org/TR/beacon/#sec-processing-model

        CORS-preflighting is completely handled on Network Process side because
        a beacon request can outlive its page and therefore its WebContent
        process. This requires us to pass a little more information to the
        Network process, in particular the source origin and the corsMode.

        The current implementation does not currently deal with CORS preflights
        needed upon a redirect. This will be added in a follow-up.

        * CMakeLists.txt:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp: Added.
        (WebKit::NetworkCORSPreflightChecker::NetworkCORSPreflightChecker):
        (WebKit::NetworkCORSPreflightChecker::~NetworkCORSPreflightChecker):
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        (WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
        (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession):
        (WebKit::NetworkCORSPreflightChecker::didReceiveData):
        (WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
        (WebKit::NetworkCORSPreflightChecker::didSendData):
        (WebKit::NetworkCORSPreflightChecker::wasBlocked):
        (WebKit::NetworkCORSPreflightChecker::cannotShowURL):
        * NetworkProcess/NetworkCORSPreflightChecker.h: Added.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/PingLoad.cpp: Added.
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::~PingLoad):
        (WebKit::PingLoad::startNetworkLoad):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::didReceiveChallenge):
        (WebKit::PingLoad::didReceiveResponseNetworkSession):
        (WebKit::PingLoad::didReceiveData):
        (WebKit::PingLoad::didCompleteWithError):
        (WebKit::PingLoad::didSendData):
        (WebKit::PingLoad::wasBlocked):
        (WebKit::PingLoad::cannotShowURL):
        (WebKit::PingLoad::timeoutTimerFired):
        (WebKit::PingLoad::needsCORSPreflight const):
        (WebKit::PingLoad::doCORSPreflight):
        * NetworkProcess/PingLoad.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::createPingHandle):
        * WebProcess/Network/WebLoaderStrategy.h:

2017-08-08  Megan Gardner  <megan_gardner@apple.com>

        Remove old and unused pointIsInAssistedNode definition
        https://bugs.webkit.org/show_bug.cgi?id=175335

        Stage removal here to allow removal from UIKit.
        Replaced by textInteractionGesture:shouldBeginAtPoint:

        Reviewed by Tim Horton.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView pointIsInAssistedNode:]): Deleted.

2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix Ubuntu LTS build
        https://bugs.webkit.org/show_bug.cgi?id=174490

        * UIProcess/glib/RemoteInspectorClient.cpp:
        (WebKit::RemoteInspectorClient::RemoteInspectorClient):

2017-08-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the Mac debug build after r220418.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::prepareForMoveToWindow):

2017-08-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Mac WK2] WebViewImpl should hold a weak pointer to its WKWebView or WKView
        https://bugs.webkit.org/show_bug.cgi?id=175302
        <rdar://problem/33762116>

        Reviewed by Tim Horton.

        Refactor WebViewImpl's m_view from a raw pointer to a WeakObjCPtr to ensure that it is automatically cleared out
        when the WKWebView or WKView are destroyed, and also changes several places where we implicitly block capture
        the WebViewImpl to only capture a WeakPtr to the WebViewImpl. Most of the changes here are boilerplate
        adjustments for how m_view is now a weak pointer.

        Test: WKWebViewMacEditingTests.DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView.

        * Shared/mac/WeakObjCPtr.h:
        (WebKit::WeakObjCPtr::operator ValueType * const):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateTouchBar):
        (WebKit::WebViewImpl::updateMediaTouchBar):
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::~WebViewImpl):
        (WebKit::WebViewImpl::window):
        (WebKit::WebViewImpl::resignFirstResponder):
        (WebKit::WebViewImpl::isFocused const):
        (WebKit::WebViewImpl::renewGState):
        (WebKit::WebViewImpl::setFrameAndScrollBy):
        (WebKit::WebViewImpl::updateWindowAndViewFrames):
        (WebKit::WebViewImpl::updateLayer):
        (WebKit::WebViewImpl::printOperationWithPrintInfo):
        (WebKit::WebViewImpl::updateContentInsetsIfAutomatic):
        (WebKit::WebViewImpl::setLayoutMode):
        (WebKit::WebViewImpl::intrinsicDeviceScaleFactor const):
        (WebKit::WebViewImpl::windowDidBecomeKey):
        (WebKit::WebViewImpl::windowDidResignKey):
        (WebKit::WebViewImpl::windowDidChangeScreen):
        (WebKit::WebViewImpl::mightBeginDragWhileInactive):
        (WebKit::WebViewImpl::acceptsFirstMouse):
        (WebKit::WebViewImpl::shouldDelayWindowOrderingForEvent):
        (WebKit::WebViewImpl::windowResizeMouseLocationIsInVisibleScrollerThumb):
        (WebKit::WebViewImpl::viewWillMoveToWindow):
        (WebKit::WebViewImpl::viewDidMoveToWindow):
        (WebKit::WebViewImpl::viewDidChangeBackingProperties):
        (WebKit::WebViewImpl::hitTest):
        (WebKit::WebViewImpl::postFakeMouseMovedEventForFlagsChangedEvent):
        (WebKit::WebViewImpl::colorSpace):
        (WebKit::WebViewImpl::prepareForMoveToWindow):
        (WebKit::WebViewImpl::notifyInputContextAboutDiscardedComposition):
        (WebKit::WebViewImpl::pressureChangeWithEvent):
        (WebKit::WebViewImpl::fullScreenWindowController):
        (WebKit::WebViewImpl::executeSavedCommandBySelector):
        (WebKit::WebViewImpl::validRequestorForSendAndReturnTypes):
        (WebKit::WebViewImpl::handleRequestedCandidates):
        (WebKit::WebViewImpl::preferencesDidChange):
        (WebKit::WebViewImpl::setTextIndicator):
        (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
        (WebKit::WebViewImpl::accessibilityRegisterUIProcessTokens):
        (WebKit::WebViewImpl::sendToolTipMouseExited):
        (WebKit::WebViewImpl::sendToolTipMouseEntered):
        (WebKit::WebViewImpl::toolTipChanged):
        (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer):
        (WebKit::WebViewImpl::updateThumbnailViewLayer):
        (WebKit::WebViewImpl::setInspectorAttachmentView):
        (WebKit::WebViewImpl::inspectorAttachmentView):
        (WebKit::WebViewImpl::draggedImage):
        (WebKit::WebViewImpl::draggingEntered):
        (WebKit::WebViewImpl::draggingUpdated):
        (WebKit::WebViewImpl::draggingExited):
        (WebKit::WebViewImpl::performDragOperation):
        (WebKit::WebViewImpl::hitTestForDragTypes):
        (WebKit::WebViewImpl::startWindowDrag):
        (WebKit::WebViewImpl::dragImageForView):
        (WebKit::WebViewImpl::setPromisedDataForImage):
        (WebKit::WebViewImpl::setPromisedDataForAttachment):
        (WebKit::WebViewImpl::takeViewSnapshot):
        (WebKit::WebViewImpl::scrollWheel):
        (WebKit::WebViewImpl::magnifyWithEvent):
        (WebKit::WebViewImpl::rotateWithEvent):
        (WebKit::WebViewImpl::doneWithKeyEvent):
        (WebKit::WebViewImpl::interpretKeyEvent):
        (WebKit::WebViewImpl::firstRectForCharacterRange):
        (WebKit::WebViewImpl::characterIndexForPoint):
        (WebKit::WebViewImpl::performKeyEquivalent):
        (WebKit::WebViewImpl::keyUp):
        (WebKit::WebViewImpl::keyDown):
        (WebKit::WebViewImpl::mouseMoved):
        (WebKit::WebViewImpl::windowIsFrontWindowUnderMouse):
        (WebKit::WebViewImpl::userInterfaceLayoutDirection):

2017-08-08  Filip Pizlo  <fpizlo@apple.com>

        Baseline JIT should do caging
        https://bugs.webkit.org/show_bug.cgi?id=175037

        Reviewed by Mark Lam.
        
        Use a better API to disable disabling the primitive gigacage.

        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::primitiveGigacageDisabled): Deleted.

2017-08-08  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Clear web processes' state on history removal
        https://bugs.webkit.org/show_bug.cgi?id=175271
        <rdar://problem/33756560>

        Reviewed by Chris Dumez.

        https://bugs.webkit.org/show_bug.cgi?id=175090 introduced state
        in the web process and that state needs to be cleared when the
        UI process' statistics are cleared as part of history removal.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::clearResourceLoadStatistics):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::clearResourceLoadStatistics):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        [WPE] Implement WebsiteDataStore::defaultApplicationCacheDirectory() and friends
        https://bugs.webkit.org/show_bug.cgi?id=175322

        Reviewed by Carlos Garcia Campos.

        This makes WPE use the same implementation as the GTK+ port, with a preprocessor switch to choose the name of
        the base directory inside the user XDG cache directory.

        * PlatformGTK.cmake: Add APIWebsiteDataStoreGLib.cpp to the build sources and remove APIWebsiteDataStoreGtk.cpp.
        * PlatformWPE.cmake: Add APIWebsiteDataStoreGLib.cpp to the built sources.
        * UIProcess/API/APIWebsiteDataStore.cpp: Remove now dead code.
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: Renamed from Source/WebKit/UIProcess/API/gtk/APIWebsiteDataStoreGtk.cpp.
        (API::WebsiteDataStore::defaultApplicationCacheDirectory):
        (API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory):
        (API::WebsiteDataStore::defaultLocalStorageDirectory):
        (API::WebsiteDataStore::defaultMediaKeysStorageDirectory):
        (API::WebsiteDataStore::defaultWebSQLDatabaseDirectory):
        (API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory):

2017-08-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220368.

        This change caused WK1 tests to exit early with crashes.

        Reverted changeset:

        "Baseline JIT should do caging"
        https://bugs.webkit.org/show_bug.cgi?id=175037
        http://trac.webkit.org/changeset/220368

2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Properly test if compiler supports compiler flags
        https://bugs.webkit.org/show_bug.cgi?id=174490

        Reviewed by Konstantin Tokarev.

        * CMakeLists.txt:
        * PlatformGTK.cmake:

2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: setUserInputForCurrentJavaScriptPrompt should fail if current dialog is not a prompt
        https://bugs.webkit.org/show_bug.cgi?id=175261

        Reviewed by Brian Burg.

        According to the spec, send alert text command should fail if the current dialog is not a prompt. This patch
        adds JavaScriptDialogType enum to API::AutomationSessionClient and a new virtual method to ask the client about
        the type of the current dialog. WebAutomationSession::setUserInputForCurrentJavaScriptPrompt() uses the new
        client method to check the type of the current dialog and fail in case it's not a prompt. Cocoa needs an
        implementation, for now it always returns Prompt as the type to keep compatibility.

        18.4 Send Alert Text.
        https://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text

        This fixes selenium test testSettingTheValueOfAnAlertThrows.

        * UIProcess/API/APIAutomationSessionClient.h:
        (API::AutomationSessionClient::typeOfCurrentJavaScriptDialogOnPage):
        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewGetCurrentScriptDialogType):
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt):
        * UIProcess/Cocoa/AutomationSessionClient.h:
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::typeOfCurrentJavaScriptDialogOnPage):

2017-08-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] WKWebView schedules nonstop layout after pressing cmb+b,i,u inside a contenteditable div
        https://bugs.webkit.org/show_bug.cgi?id=175116
        <rdar://problem/28279301>

        Reviewed by Darin Adler and Ryosuke Niwa.

        Refactors WebPage::editorState to only use the StyleProperties derived from EditingStyle, instead of inserting
        and removing a temporary node to figure out the style. Also adds hooks to notify the UI delegate of EditorState
        changes.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (nsTextAlignment):
        (dictionaryRepresentationForEditorState):
        (-[WKWebView _didChangeEditorState]):

        Alerts the private UI delegate of UI-side EditorState updates.

        (-[WKWebView _web_editorStateDidChange]):
        (-[WKWebView _executeEditCommand:argument:completion:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _web_editorStateDidChange]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::selectionDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::executeEditCommand):

        Change executeEditCommand(name, callback) to executeEditCommand(name, argument, callback) and lift out of iOS
        platform code and into WebPage.cpp.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView executeEditCommandWithCallback:]):
        (-[WKContentView _selectionChanged]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::executeEditCommand): Deleted.

        Move the iOS-specific implementation of executeEditCommand that invokes a callback when the web process responds
        out of WebPageProxyIOS, and into cross-platform WebPageProxy code. Additionally, add a parameter for the edit
        command's argument.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):

        Use EditingStyle::styleAtSelectionStart instead of Editor::styleForSelectionStart when computing an EditorState.
        Tweak bold, italic and underline to use EditingStyle TriStates.

        (WebKit::shouldEnsureEditorStateUpdateAfterExecutingCommand):
        (WebKit::WebPage::executeEditCommandWithCallback):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::executeEditCommandWithCallback): Deleted.

2017-08-08  Zan Dobersek  <zdobersek@igalia.com>

        [TexMap] Don't expose GraphicsContext3D object
        https://bugs.webkit.org/show_bug.cgi?id=175310

        Reviewed by Carlos Garcia Campos.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
        Stop using GraphicsContext3D directly and instead use the
        TextureMapper::clearColor() method to achieve the same result.

2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Implement JavaScript dialog methods of API::AutomationSessionClient
        https://bugs.webkit.org/show_bug.cgi?id=175259

        Reviewed by Michael Catanzaro.

        Move the default implementation of WebKitScriptDialog from WebKitWebView platform specific files to their own
        files. Implement all JavaScript dialog methods of API::AutomationSessionClient in WebKitAutomationSession. For
        now it only works when the user doesn't override WebKitWebView::script-dialog signal and default implementation
        is used.

        * PlatformGTK.cmake: Add new files to compilation.
        * PlatformWPE.cmake: Ditto.
        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        (webkitAutomationSessionCreate): Pass the WebKitWebContext to the constructor and keep a pointer to it in session.
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewRunJavaScriptAlert): Set the currently script dialog for the scope of the function.
        (webkitWebViewRunJavaScriptConfirm): Ditto.
        (webkitWebViewRunJavaScriptPrompt): Ditto.
        (webkitWebViewRunJavaScriptBeforeUnloadConfirm): Ditto.
        (webkitWebViewIsShowingScriptDialog): Ask current dialog if there's one.
        (webkitWebViewGetCurrentScriptDialogMessage): Ditto.
        (webkitWebViewSetCurrentScriptDialogUserInput): Ditto.
        (webkitWebViewAcceptCurrentScriptDialog): Ditto.
        (webkitWebViewDismissCurrentScriptDialog): Ditto.
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp: Added.
        (webkitWebViewCreateJavaScriptDialog): Moved from WebKitWebViewGtk.cpp.
        (webkitScriptDialogRun): Run the dialog, this code is moved from WebKitWebViewGtk.cpp.
        (webkitScriptDialogIsRunning): Return true if the script dialog has a native dialog running.
        (webkitScriptDialogAccept): Send Ok or Close response to the native dialog depending on the dialog type.
        (webkitScriptDialogDismiss): Send Close response to the native dialog.
        (webkitScriptDialogSetUserInput): Set the given text on the prompt dialog entry.
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewScriptDialog): Simply call webkitScriptDialogRun() now.
        * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp: Copied from Source/WebKit/UIProcess/API/glib/WebKitAutomationSessionPrivate.h.
        (webkitScriptDialogRun):
        (webkitScriptDialogIsRunning):
        (webkitScriptDialogAccept):
        (webkitScriptDialogDismiss):
        (webkitScriptDialogSetUserInput):

2017-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Preview Canvas path when viewing a recording
        https://bugs.webkit.org/show_bug.cgi?id=174967

        Reviewed by Brian Burg.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetInspectorAdditionsEnabled):
        (WKPreferencesGetInspectorAdditionsEnabled):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        Add plumbing for new InspectorAdditions runtime flag.

        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::WebInspectorUI):
        Enable InspectorAdditions by default in the WebInspector page.

2017-08-07  Filip Pizlo  <fpizlo@apple.com>

        Baseline JIT should do caging
        https://bugs.webkit.org/show_bug.cgi?id=175037

        Reviewed by Mark Lam.
        
        Use a better API to disable disabling the primitive gigacage.

        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::primitiveGigacageDisabled): Deleted.

2017-08-06  Filip Pizlo  <fpizlo@apple.com>

        Primitive auxiliaries and JSValue auxiliaries should have separate gigacages
        https://bugs.webkit.org/show_bug.cgi?id=174919

        Reviewed by Keith Miller.
        
        The disable callback is all about the primitive gigacage.

        * WebProcess/WebProcess.cpp:
        (WebKit::primitiveGigacageDisabled):
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::gigacageDisabled): Deleted.

2017-08-07  Brian Burg  <bburg@apple.com>

        Remove CANVAS_PATH compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175207

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2017-08-07  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE][CMake] Only pass pkg-config CFLAGS from (E)GL when not using libepoxy.
        https://bugs.webkit.org/show_bug.cgi?id=175125

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt: When using libepoxy avoid passing the CFLAGS from (E)GL,
        and instead pass the libepoxy ones.

2017-08-07  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] CFLAGS from pkg-config for (E)GL are not passed to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=175125

        Unreviewed follow-up fix after r220326.

        * CMakeLists.txt: Move the block appending to WebKit2_LIBRARIES
        below where the list itself is created.

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to provide browser information required by automation
        https://bugs.webkit.org/show_bug.cgi?id=175130

        Reviewed by Michael Catanzaro.

        When a new automation session is started, the web driver receives some required capabilities from the client,
        like browser name and version. The session should be rejected if those required capabilities don't match with
        the actual browser that is launched. We don't know that information in WebKit, so we need to add API so that
        users can provide it when a new session request is made. This patch adds boxed object WebKitApplicationInfo that
        can be used to set the application name and version. This object can be set to a WebKitAutomationSession when
        WebKitWebContext::automation-started signal is emitted.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * UIProcess/API/glib/WebKitApplicationInfo.cpp: Added.
        (webkit_application_info_new):
        (webkit_application_info_ref):
        (webkit_application_info_unref):
        (webkit_application_info_set_name):
        (webkit_application_info_get_name):
        (webkit_application_info_set_version):
        (webkit_application_info_get_version):
        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        (webkitAutomationSessionDispose):
        (webkit_automation_session_class_init):
        (webkitAutomationSessionGetBrowserName):
        (webkitAutomationSessionGetBrowserVersion):
        (webkit_automation_session_set_application_info):
        (webkit_automation_session_get_application_info):
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/API/gtk/WebKitApplicationInfo.h: Added.
        * UIProcess/API/gtk/WebKitAutomationSession.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/wpe/WebKitApplicationInfo.h: Added.
        * UIProcess/API/wpe/WebKitAutomationSession.h:
        * UIProcess/API/wpe/webkit.h:

2017-08-06  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] CFLAGS from pkg-config for (E)GL are not passed to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=175125

        Reviewed by Michael Catanzaro.

        Some platforms define cflags on the (E)GL pkg-config files that we
        need to pass to the build system when including the (E)GL headers.
        And we are already doing this when building WebCore (after r184954).

        But now we need to do this also on WebKit (former WebKit2) because
        we include (E)GL headers (and make use of them) on the UIProcess.

        * CMakeLists.txt:

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Implement page load strategy
        https://bugs.webkit.org/show_bug.cgi?id=175183

        Reviewed by Brian Burg.

        Split pending navigation maps into normal and eager, and use one or the other depending on the received page
        load strategy. We need to keep different maps for every page load strategy because every command could use a
        different strategy.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::waitForNavigationToComplete): Extract page load strategy from parameter and pass
        it to waitForNavigationToCompleteOnPage() and waitForNavigationToCompleteOnFrame().
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage): Return early if page load strategy is
        none. Otherwise at the pening callback to the normal or eager map depeding on the page load straegy.
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame): Ditto.
        (WebKit::respondToPendingNavigationCallbacksWithTimeout): Helper to send pening navigation callback in case of
        timeout failure.
        (WebKit::WebAutomationSession::loadTimerFired): Call finishPendingNavigationsWithTimeoutFailure() with all the maps.
        (WebKit::WebAutomationSession::navigateBrowsingContext): Extract page load strategy from parameter and pass it
        to waitForNavigationToCompleteOnPage().
        (WebKit::WebAutomationSession::goBackInBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::goForwardInBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::reloadBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::navigationOccurredForFrame): Use the normal maps.
        (WebKit::WebAutomationSession::documentLoadedForFrame): Stop timeout timer and dispatch eager pending navigations.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): Notify the automation session.

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: use in-view center point for clicks instead of bounding box center point
        https://bugs.webkit.org/show_bug.cgi?id=174863

        Reviewed by Simon Fraser.

        Change computeElementLayout to also return the in-view center point and whether it's obscured by another
        element.

        * UIProcess/Automation/Automation.json: Add optional inViewCenterPoint to the result and isObscured.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::didComputeElementLayout): Handle inViewCenterPoint and isObscured.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.messages.in:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::elementInViewClientCenterPoint): Get the client in-view center point and whether it's obscured
        according to the spec.
        (WebKit::WebAutomationSessionProxy::computeElementLayout): Pass inViewCenterPoint and isObscured to
        DidComputeElementLayout message.

2017-08-05  Brian Burg  <bburg@apple.com>

        Web Automation: files selected for upload should be matched against 'accept' attribute values case-insensitively
        https://bugs.webkit.org/show_bug.cgi?id=175191
        <rdar://problem/33725790>

        Reviewed by Carlos Garcia Campos.

        Values of the "accept" attribute are to be compared in a case-insensitive manner, per
        https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)

        Except for converting MIME types and extensions to lowercase, most of these changes
        were lost in a rebase prior to landing the patch.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::fileCanBeAcceptedForUpload): Fix some issues:
        - Handle a file ending in a period.
        - Handle MIME type inference failing.
        - Convert extensions and MIMEs to lower case, per specification.

        (WebKit::WebAutomationSession::handleRunOpenPanel):
        - Strip the leading period from file extensions.
        - These range converters crash unless the API::Array is retained by a local variable.

2017-08-04  Youenn Fablet  <youenn@apple.com>

        [Cache API] Add Cache and CacheStorage IDL definitions
        https://bugs.webkit.org/show_bug.cgi?id=175201

        Reviewed by Brady Eidson.

        * Shared/WebPreferencesDefinitions.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-04  Brian Burg  <bburg@apple.com>

        Expose WKPreferences SPI for toggling mock capture devices prompt
        https://bugs.webkit.org/show_bug.cgi?id=175227
        <rdar://problem/33734528>

        Reviewed by Youenn Fablet.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _mockCaptureDevicesPromptEnabled]):
        (-[WKPreferences _setMockCaptureDevicesPromptEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-08-04  Brian Burg  <bburg@apple.com>

        Fix typo in WKPreferences _iceCandidateFiltertingEnabled property
        https://bugs.webkit.org/show_bug.cgi?id=175224

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _iceCandidateFilteringEnabled]):
        (-[WKPreferences _iceCandidateFiltertingEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

        [Beacon] Update sendBeacon to use the CachedResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=175192
        <rdar://problem/33725923>

        Reviewed by Youenn Fablet.

        Deal with new Beacon CachedResource type.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):

2017-08-04  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Report user interaction immediately, but only when needed
        https://bugs.webkit.org/show_bug.cgi?id=175090
        <rdar://problem/33685546>

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleClearResourceLoadStatistics):
            Test infrastructure. Ends up calling
            WebCore::ResourceLoadObserver::clearState().
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:

2017-08-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220288.

        This broke multiple builds.

        Reverted changeset:

        "Use MPAVRoutingController instead of deprecated versions."
        https://bugs.webkit.org/show_bug.cgi?id=175063
        http://trac.webkit.org/changeset/220288

2017-08-04  Jeremy Jones  <jeremyj@apple.com>

        Use MPAVRoutingController instead of deprecated versions.
        https://bugs.webkit.org/show_bug.cgi?id=175063
        rdar://problem/33301230

        Reviewed by Tim Horton.

        Remove dependence on deprecated classes MPAVRoutingSheet and MPAudioVideoRoutingPopoverController.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker dealloc]):
        (-[WKAirPlayRoutePicker show:fromRect:]):
        (-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): Deleted.
        (-[WKAirPlayRoutePicker _presentAirPlayPopoverAnimated:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker _windowWillRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _windowDidRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _dismissAirPlayRoutePickerIPad]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPad:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): Deleted.

2017-08-04  Tim Horton  <timothy_horton@apple.com>

        viewport-fit changes during animated resize can cause layout size to get stuck
        https://bugs.webkit.org/show_bug.cgi?id=175169
        <rdar://problem/33684697>

        Reviewed by Simon Fraser.

        If we get a commit that changes viewport-fit state while an animated
        resize is underway, and that change causes the client to push a new
        minimumLayoutSizeOverride, the new size will be lost forever, and we
        will get stuck laying out at the wrong size.

        This is because we unconditionally apply avoidsUnsafeArea for every commit,
        while most other changes that come in from a commit are ignored if we're
        inside animated resize. To fix, also ignore avoidsUnsafeArea changes during
        animated resize, by moving the code that keeps track of it into WKWebView
        like all of the rest, and read it out of the commit in didCommitLayerTree
        *after* the animated-resize early-return.

        Also, fix the associated layout tests by adding a missing assignment
        in _computedContentInset, which was broken in r220138.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _setHasCustomContentView:loadedMIMEType:]):
        (-[WKWebView _processDidExit]):
        (-[WKWebView _didCommitLayerTree:]):
        (-[WKWebView _setAvoidsUnsafeArea:]):
        (-[WKWebView _safeAreaShouldAffectObscuredInsets]):
        (-[WKWebView _didChangeAvoidsUnsafeArea:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::setAvoidsUnsafeArea): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::avoidsUnsafeArea const): Deleted.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didChangeAvoidsUnsafeArea): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didCommitLayerTree):

2017-08-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220271.

        Rolling out due to Layout Test failing on iOS Simulator.

        Reverted changeset:

        "Remove STREAMS_API compilation guard"
        https://bugs.webkit.org/show_bug.cgi?id=175165
        http://trac.webkit.org/changeset/220271

2017-08-03  Sam Weinig  <sam@webkit.org>

        [Cleanup] Remove ScriptGlobalObject
        https://bugs.webkit.org/show_bug.cgi?id=175173

        Reviewed by Darin Adler.

        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::windowObjectCleared):
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::windowObjectCleared):
        Remove call to ScriptGlobalObject::set and use addSelfToGlobalObjectInWorld instead.

2017-08-03  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: copy JavaScript atoms to WebKit.framework private headers
        https://bugs.webkit.org/show_bug.cgi?id=175088
        <rdar://problem/33685818>

        Reviewed by Joseph Pecoraro.

        * WebKit.xcodeproj/project.pbxproj:
        - Add a Copy Files phase to WebKit.framework.
        - Copy atoms to the atoms/ directory in WebKit.framework/PrivateHeaders/.

2017-08-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r220268.

        This change caused assertion failures on macOS and iOS Debug
        WK2.

        Reverted changeset:

        "Resource Load Statistics: Report user interaction
        immediately, but only when needed"
        https://bugs.webkit.org/show_bug.cgi?id=175090
        http://trac.webkit.org/changeset/220268

2017-08-04  Andreas Kling  <akling@apple.com>

        NetworkLoad should always invoke its redirect completion handler
        https://bugs.webkit.org/show_bug.cgi?id=175179
        <rdar://problem/33464999>

        Reviewed by Chris Dumez.

        Make sure the redirect completion handler is always invoked,
        just like we already did for the response completion handler.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::~NetworkLoad):

2017-08-04  Youenn Fablet  <youenn@apple.com>

        Remove STREAMS_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175165

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2017-08-04  Brady Eidson  <beidson@apple.com>

        Enable ServiceWorkers at runtime for WebKitTestRunner.
        https://bugs.webkit.org/show_bug.cgi?id=175174

        Reviewed by Youenn Fablet.

        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::enableAllExperimentalFeatures):

2017-08-04  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Report user interaction immediately, but only when needed
        https://bugs.webkit.org/show_bug.cgi?id=175090
        <rdar://problem/33685546>

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleClearResourceLoadStatistics):
            Test infrastructure. Ends up calling
            WebCore::ResourceLoadObserver::clearState().
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:

2017-08-04  Antti Koivisto  <antti@apple.com>

        Network cache should be usable as non-singleton
        https://bugs.webkit.org/show_bug.cgi?id=175139

        Reviewed by Sam Weinig.

        We might want to use it as a non-singleton in the future (for example as a backend for the cache API).

        This patch makes NetworkCache::Cache and NetworkCache::Storage refcounted objects and takes
        care to ref them properly during asynchronous operations.

        The patch doesn't actually create any non-shared instances, it just adds the capability.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::storeDerivedDataToCache):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::fetchDiskCacheEntries):
        (WebKit::clearDiskCacheEntries):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::cache):

            Move the shared cache instance to the network process singleton.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):

            Include shared cache as a reffed member for non-ephemeral instances.

        (WebKit::NetworkResourceLoader::canUseCache const):
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::abort):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::open):

            Open now returns null if it fails.
            Add RegisterNotify option to set up notify trigger for the shared instance.

        (WebKit::NetworkCache::Cache::Cache):
        (WebKit::NetworkCache::Cache::~Cache):

            Add destructor.

        (WebKit::NetworkCache::dumpFileChanged):
        (WebKit::NetworkCache::Cache::setCapacity):
        (WebKit::NetworkCache::Cache::retrieve):

            Protect the cache instance during asynchronous operations.

        (WebKit::NetworkCache::Cache::store):
        (WebKit::NetworkCache::Cache::storeRedirect):
        (WebKit::NetworkCache::Cache::remove):
        (WebKit::NetworkCache::Cache::traverse):
        (WebKit::NetworkCache::Cache::dumpContentsToFile):
        (WebKit::NetworkCache::Cache::clear):
        (WebKit::NetworkCache::Cache::recordsPath const):
        (WebKit::NetworkCache::Cache::retrieveData):
        (WebKit::NetworkCache::Cache::storeData):
        (WebKit::NetworkCache::singleton): Deleted.
        (WebKit::NetworkCache::Cache::initialize): Deleted.
        * NetworkProcess/cache/NetworkCache.h:
        (WebKit::NetworkCache::Cache::canUseSharedMemoryForBodyData const):
        (WebKit::NetworkCache::Cache::isEnabled const): Deleted.

            Remove isEnabled() state as a cache object now always represents an enabled cache.

        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord const):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
        (WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
        (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::initialize):
        (WebKit::NetworkCache::Statistics::shrinkIfNeeded):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::ReadOperation::ReadOperation):
        (WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
        (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation):

            Operations now ref the storage. They are already deleted in the main thread so
            proper destruction is taken care of.

        (WebKit::NetworkCache::Storage::open):
        (WebKit::NetworkCache::Storage::~Storage):
        (WebKit::NetworkCache::Storage::synchronize):

            This and other asynchronous methods now protect the Storage instance.

        (WebKit::NetworkCache::Storage::remove):
        (WebKit::NetworkCache::Storage::retrieve):
        (WebKit::NetworkCache::Storage::store):
        (WebKit::NetworkCache::Storage::traverse):
        (WebKit::NetworkCache::Storage::clear):
        (WebKit::NetworkCache::Storage::shrink):
        (WebKit::NetworkCache::Storage::deleteOldVersions):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::clearDiskCache):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::NetworkProcess::clearDiskCache):

2017-08-04  Frederic Wang  <fwang@igalia.com>

        ScrollingTreeOverflowScrollingNodeIOS uses the wrong fixed position rectangle
        https://bugs.webkit.org/show_bug.cgi?id=175135

        Reviewed by Simon Fraser.

        This patch modifies ScrollingTreeOverflowScrollingNodeIOS::updateChildNodesAfterScroll so
        that it uses the fixed position rectangle relative of the first frame ancestor instead of
        the one of the main frame. This makes it consistent with ScrollingTreeFrameScrollingNodeIOS
        and RenderLayerCompositor. This fixes some flickering issues on iOS.

        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateChildNodesAfterScroll): Use the fixed
        position rect of a non-main frame if there is one.

2017-08-03  Brian Burg  <bburg@apple.com>

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

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/Network/WebSocketProvider.cpp:
        * WebProcess/Network/WebSocketProvider.h:

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

        Multiple Layout tests from web-platform-tests/beacon/ are timing out.
        https://bugs.webkit.org/show_bug.cgi?id=175076
        <rdar://problem/33704752>

        Reviewed by Alexey Proskuryakov.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::completeAuthenticationChallenge):
        In the NETWORK_SESSION code path, we did not ask the client about server trust evaluation
        when the clientCredentialPolicy was CannotAskClientForCredentials. This is because the
        same delegate is used for HTTP authentication and server trust evaluation in the
        NETWORK_SESSION code path. To align both code paths, we now ask the client about server
        trust evaluation even if the policy CannotAskClientForCredentials. This allows WKTR
        to trust certificates for localhost / 127.0.0.1 unconditionally and consistently.

2017-08-03  Yoshiaki Jitsukawa  <jitsu@rd.scei.sony.co.jp>

        [PAL] Move spi/cf directory into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175057

        Reviewed by Antti Koivisto.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkLoadMac.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * Shared/cf/CookieStorageUtilsCF.h:
        * Shared/mac/ChildProcessMac.mm:
        * Shared/mac/CookieStorageShim.mm:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * UIProcess/mac/WebCookieManagerProxyMac.mm:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-08-03  Youenn Fablet  <youenn@apple.com>

        Remove FETCH_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175154

        Reviewed by Chris Dumez.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220209.

        This caused internal build failures.

        Reverted changeset:

        "Use MPAVRoutingController instead of deprecated versions."
        https://bugs.webkit.org/show_bug.cgi?id=175063
        http://trac.webkit.org/changeset/220209

2017-08-02  Brian Burg  <bburg@apple.com>

        Web Automation: consider file extensions in the "accept" attribute when deciding if a file can be uploaded
        https://bugs.webkit.org/show_bug.cgi?id=175081

        Reviewed by Joseph Pecoraro.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::fileCanBeAcceptedForUpload):
        (WebKit::WebAutomationSession::handleRunOpenPanel):
        In cases where a file has an extension, try to match it against the
        accepted extensions list. Give up if there's no extension. Otherwise,
        proceed as normal to infer a MIME type based on the extension.
        In cases where extension-less files are inside hidden folders, the MIME
        inference will fail as well.

2017-08-03  Brady Eidson  <beidson@apple.com>

        Add SW IDLs and stub out basic functionality.
        https://bugs.webkit.org/show_bug.cgi?id=175115

        Reviewed by Chris Dumez.

        * Configurations/FeatureDefines.xcconfig:
        
        * Shared/WebPreferencesDefinitions.h:
        
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::enableAllExperimentalFeatures): Explicitly skip SW for now.
          The ramifications to layouttests are complicated, and we'd like to follow up in a
          separate patch.
        
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-03  Yoshiaki Jitsukawa  <jitsu@rd.scei.sony.co.jp>

        [WebKit] Sort Xcode project file
        https://bugs.webkit.org/show_bug.cgi?id=175122

        Reviewed by Antti Koivisto.

        * WebKit.xcodeproj/project.pbxproj:

2017-08-02  Sam Weinig  <sam@webkit.org>

        [WebIDL] Convert MutationCallback to be a normal generated callback
        https://bugs.webkit.org/show_bug.cgi?id=174140

        Reviewed by Darin Adler.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilterPrivate.h:
        Pass, now necessary, Document to NativeNodeFilter constructor.

2017-08-03  Jeremy Jones  <jeremyj@apple.com>

        Use MPAVRoutingController instead of deprecated versions.
        https://bugs.webkit.org/show_bug.cgi?id=175063
        rdar://problem/33301230

        Reviewed by Tim Horton.

        Remove dependence on deprecated classes MPAVRoutingSheet and MPAudioVideoRoutingPopoverController.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker dealloc]):
        (-[WKAirPlayRoutePicker show:fromRect:]):
        (-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): Deleted.
        (-[WKAirPlayRoutePicker _presentAirPlayPopoverAnimated:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker _windowWillRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _windowDidRotate:]): Deleted.
        (-[WKAirPlayRoutePicker _dismissAirPlayRoutePickerIPad]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPad:fromRect:]): Deleted.
        (-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): Deleted.

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

        Improve our support for referrer policies
        https://bugs.webkit.org/show_bug.cgi?id=175069
        <rdar://problem/33677313>

        Reviewed by Darin Adler.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResource):
        (WebKit::WebLoaderStrategy::schedulePluginStreamLoad):

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

        NetworkResourceLoader::setDefersLoading() may cause start() to be called multiple times
        https://bugs.webkit.org/show_bug.cgi?id=175109
        <rdar://problem/33363169>

        Reviewed by Brady Eidson.

        If NetworkResourceLoader::setDefersLoading(false) is called by the client while m_networkLoad is null
        then we call NetworkResourceLoader::start() to start the load. This is needed in the case where
        a NetworkResourceLoader is constructed in deferred mode so that the load can later be started via
        setDefersLoading(). However, it is possible for setDefersLoading(false) to be called when start()
        has already been called, which causes start() to be called multiple times and leads to an assertion
        hit in debug.

        Normally, setDefersLoading(false) returns without calling start() if m_networkLoad is not null. It
        relies on m_networkLoad being non-null to determine if start() should be called. This is bad because
        start() checks the disk cache asynchronously *before* calling startNetworkLoad() and initializing
        m_networkLoad. Therefore, if setDefersLoading(false) is called *while* we are checking the cache,
        then we will call incorrectly call start() again.

        In the case of the radar, this happens when we:
        1. Call start() and check the disk cache
        2. Retrieve a cached redirect from the cache, which causes a WillSendRequest IPC to be sent to the
           WebProcess
        3. The WebProcess calls setDefersLoading(true), sends the ContinueWillSendRequest IPC back and
           then calls setDefersLoading(false)

        The call to continueWillSendRequest() causes us to retrieve the redirected entry from the cache,
        asynchronously, which will return no entry and start a load.
        The later call to setDefersLoading(false) causes us to call start() again and we end up back to step 1.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::setDefersLoading):
        * NetworkProcess/NetworkResourceLoader.h:

2017-08-02  Andreas Kling  <akling@apple.com>

        NetworkRTCProvider::createResolver() leaks CFHost objects
        https://bugs.webkit.org/show_bug.cgi?id=175103
        <rdar://problem/33690347>

        Reviewed by Youenn Fablet.

        Add a missing adoptCF() so we don't leak the CFHost.

        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::createResolver):

2017-08-02  Jeremy Jones  <jeremyj@apple.com>

        Remove unused and obsolete setting mediaDocumentEntersFullscreenAutomatically
        https://bugs.webkit.org/show_bug.cgi?id=175080

        Reviewed by Jon Lee.

        This is obsolete because of the alternate solution in
        https://bugs.webkit.org/show_bug.cgi?id=174850

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setMediaDocumentEntersFullscreenAutomatically:]): Deleted.
        (-[WKPreferences _mediaDocumentEntersFullscreenAutomatically]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-02  Filip Pizlo  <fpizlo@apple.com>

        We should be OK with the gigacage being disabled on gmalloc
        https://bugs.webkit.org/show_bug.cgi?id=175082

        Reviewed by Michael Saboff.

        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):

2017-08-02  Brian Burg  <bburg@apple.com>

        Web Automation: files selected for upload should be checked against values of the 'accept' attribute
        https://bugs.webkit.org/show_bug.cgi?id=174803
        <rdar://problem/33514190>

        Reviewed by Carlos Garcia Campos.

        Use the parsed values of the file input element's "accept" attribute to reject
        files that don't match the specified values. This is normally done by Safari
        using NSOpenPanel, but since a real open panel isn't shown during automation,
        it needs to be done here.

        Support for limiting accepted files by file extensions will be added when the
        same is implemented in the normal code path for the C and Objective-C APIs.

        This change is covered by internal WebDriver tests that will be rewritten for the
        public Webdriver W3C test suite someday, when safaridriver runs those tests itself.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::handleRunOpenPanel):
        Since we already have the proposed files, there's no need to compute a list of
        supported extensions based on wildcard MIME types. First check the extension,
        then the inferred MIME type for the extension, and then the wildcard MIME type
        if the inferred type is not an exact match.

2017-08-02  Tim Horton  <timothy_horton@apple.com>

        WKPDFView doesn't respect safe area insets
        https://bugs.webkit.org/show_bug.cgi?id=175046
        <rdar://problem/33558386>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        Add some SPI.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setHasCustomContentView:loadedMIMEType:]):
        Drive-by fix two small custom content view issues:

        - Reset _scrollViewBackgroundColor; it is used to early-return from
        updating the background color if it hasn't changed, but if you go from a
        site with (for example) a white background, to a PDF, to another site
        with a white background, we will early-return and not reset the background
        color from the grey WKPDFView background.

        - When installing a custom content view, scroll to the origin. We miss
        the usual mechanism for scrolling to the origin when custom content views
        are installed, so do it here.

        (-[WKWebView _effectiveObscuredInsetEdgesAffectedBySafeArea]):
        Ignore _obscuredInsetEdgesAffectedBySafeArea for custom content views.
        This is fairly arbitrary, and we should find a different way to
        express different edge sets for different kinds of content (perhaps
        bake this into default viewports?), but for now this works.

        (-[WKWebView _computedContentInset]):
        Use _effectiveObscuredInsetEdgesAffectedBySafeArea instead of the ivar directly.

        (-[WKWebView _safeAreaShouldAffectObscuredInsets]):
        Force safe areas to not affect obscured insets for custom content views,
        so that it's up to every custom content view to take safe areas into
        account themselves.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        Expose _computedUnobscuredSafeAreaInset for WKPDFView's use.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_setMinimumSize:]):
        Avoid rebuilding the WKPDFView if the minimum size didn't change.

        (-[WKPDFView _offsetForPageNumberIndicator]):
        Take unobscured safe area insets into account when insetting
        the page number indicator.

        (-[WKPDFView web_computedContentInsetDidChange]):
        Watch for unobscured safe area inset changes, and apply them to the
        layout of the WKPDFView.

        (-[WKPDFView _computePageAndDocumentFrames]):
        Make it possible to only update the WKPDFView's size and position, without
        rebuilding its subviews, if the width did not change. This prevents lots
        of flashing of the child UIPDFPageViews when the unobscured safe area
        insets change dynamically.

        Take the safe area insets into account when determining what width
        to lay out to.

        (-[WKPDFView _updateDocumentFrame]):
        Take the safe area insets into account when positioning the WKPDFView
        inside the WKScrollView.

2017-08-02  John Wilander  <wilander@apple.com>

        ResourceLoadStatisticsClassifierCocoa::singletonPredictionModel() should check the return value of storagePath()
        https://bugs.webkit.org/show_bug.cgi?id=175055
        <rdar://problem/32671352>

        Reviewed by David Kilzer.

        * Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp:
        (WebKit::ResourceLoadStatisticsClassifierCocoa::singletonPredictionModel):
            Now uses dispatch_once() instead of NeverDestroyed and checks the
            return value of storagePath() before using it to load the model.

2017-08-01  Brian Burg  <bburg@apple.com>

        HTML file input elements do not support file extensions in the "accept" attribute
        https://bugs.webkit.org/show_bug.cgi?id=95698
        <rdar://problem/12231850>

        Reviewed by Darin Adler.

        Plumb accepted file extensions out to the C API.
        The Cocoa API will be improved in a later patch.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FileChooserSettings>::encode):
        (IPC::ArgumentCoder<FileChooserSettings>::decode):
        * UIProcess/API/APIOpenPanelParameters.cpp:
        (API::OpenPanelParameters::acceptFileExtensions const):
        * UIProcess/API/APIOpenPanelParameters.h:
        * UIProcess/API/C/WKOpenPanelParametersRef.cpp:
        (WKOpenPanelParametersCopyAcceptedFileExtensions):
        * UIProcess/API/C/WKOpenPanelParametersRef.h:

2017-08-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        Use LazyNeverDestroyed instead of DEFINE_GLOBAL for QualifiedName
        https://bugs.webkit.org/show_bug.cgi?id=175010
        <rdar://problem/33647818>

        Reviewed by Alex Christensen.

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::ContentRuleListStore::compileContentRuleList):
        Call QualifiedName::init().

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

        Add initial support for navigator.sendBeacon
        https://bugs.webkit.org/show_bug.cgi?id=175007
        <rdar://problem/33547728>

        Reviewed by Sam Weinig.

        Add experimental feature flag for the Beacon API, disabled by default.

        * Shared/WebPreferencesDefinitions.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-08-01  Filip Pizlo  <fpizlo@apple.com>

        Bmalloc and GC should put auxiliaries (butterflies, typed array backing stores) in a gigacage (separate multi-GB VM region)
        https://bugs.webkit.org/show_bug.cgi?id=174727

        Reviewed by Mark Lam.
        
        The WebProcess should never disable the Gigacage by allocating typed arrays outside the Gigacage. So,
        we add a callback that crashes the process.

        * WebProcess/WebProcess.cpp:
        (WebKit::gigacageDisabled):
        (WebKit::m_webSQLiteDatabaseTracker):

2017-08-01  Brian Burg  <bburg@apple.com>

        Web Automation: add event to notify service when a page's main frame window object has cleared
        https://bugs.webkit.org/show_bug.cgi?id=174987
        <rdar://problem/36602634>

        Reviewed by Carlos Garcia Campos.

        * UIProcess/Automation/Automation.json: Add new event.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::navigationOccurredForFrame):
        (WebKit::WebAutomationSession::willClosePage):
        When a WebPage navigates or closes, send the browsingContextCleared event.
        Any element handles for elements in the browsing context are no longer valid.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        Add a new hook into the active automation session so it is notified when a page closes.

2017-08-01  Brady Eidson  <beidson@apple.com>

        API test URLSchemeHandler.Exceptions is Exiting out early on macOS Debug..
        https://bugs.webkit.org/show_bug.cgi?id=175030

        Reviewed by Andy Estes.

        * UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
        (WebKit::WebURLSchemeHandlerCocoa::platformTaskCompleted): Release the API wrapped on the next
          spin of the runloop.

2017-08-01  Brady Eidson  <beidson@apple.com>

        Part 2 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174880

        Reviewed by Andy Estes.

        Rename some more variables, classes, etc. to reflect the change.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcess::grantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * Shared/ProcessExecutablePath.h:
        * Shared/gtk/ProcessExecutablePathGtk.cpp:
        (WebKit::executablePathOfStorageProcess):
        (WebKit::executablePathOfDatabaseProcess): Deleted.
        * Shared/wpe/ProcessExecutablePathWPE.cpp:
        (WebKit::executablePathOfStorageProcess):
        (WebKit::executablePathOfDatabaseProcess): Deleted.

        * StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::putOrAdd):

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::postStorageTask):
        (WebKit::StorageProcess::performNextStorageTask):
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::postDatabaseTask): Deleted.
        (WebKit::StorageProcess::performNextDatabaseTask): Deleted.
        (WebKit::StorageProcess::createDatabaseToWebProcessConnection): Deleted.
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/mac/StorageProcessMac.mm:
        (WebKit::StorageProcess::initializeProcessName):

        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetDatabaseProcessIdentifier):

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateStorageProcess]):
        (-[WKProcessPool _storageProcessIdentifier]):
        (-[WKProcessPool _terminateDatabaseProcess]): Deleted.
        (-[WKProcessPool _databaseProcessIdentifier]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):

        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        * UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp:
        (WebKit::ProcessLauncher::launchProcess):

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getLaunchOptions):
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::didClose):
        (WebKit::StorageProcessProxy::didCreateStorageToWebProcessConnection):
        (WebKit::StorageProcessProxy::didFinishLaunching):
        (WebKit::StorageProcessProxy::getDatabaseProcessConnection): Deleted.
        (WebKit::StorageProcessProxy::didCreateDatabaseToWebProcessConnection): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:

        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::storageProcessDidCrash):
        (WebKit::WebContextClient::databaseProcessDidCrash): Deleted.
        * UIProcess/WebContextClient.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::getStorageProcessConnection):
        (WebKit::WebProcessPool::storageProcessCrashed):
        (WebKit::WebProcessPool::pageAddedToProcess):
        (WebKit::WebProcessPool::storageProcessIdentifier):
        (WebKit::WebProcessPool::terminateStorageProcess):
        (WebKit::WebProcessPool::ensureDatabaseProcessAndWebsiteDataStore): Deleted.
        (WebKit::WebProcessPool::getDatabaseProcessConnection): Deleted.
        (WebKit::WebProcessPool::databaseProcessCrashed): Deleted.
        (WebKit::WebProcessPool::databaseProcessIdentifier): Deleted.
        (WebKit::WebProcessPool::terminateDatabaseProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToStorageProcessRelaunchingIfNecessary):
        (WebKit::WebProcessPool::sendToDatabaseProcessRelaunchingIfNecessary): Deleted.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection):
        (WebKit::WebProcessProxy::getDatabaseProcessConnection): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::databaseProcessParameters): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:

        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::WebToStorageProcessConnection):
        (WebKit::WebToStorageProcessConnection::~WebToStorageProcessConnection):
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::didReceiveInvalidMessage):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession):
        (WebKit::WebToDatabaseProcessConnection::WebToDatabaseProcessConnection): Deleted.
        (WebKit::WebToDatabaseProcessConnection::~WebToDatabaseProcessConnection): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didClose): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didReceiveInvalidMessage): Deleted.
        (WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::create):
        (WebKit::WebToDatabaseProcessConnection::create): Deleted.
        (WebKit::WebToDatabaseProcessConnection::connection): Deleted.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnection):
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
        (WebKit::WebProcess::webToDatabaseProcessConnectionClosed): Deleted.
        (WebKit::WebProcess::webToDatabaseProcessConnection): Deleted.
        (WebKit::WebProcess::ensureWebToDatabaseProcessConnection): Deleted.
        * WebProcess/WebProcess.h:

2017-08-01  Brady Eidson  <beidson@apple.com>

        Part 1 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174879

        Reviewed by Andy Estes.

        This patch is all about renaming source files and renaming the process itself (touching build system files, etc etc).

        Some renaming in actual code did result (Some class/struct names, method names, etc)

        Part 2 (174880) will go through and update all references in code itself from "Database" to "Storage"

        * CMakeLists.txt:
        * DerivedSources.make:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * WebKit.xcodeproj/project.pbxproj:

        * Configurations/StorageService.xcconfig: Renamed from Source/WebKit/Configurations/DatabaseService.xcconfig.
        * StorageProcess/EntryPoint/mac/XPCService/StorageService/Info.plist: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService/Info.plist.
        * StorageProcess/mac/com.apple.WebKit.Databases.sb.in: Renamed from Source/WebKit/DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in.

        * Shared/Storage/StorageProcessCreationParameters.cpp: Renamed from Source/WebKit/Shared/Databases/DatabaseProcessCreationParameters.cpp.
        * Shared/Storage/StorageProcessCreationParameters.h: Renamed from Source/WebKit/Shared/Databases/DatabaseProcessCreationParameters.h.

        * StorageProcess/EntryPoint/mac/XPCService/StorageServiceEntryPoint.mm: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm.
        * StorageProcess/EntryPoint/unix/StorageProcessMain.cpp: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/unix/DatabaseProcessMain.cpp.

        * StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h.
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in.

        * StorageProcess/StorageProcess.cpp: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.cpp.
        * StorageProcess/StorageProcess.h: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.h.
        * StorageProcess/StorageProcess.messages.in: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.messages.in.

        * StorageProcess/StorageToWebProcessConnection.cpp: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.cpp.
        * StorageProcess/StorageToWebProcessConnection.h: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.h.
        * StorageProcess/StorageToWebProcessConnection.messages.in: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.messages.in.

        * StorageProcess/gtk/StorageProcessMainGtk.cpp: Renamed from Source/WebKit/DatabaseProcess/gtk/DatabaseProcessMainGtk.cpp.
        * StorageProcess/ios/StorageProcessIOS.mm: Renamed from Source/WebKit/DatabaseProcess/ios/DatabaseProcessIOS.mm.
        * StorageProcess/mac/StorageProcessMac.mm: Renamed from Source/WebKit/DatabaseProcess/mac/DatabaseProcessMac.mm.
        * StorageProcess/unix/StorageProcessMainUnix.h: Renamed from Source/WebKit/DatabaseProcess/unix/DatabaseProcessMainUnix.h.
        * UIProcess/Network/NetworkProcessProxy.cpp:

        * UIProcess/Storage/StorageProcessProxy.cpp: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.cpp.
        * UIProcess/Storage/StorageProcessProxy.h: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.h.
        * UIProcess/Storage/StorageProcessProxy.messages.in: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.messages.in.

        * UIProcess/WebContextSupplement.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        * WebProcess/Databases/WebDatabaseProvider.cpp:

        * WebProcess/Storage/WebToStorageProcessConnection.cpp: Renamed from Source/WebKit/WebProcess/Databases/WebToDatabaseProcessConnection.cpp.
        * WebProcess/Storage/WebToStorageProcessConnection.h: Renamed from Source/WebKit/WebProcess/Databases/WebToDatabaseProcessConnection.h.

        * WebProcess/WebProcess.cpp:

2017-08-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] WebKitFS.cmake depends on options set in Option cmake files that are included later
        https://bugs.webkit.org/show_bug.cgi?id=174855

        Reviewed by Carlos Garcia Campos.

        Don't create derived sources directory here anymore.

        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:

2017-07-31  Daniel Bates  <dabates@apple.com>

        WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction() may not be able to
        determine page that initiated navigation
        https://bugs.webkit.org/show_bug.cgi?id=174531

        Remove a comment from WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction()
        about determining the originating page independently from the originating frame. There
        does not seem to be much value to fixing this. We can always revisit this issue if we
        discover a strong motivating example. See <https://bugs.webkit.org/show_bug.cgi?id=174531#c1>
        for more details.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2017-07-31  Sam Weinig  <sam@webkit.org>

        Remove unnecessary exceptions from storage code
        https://bugs.webkit.org/show_bug.cgi?id=174572

        Reviewed by Chris Dumez.

        * WebProcess/Storage/StorageAreaImpl.cpp:
        (WebKit::StorageAreaImpl::canAccessStorage): Deleted.
        * WebProcess/Storage/StorageAreaImpl.h:
        * WebProcess/Storage/StorageNamespaceImpl.cpp:
        Remove canAccessStorage. It is no longer called.

2017-07-30  Brady Eidson  <beidson@apple.com>

        Add URLSchemeHandler API tests that verify the lack of URLSchemeTask object leaks.
        https://bugs.webkit.org/show_bug.cgi?id=174958

        Reviewed by Darin Adler.

        * UIProcess/API/APIURLSchemeTask.h:

        * UIProcess/API/C/WKTestingSupport.cpp:
        (WKGetAPIURLSchemeTaskInstanceCount):
        (WKGetWebURLSchemeTaskInstanceCount):
        * UIProcess/API/C/WKTestingSupport.h:

        * UIProcess/WebURLSchemeTask.h:

        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed, build fix for GTK and WPE about StorageProcess renaming

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:

2017-07-28  Brent Fulgham  <bfulgham@apple.com>

        [Mac][WebKit2] WebKit sandbox errors while streaming Netflix
        https://bugs.webkit.org/show_bug.cgi?id=174955
        <rdar://problem/33583994>

        Reviewed by Alex Christensen.

        Wider testing with the stricter sandboxing rules identified three more IOKit properties we need to expose:
        - CEAModeID
        - CEAPixelRepetition
        - IOFBHDMIDongleROM

        * WebProcess/com.apple.WebProcess.sb.in:

2017-07-28  Commit Queue  <commit-queue@webkit.org>

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

        "broke PLT on iOS (rdar://problem/33602751)" (Requested by
        estes on #webkit).

        Reverted changeset:

        "Part 1 of: Rename DatabaseProcess to StorageProcess."
        https://bugs.webkit.org/show_bug.cgi?id=174879
        http://trac.webkit.org/changeset/219986

2017-07-28  Commit Queue  <commit-queue@webkit.org>

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

        "broke PLT on iOS (rdar://problem/33602751)" (Requested by
        estes on #webkit).

        Reverted changeset:

        "Part 2 of: Rename DatabaseProcess to StorageProcess."
        https://bugs.webkit.org/show_bug.cgi?id=174880
        http://trac.webkit.org/changeset/219990

2017-07-28  Brady Eidson  <beidson@apple.com>

        API tests that use URLSchemeHandler are failing.
        https://bugs.webkit.org/show_bug.cgi?id=174950

        Reviewed by Alex Christensen.

        Make sure that in all cases where we remove the last task from the page->task map...
        ...We also remove the map itself.

        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::stopTask):
        (WebKit::WebURLSchemeHandler::taskCompleted):
        (WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
        * UIProcess/WebURLSchemeHandler.h:

2017-07-28  Brady Eidson  <beidson@apple.com>

        WKURLSchemeTaskImpl instances are being abandoned (except if the task is stopped).
        <rdar://problem/33568276> and https://bugs.webkit.org/show_bug.cgi?id=174895

        Reviewed by Alex Christensen.

        There was a lot going on here:
        - There was an unbroken cycle between URLSchemeHandlers and URLSchemeTasks 
        - WKURLSchemeTasks were not destroying their API::URLSchemeTask implementation object
        - When a WKWebView was dealloc'ed, it was not cleaning up the related UIProcess tasks
        - If the NetworkingProcess crashed, WebProcesses were not cleaning up their tasks
          (and therefore the UIProcess tasks were also not getting cleaned up)
        - If a WebProcess crashed, the UIProcess was not cleaning up the related tasks
        
        * UIProcess/API/Cocoa/WKURLSchemeTask.mm:
        (-[WKURLSchemeTaskImpl dealloc]): Call API::~URLSchemeTask
        
        * UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
        * UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
        (WebKit::WebURLSchemeHandlerCocoa::platformTaskCompleted): Clear out the API wrapper map
          so the wrapper and implementation object can both be destroyed.
        
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close): Call stopAllURLSchemeTasks.
        (WebKit::WebPageProxy::processDidTerminate): Call stopAllURLSchemeTasks.
        (WebKit::WebPageProxy::stopAllURLSchemeTasks):
        * UIProcess/WebPageProxy.h:
        
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        (WebKit::WebURLSchemeHandler::stopAllTasksForPage):
        (WebKit::WebURLSchemeHandler::stopTask):
        (WebKit::WebURLSchemeHandler::taskCompleted):
        * UIProcess/WebURLSchemeHandler.h:
        
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::WebURLSchemeTask):
        * UIProcess/WebURLSchemeTask.h:
        (WebKit::WebURLSchemeTask::pageID): Store separate from the WebPage so messaging
          is possible even after the WebPage* has been cleared.
        
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::stopAllURLSchemeTasks):
        * WebProcess/WebPage/WebPage.h:
        
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
        (WebKit::WebURLSchemeHandlerProxy::stopAllTasks):
        (WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
        (WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
        (WebKit::WebURLSchemeHandlerProxy::removeTask):
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
        
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed): Call stopAllURLSchemeTasks 
          for each WebPage.

2017-07-28  Frederic Wang  <fwang@igalia.cpm>

        Fix typo in scrollPositionChangedViaDelegatedScrolling
        https://bugs.webkit.org/show_bug.cgi?id=174937

        Reviewed by Wenson Hsieh.

        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollViewDidScroll):

2017-07-28  Jeremy Jones  <jeremyj@apple.com>

        Remove Web prefix from WebVideoFullscreen and WebPlaybackSession classes.
        https://bugs.webkit.org/show_bug.cgi?id=174437

        Reviewed by Darin Adler.

        Remove redundant Web- prefix from classes in WebKit namespace.

        * DerivedSources.make:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h: Renamed from Source/WebKit/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h.
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in: Renamed from Source/WebKit/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in.
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: Added.
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: Renamed from Source/WebKit/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h.
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in: Renamed from Source/WebKit/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in.
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: Renamed from Source/WebKit/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm.
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: Removed.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateMediaTouchBar):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_weakPtrFactory):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::playbackSessionManager):
        (WebKit::WebPageProxy::videoFullscreenManager):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::playbackSessionManager):
        (WebKit::WebPage::videoFullscreenManager):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/cocoa/PlaybackSessionManager.h: Renamed from Source/WebKit/WebProcess/cocoa/WebPlaybackSessionManager.h.
        * WebProcess/cocoa/PlaybackSessionManager.messages.in: Renamed from Source/WebKit/WebProcess/cocoa/WebPlaybackSessionManager.messages.in.
        * WebProcess/cocoa/PlaybackSessionManager.mm: Added.
        * WebProcess/cocoa/VideoFullscreenManager.h: Renamed from Source/WebKit/WebProcess/cocoa/WebVideoFullscreenManager.h.
        (WebKit::VideoFullscreenInterfaceContext::create):
        * WebProcess/cocoa/VideoFullscreenManager.messages.in: Renamed from Source/WebKit/WebProcess/cocoa/WebVideoFullscreenManager.messages.in.
        * WebProcess/cocoa/VideoFullscreenManager.mm: Renamed from Source/WebKit/WebProcess/cocoa/WebVideoFullscreenManager.mm.
        * WebProcess/cocoa/WebPlaybackSessionManager.mm: Removed.

2017-07-27  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Re-add the StorageProcess executable target
        https://bugs.webkit.org/show_bug.cgi?id=174929

        Reviewed by Carlos Garcia Campos.

        Re-add the StorageProcess executable target that was removed in r219960.
        Back then it was still named DatabaseProcess, but the name changed in
        the following patches.

        * CMakeLists.txt:

2017-07-27  Brady Eidson  <beidson@apple.com>

        Part 2 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174880

        Reviewed by Andy Estes.

        Rename some more variables, classes, etc. to reflect the change.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcess::didgrantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcess::grantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * Shared/ProcessExecutablePath.h:
        * Shared/gtk/ProcessExecutablePathGtk.cpp:
        (WebKit::executablePathOfStorageProcess):
        (WebKit::executablePathOfDatabaseProcess): Deleted.
        * Shared/wpe/ProcessExecutablePathWPE.cpp:
        (WebKit::executablePathOfStorageProcess):
        (WebKit::executablePathOfDatabaseProcess): Deleted.

        * StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::putOrAdd):

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::postStorageTask):
        (WebKit::StorageProcess::performNextStorageTask):
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::postDatabaseTask): Deleted.
        (WebKit::StorageProcess::performNextDatabaseTask): Deleted.
        (WebKit::StorageProcess::createDatabaseToWebProcessConnection): Deleted.
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/mac/StorageProcessMac.mm:
        (WebKit::StorageProcess::initializeProcessName):

        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetDatabaseProcessIdentifier):

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateStorageProcess]):
        (-[WKProcessPool _storageProcessIdentifier]):
        (-[WKProcessPool _terminateDatabaseProcess]): Deleted.
        (-[WKProcessPool _databaseProcessIdentifier]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        * UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp:
        (WebKit::ProcessLauncher::launchProcess):

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getLaunchOptions):
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::didClose):
        (WebKit::StorageProcessProxy::didCreateStorageToWebProcessConnection):
        (WebKit::StorageProcessProxy::didFinishLaunching):
        (WebKit::StorageProcessProxy::getDatabaseProcessConnection): Deleted.
        (WebKit::StorageProcessProxy::didCreateDatabaseToWebProcessConnection): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:

        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::storageProcessDidCrash):
        (WebKit::WebContextClient::databaseProcessDidCrash): Deleted.
        * UIProcess/WebContextClient.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::getStorageProcessConnection):
        (WebKit::WebProcessPool::storageProcessCrashed):
        (WebKit::WebProcessPool::pageAddedToProcess):
        (WebKit::WebProcessPool::storageProcessIdentifier):
        (WebKit::WebProcessPool::terminateStorageProcess):
        (WebKit::WebProcessPool::ensureDatabaseProcessAndWebsiteDataStore): Deleted.
        (WebKit::WebProcessPool::getDatabaseProcessConnection): Deleted.
        (WebKit::WebProcessPool::databaseProcessCrashed): Deleted.
        (WebKit::WebProcessPool::databaseProcessIdentifier): Deleted.
        (WebKit::WebProcessPool::terminateDatabaseProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToStorageProcessRelaunchingIfNecessary):
        (WebKit::WebProcessPool::sendToDatabaseProcessRelaunchingIfNecessary): Deleted.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection):
        (WebKit::WebProcessProxy::getDatabaseProcessConnection): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::databaseProcessParameters): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:

        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::WebToStorageProcessConnection):
        (WebKit::WebToStorageProcessConnection::~WebToStorageProcessConnection):
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::didReceiveInvalidMessage):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession):
        (WebKit::WebToDatabaseProcessConnection::WebToDatabaseProcessConnection): Deleted.
        (WebKit::WebToDatabaseProcessConnection::~WebToDatabaseProcessConnection): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didReceiveMessage): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didClose): Deleted.
        (WebKit::WebToDatabaseProcessConnection::didReceiveInvalidMessage): Deleted.
        (WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::create):
        (WebKit::WebToDatabaseProcessConnection::create): Deleted.
        (WebKit::WebToDatabaseProcessConnection::connection): Deleted.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnection):
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
        (WebKit::WebProcess::webToDatabaseProcessConnectionClosed): Deleted.
        (WebKit::WebProcess::webToDatabaseProcessConnection): Deleted.
        (WebKit::WebProcess::ensureWebToDatabaseProcessConnection): Deleted.
        * WebProcess/WebProcess.h:

2017-07-27  Nan Wang  <n_wang@apple.com>

        AX: A11Y: Zoom no longer follows keyboard insertion point in safari
        https://bugs.webkit.org/show_bug.cgi?id=174869

        Reviewed by David Kilzer.

        There was a recent change by denying XPC services access by default. 
        In UAZoomChangeFocus we need to send message to HIServices, so let's
        allow the connection to XPC services for that. 

        * WebProcess/com.apple.WebProcess.sb.in:

2017-07-27  Brady Eidson  <beidson@apple.com>

        Part 1 of: Rename DatabaseProcess to StorageProcess.
        https://bugs.webkit.org/show_bug.cgi?id=174879

        Reviewed by Andy Estes.

        This patch is all about renaming source files and renaming the process itself (touching build system files, etc etc).

        Some renaming in actual code did result (Some class/struct names, method names, etc)

        Part 2 (174880) will go through and update all references in code itself from "Database" to "Storage"

        * CMakeLists.txt:
        * Configurations/Storage-iOS.entitlements: Renamed from Source/WebKit/Configurations/Databases-iOS.entitlements.
        * Configurations/StorageService.xcconfig: Renamed from Source/WebKit/Configurations/DatabaseService.xcconfig.
        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * Platform/ExtraPrivateSymbolsForTAPI.h:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:

        * Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Renamed from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb.

        * Shared/Storage/StorageProcessCreationParameters.cpp: Renamed from Source/WebKit/Shared/Databases/DatabaseProcessCreationParameters.cpp.
        (WebKit::StorageProcessCreationParameters::StorageProcessCreationParameters):
        (WebKit::StorageProcessCreationParameters::encode):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h: Renamed from Source/WebKit/Shared/Databases/DatabaseProcessCreationParameters.h.

        * StorageProcess/EntryPoint/mac/XPCService/StorageService/Info.plist: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/mac/XPCService/DatabaseService/Info.plist.
        * StorageProcess/EntryPoint/mac/XPCService/StorageServiceEntryPoint.mm: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm.
        (StorageServiceInitializer):
        * StorageProcess/EntryPoint/unix/StorageProcessMain.cpp: Renamed from Source/WebKit/DatabaseProcess/EntryPoint/unix/DatabaseProcessMain.cpp.
        (main):

        * StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h.
        * StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in.
        
        * StorageProcess/StorageProcess.cpp: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.cpp.
        * StorageProcess/StorageProcess.h: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.h.
        * StorageProcess/StorageProcess.messages.in: Renamed from Source/WebKit/DatabaseProcess/DatabaseProcess.messages.in.

        * StorageProcess/StorageToWebProcessConnection.cpp: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.cpp.
        * StorageProcess/StorageToWebProcessConnection.h: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.h.
        * StorageProcess/StorageToWebProcessConnection.messages.in: Renamed from Source/WebKit/DatabaseProcess/DatabaseToWebProcessConnection.messages.in.

        * StorageProcess/gtk/StorageProcessMainGtk.cpp: Renamed from Source/WebKit/DatabaseProcess/gtk/DatabaseProcessMainGtk.cpp.
        (WebKit::StorageProcessMainUnix):
        * StorageProcess/ios/StorageProcessIOS.mm: Renamed from Source/WebKit/DatabaseProcess/ios/DatabaseProcessIOS.mm.
        (WebKit::StorageProcess::initializeProcess):
        (WebKit::StorageProcess::initializeProcessName):
        (WebKit::StorageProcess::initializeSandbox):
        * StorageProcess/mac/StorageProcessMac.mm: Renamed from Source/WebKit/DatabaseProcess/mac/DatabaseProcessMac.mm.
        (WebKit::StorageProcess::initializeProcess):
        (WebKit::StorageProcess::initializeProcessName):
        (WebKit::StorageProcess::initializeSandbox):

        * StorageProcess/mac/com.apple.WebKit.Databases.sb.in: Copied from Source/WebKit/DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in.
        * StorageProcess/mac/com.apple.WebKit.Storage.sb.in: Renamed from Source/WebKit/DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in.

        * StorageProcess/unix/StorageProcessMainUnix.h: Renamed from Source/WebKit/DatabaseProcess/unix/DatabaseProcessMainUnix.h.

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):

        * UIProcess/Storage/StorageProcessProxy.cpp: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.cpp.
        * UIProcess/Storage/StorageProcessProxy.h: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.h.
        * UIProcess/Storage/StorageProcessProxy.messages.in: Renamed from Source/WebKit/UIProcess/Databases/DatabaseProcessProxy.messages.in.

        * UIProcess/WebContextSupplement.h:
        (WebKit::WebContextSupplement::processDidClose):

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureDatabaseProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::databaseProcessCrashed):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::databaseProcessParameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

        * WebKit.xcodeproj/project.pbxproj:

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
        * WebProcess/Databases/WebDatabaseProvider.cpp:

        * WebProcess/Storage/WebToStorageProcessConnection.cpp: Renamed from Source/WebKit/WebProcess/Databases/WebToDatabaseProcessConnection.cpp.
        * WebProcess/Storage/WebToStorageProcessConnection.h: Renamed from Source/WebKit/WebProcess/Databases/WebToDatabaseProcessConnection.h.

        * WebProcess/WebProcess.cpp:

2017-07-27  Tim Horton  <timothy_horton@apple.com>

        PDF page number indicator is very flashy when scrolling
        https://bugs.webkit.org/show_bug.cgi?id=174882
        <rdar://problem/23760981>

        Reviewed by Andy Estes.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        (-[WKPDFPageNumberIndicator initWithFrame:]):
        Increase the backdrop rendering resolution to reduce flashiness.
        It's still not perfect, but it's quite visibly better.

2017-07-26  Brady Eidson  <beidson@apple.com>

        ResourceLoadStatistics API tests fail on El Capitan.
        https://bugs.webkit.org/show_bug.cgi?id=174877

        Reviewed by Chris Dumez.

        Always install the testing callback.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2017-07-26  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r211160): Can't pinch to zoom unlocked encrypted PDFs in WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=174881
        <rdar://problem/33556312>

        Reviewed by Andy Estes.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _hidePasswordView]):
        WKPasswordView saves and restores a bunch of scroll view properties, including
        those relating to zoom limits. The restoration happens in -[WKPasswordView hide],
        which is never called. Instead, the code added in r211160 just calls
        removeFromSuperview after unlocking, never restoring the old zoom limits,
        causing the then fully unlocked PDF to not be zoomable. Fix this by calling
        -hide instead of -removeFromSuperview (which -hide also calls).

2017-07-26  Brady Eidson  <beidson@apple.com>

        Rename {Web/UI}Process/Storage to {Web/UI}Process/WebStorage.
        https://bugs.webkit.org/show_bug.cgi?id=174871

        Reviewed by Chris Dumez.

        The standard these directories help implement is the "Web Storage" standard.
        "Storage" is too general of a word that we have plans to start using in other contexts soon.

        * CMakeLists.txt:
        * DerivedSources.make:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * WebKit.xcodeproj/project.pbxproj:

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp: Renamed from Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp.
        * UIProcess/ResourceLoadStatisticsPersistentStorage.h: Renamed from Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h.
        * UIProcess/WebStorage/LocalStorageDatabase.cpp: Renamed from Source/WebKit/UIProcess/Storage/LocalStorageDatabase.cpp.
        * UIProcess/WebStorage/LocalStorageDatabase.h: Renamed from Source/WebKit/UIProcess/Storage/LocalStorageDatabase.h.
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp: Renamed from Source/WebKit/UIProcess/Storage/LocalStorageDatabaseTracker.cpp.
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h: Renamed from Source/WebKit/UIProcess/Storage/LocalStorageDatabaseTracker.h.
        * UIProcess/WebStorage/StorageManager.cpp: Renamed from Source/WebKit/UIProcess/Storage/StorageManager.cpp.
        * UIProcess/WebStorage/StorageManager.h: Renamed from Source/WebKit/UIProcess/Storage/StorageManager.h.
        * UIProcess/WebStorage/StorageManager.messages.in: Renamed from Source/WebKit/UIProcess/Storage/StorageManager.messages.in.
        * UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: Renamed from Source/WebKit/UIProcess/Storage/ios/LocalStorageDatabaseTrackerIOS.mm.
        * UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm: Renamed from Source/WebKit/UIProcess/Storage/ios/ResourceLoadStatisticsPersistentStorageIOS.mm.

        * WebProcess/WebStorage/StorageAreaImpl.cpp: Renamed from Source/WebKit/WebProcess/Storage/StorageAreaImpl.cpp.
        * WebProcess/WebStorage/StorageAreaImpl.h: Renamed from Source/WebKit/WebProcess/Storage/StorageAreaImpl.h.
        * WebProcess/WebStorage/StorageAreaMap.cpp: Renamed from Source/WebKit/WebProcess/Storage/StorageAreaMap.cpp.
        * WebProcess/WebStorage/StorageAreaMap.h: Renamed from Source/WebKit/WebProcess/Storage/StorageAreaMap.h.
        * WebProcess/WebStorage/StorageAreaMap.messages.in: Renamed from Source/WebKit/WebProcess/Storage/StorageAreaMap.messages.in.
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp: Renamed from Source/WebKit/WebProcess/Storage/StorageNamespaceImpl.cpp.
        * WebProcess/WebStorage/StorageNamespaceImpl.h: Renamed from Source/WebKit/WebProcess/Storage/StorageNamespaceImpl.h.
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: Renamed from Source/WebKit/WebProcess/Storage/WebStorageNamespaceProvider.cpp.
        * WebProcess/WebStorage/WebStorageNamespaceProvider.h: Renamed from Source/WebKit/WebProcess/Storage/WebStorageNamespaceProvider.h.

2017-07-26  Brady Eidson  <beidson@apple.com>

        Remove DATABASE_PROCESS build flag.
        https://bugs.webkit.org/show_bug.cgi?id=174868

        Reviewed by Andy Estes.

        * CMakeLists.txt:
        * DatabaseProcess/DatabaseProcess.cpp:
        * DatabaseProcess/DatabaseProcess.h:
        * DatabaseProcess/DatabaseProcess.messages.in:
        * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
        * DatabaseProcess/DatabaseToWebProcessConnection.h:
        * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in:
        * DatabaseProcess/gtk/DatabaseProcessMainGtk.cpp:
        * DatabaseProcess/ios/DatabaseProcessIOS.mm:
        * DatabaseProcess/mac/DatabaseProcessMac.mm:
        * DatabaseProcess/unix/DatabaseProcessMainUnix.h:
        * Shared/Databases/DatabaseProcessCreationParameters.cpp:
        * Shared/Databases/DatabaseProcessCreationParameters.h:
        * Shared/ProcessExecutablePath.h:
        * Shared/gtk/ProcessExecutablePathGtk.cpp:
        (WebKit::executablePathOfDatabaseProcess):
        * Shared/wpe/ProcessExecutablePathWPE.cpp:
        (WebKit::executablePathOfDatabaseProcess):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        * UIProcess/Databases/DatabaseProcessProxy.h:
        * UIProcess/Databases/DatabaseProcessProxy.messages.in:
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        * UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::databaseProcessCrashed):
        (WebKit::WebProcessPool::databaseProcessIdentifier):
        (WebKit::WebProcessPool::terminateDatabaseProcess):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToDatabaseProcessRelaunchingIfNecessary):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getDatabaseProcessConnection):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        * WebKit2Prefix.h:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in:
        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        * WebProcess/Databases/WebToDatabaseProcessConnection.h:
        * WebProcess/WebProcess.cpp:
        * WebProcess/WebProcess.h:

2017-07-26  Brady Eidson  <beidson@apple.com>

        Add test to verify certain child processes are not launched as a side effect of enabling ResourceLoadStatistics.
        https://bugs.webkit.org/show_bug.cgi?id=174851

        Reviewed by Chris Dumez.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _databaseProcessIdentifier]):
        (-[WKProcessPool _pluginProcessCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/Plugins/PluginProcessManager.h:
        (WebKit::PluginProcessManager::pluginProcesses):

2017-07-26  Brian Burg  <bburg@apple.com>

        Remove WEB_TIMING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=174795

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
        (WebKit::NetworkDataTaskSoup::createRequest):
        (WebKit::NetworkDataTaskSoup::didSendRequest):
        (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
        (WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
        (WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
        (WebKit::NetworkDataTaskSoup::didGetHeaders):
        (WebKit::NetworkDataTaskSoup::didRestart):
        * NetworkProcess/soup/NetworkDataTaskSoup.h:

2017-07-26  Brian Burg  <bburg@apple.com>

        Use SandboxExtension::HandleArray when sending extensions for file uploads to the web process
        https://bugs.webkit.org/show_bug.cgi?id=174828

        Reviewed by Tim Horton.

        In the previous change I forgot to hoist the HandleArray and message-send out of the
        loop, so the code wasn't actually sending fewer messages. That's fixed now.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
        (WebKit::WebPageProxy::didChooseFilesForOpenPanel):

2017-07-26  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Fix a compiler warning that springs up when
        building the WPE port with Clang.

        * UIProcess/API/wpe/ScrollGestureController.h:
        Let ScrollGestureController be a class, and not a struct.
        This fits the usual pattern, and also matches the forward
        declaration used in WPE's PageClientImpl.h.

2017-07-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.5 release.

        * gtk/NEWS: Add release notes for 2.17.5.

2017-07-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        Icon loader error on startup
        https://bugs.webkit.org/show_bug.cgi?id=174787

        Reviewed by Brady Eidson.

        Ignore non HTTP favicons in glib API.

        * UIProcess/API/glib/WebKitIconLoadingClient.cpp:

2017-07-25  Brady Eidson  <beidson@apple.com>

        ResourceLoadStatistics grandfathering happens much too often.
        <rdar://problem/32655834> and https://bugs.webkit.org/show_bug.cgi?id=174825

        Reviewed by Chris Dumez.

        The ResourceLoadStatistics grandfathering procedure happens too often.
        - With an empty memory store, even though an empty memory store is a perfectly valid state.
        - On each launch, even if grandfathering happened on the last launch - because grandfathering
          data would not automatically be saved to disk.
        - After clearing all website data, at which point no grandfathering can possibly be relevant
          because there is no data to grandfather.

        This patch fixes those cases and adds API tests to verify they remain fixed.

        * Shared/WebsiteData/WebsiteDataType.h:

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]): allWebsiteDataTypes, but even with the private ones.
        (-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]): If the types being cleared cover all of 
          the types that ResourceLoadStatistics care about, don't grandfather afterwards.
        (-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]): Ditto.
        (-[WKWebsiteDataStore _setResourceLoadStatisticsTestingCallback:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk): Don't grandfather if the store read from 
          disk is empty (as being empty is perfectly fine), and also log the event of "populated without grandfathering".
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData):

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords): 
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData): Schedule a write right away so we don't re-grandfather
          on next launch, and also log the grandfathering event.
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent): Takes a ShouldGrandfather flag
          to tell whether or not data should be re-grandfathered after the store is cleared.
        (WebKit::WebResourceLoadStatisticsStore::logTestingEvent): Log the event to the testing client.
        (WebKit::dataTypesToRemove): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback): Handles enabling ResourceLoadStatistics both
          with and without a testing callback.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-07-25  Andy Estes  <aestes@apple.com>

        [Apple Pay] Add "carteBancaire" as a supported payment network
        https://bugs.webkit.org/show_bug.cgi?id=174841
        <rdar://problem/31935596>

        Reviewed by Alex Christensen.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toSupportedNetwork):

2017-07-25  Brian Burg  <bburg@apple.com>

        Use SandboxExtension::HandleArray when sending extensions for file uploads to the web process
        https://bugs.webkit.org/show_bug.cgi?id=174828

        Reviewed by Tim Horton.

        Send all of the sandbox extension handles in a single message, rather than
        one message per extension. Update message name and parameter types to match.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
        (WebKit::WebPageProxy::didChooseFilesForOpenPanel):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::extendSandboxForFilesFromOpenPanel):
        (WebKit::WebPage::extendSandboxForFileFromOpenPanel): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-07-25  Alex Christensen  <achristensen@webkit.org>

        Fix API tests after r219871.
        https://bugs.webkit.org/show_bug.cgi?id=174807

        WebKit2.OpenAndCloseWindowAsync and WebKit2.OpenAsyncWithNil API tests are fixed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createNewPage):
        createNewPageAsync or createNewPage should be called, not both.

2017-07-25  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Async image decoding for large images should be disabled after the first time a tile is painted
        https://bugs.webkit.org/show_bug.cgi?id=174451
        <rdar://problem/31246421>

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::imageForRect):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::paintContents):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

2017-07-25  Brian Burg  <bburg@apple.com>

        Web Automation: add support for uploading files
        https://bugs.webkit.org/show_bug.cgi?id=174797
        <rdar://problem/28485063>

        Reviewed by Joseph Pecoraro.

        The general strategy is to have automation clients set the list of files they want
        to select ahead of time. Then, the client simulates a click on the <input type="file"> element.
        When that causes WebPageProxy to ask the UI delegate to runOpenPanel, it instead
        gives WebAutomationSession a chance to select files if the page is under control of
        automation. WebAutomationSession validates its file list and selects the files if valid.

        * CMakeLists.txt: Add frontend dispatcher files.
        * DerivedSources.make:
        Add frontend dispatcher code generator scripts as dependencies of the generated code.
        Add generated frontend dispatcher files to the list of output files.

        * UIProcess/Automation/Automation.json:
        Add a command to set the canned list of files that should be selected when prompted.
        If no files are selected, then the effect is as if the user had clicked "cancel" in
        the file chooser dialog.

        Add an event to signal to the WebDriver service that the file selection request has
        been either fulfilled or cancelled. This event is necessary because otherwise remotes
        cannot distinguish whether selecting the files failed for some reason, or if the
        UIProcess has not yet selected the files and sent them to the web content process.
        In either case, the input element's "files" attribute would return an empty FileList.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::WebAutomationSession):
        Add the frontend dispatcher for Automation domain. This is named m_domainNotifier since
        m_domainDispatcher is already being used for the backend command dispatcher.

        (WebKit::WebAutomationSession::handleRunOpenPanel):
        Validate that the files-to-select list has valid entries and select the files if so.
        If anything goes wrong, pretend to cancel out of the file chooser. Either way, notify the
        frontend with an event that the file chooser was dismissed due to selecting files or cancelling.
        Automation protocol clients may implement additional strategies to further restrict
        the conditions upon which local files can be uploaded.

        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload): Added.
        Store the list of files as a vector of strings. The file list is always replaced.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runOpenPanel):
        If the page is under automation, delegating the runOpenPanel is likely to hang
        because WebDriver cannot interact directly with the file chooser dialog. Instead,
        give WebAutomationSession a chance to select files and don't tell the delegate.

        * WebKit.xcodeproj/project.pbxproj:
        Add frontend dispatcher files to "Derived Sources" group.

2017-07-25  Alex Christensen  <achristensen@webkit.org>

        Modernize NavigationAction code
        https://bugs.webkit.org/show_bug.cgi?id=174807

        Reviewed by Darin Adler.

        Mostly just use more move semantics.

        * Platform/IPC/HandleMessage.h:
        (IPC::callMemberFunctionImpl):
        * Shared/API/APIURLRequest.h:
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::Navigation):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::create):
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/API/APIPolicyClient.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        (API::UIClient::createNewPageAsync):
        (API::UIClient::canCreateNewPageAsync):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLRequest):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPageUIClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPageCommon):
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::canCreateNewPageAsync):
        (WebKit::UIDelegate::UIClient::createNewPageAsync):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::decidePolicyForNavigationAction):
        * UIProcess/WebNavigationState.cpp:
        (WebKit::WebNavigationState::createLoadRequestNavigation):
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:

2017-07-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r218629): [GTK] ASSERTION FAILED: m_eglDisplay == EGL_NO_DISPLAY in WebCore::PlatformDisplay::~PlatformDisplay
        https://bugs.webkit.org/show_bug.cgi?id=174789

        Reviewed by Žan Doberšek.

        Before r218629, the wayland nested compositor display was a singleton created on demand by
        AcceleratedSurfaceWayland, but now it's created unconditionally on web process creation when a valid display
        name is received from the UI process. The side effect of this is that now the shared display is created after
        the nested compositor display that is not a singleton anymore. The atexit used by PlatformDisplay to shutdown
        egl display assumes that it will be registered by the shared display. Since we switched to on demand AC mode,
        the shared display is only used in the web process when entering AC mode, that's why it only crashes when we
        have entered AC at least once. We just need to ensure that the shared display is created before the nested
        compositor display.

        * WebProcess/gtk/WaylandCompositorDisplay.cpp:
        (WebKit::WaylandCompositorDisplay::create): Check we are under wayland before creating the WaylandCompositorDisplay.

2017-07-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] ASSERTION FAILED: client in WebKit::IconDatabase::setClient
        https://bugs.webkit.org/show_bug.cgi?id=174788

        Reviewed by Carlos Garcia Campos.

        IconDatabase ensures that setClient is never called with nullptr, but WebKitFaviconDatabase
        does exactly that. First, ensure it's safe to unset the client. Next, we can either remove
        the assertions from setClient or else automatically unset the client in IconDatabase::close.
        I opted to do both.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::close):
        (WebKit::IconDatabase::setIconDataForIconURL):
        (WebKit::IconDatabase::setIconURLForPageURL):
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (_WebKitFaviconDatabasePrivate::~_WebKitFaviconDatabasePrivate): Deleted.
        (webkitFaviconDatabaseDispose): Deleted.

2017-07-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][WPE] Remove useless conditional in IconDatabase::setIconDataForIconURL
        https://bugs.webkit.org/show_bug.cgi?id=174792

        Reviewed by Carlos Garcia Campos.

        We have in IconDatabase::setIconDataForIconURL some code in a conditional to check if it's
        not being executed on the icon sync thread. But at the top of the function is an assertion
        to ensure the code is never executed on the icon sync thread. The condition is therefore
        useless and the code should be executed unconditionally.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::setIconDataForIconURL):

2017-07-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Icon database error and crash
        https://bugs.webkit.org/show_bug.cgi?id=174760

        Reviewed by Michael Catanzaro.

        The crash is a debug ASSERT that happens when the IconRecord image is created in one thread and destroyed in
        another one. IconDatabase creates and destroys IconRecord objects in both database and main thread. The
        IconRecord is destroyed when the icon is no longer retained, and we only release icons when we fail to get the
        image data (including pages that don't have a favicon). We can prevent this crash from happening if we ensure we
        never create an Image for an IconRecord when the given image data is nullptr.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::IconRecord::setImageData):

2017-07-24  Chris Dumez  <cdumez@apple.com>

        [WK2][Cocoa] Allow overriding the ITP data removal internal using a default
        https://bugs.webkit.org/show_bug.cgi?id=174802
        <rdar://problem/33497898>

        Reviewed by Sam Weinig.

        Allow overriding the ITP data removal internal using a default to facilitate testing.
        Can be used like so:
        defaults write -g ResourceLoadStatisticsMinimumTimeBetweenDataRecordsRemoval 60

        Will cause us to write every 60 seconds instead of 3600.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
        (WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):

2017-07-24  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Crash under PageOverlayController::uninstallPageOverlay when doing multiple finds
        https://bugs.webkit.org/show_bug.cgi?id=174806
        rdar://problem/33501664

        Reviewed by Tim Horton.
        
        Calling TextIndicator::createWithSelectionInFrame can trigger layout via VisibleSelection code,
        which can re-enter FindController::updateFindIndicator which has by now removed m_findIndicatorOverlay
        from pageOverlayController's map, but not deleted it. The second call to uninstallPageOverlay()
        thus crashes at m_overlayGraphicsLayers.take(&overlay)->removeFromParent().
        
        Fix by nulling out m_findIndicatorOverlay as soon as we uninstall it.

        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):

2017-07-24  Chris Dumez  <cdumez@apple.com>

        Fix lifetime management issue in ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore()
        https://bugs.webkit.org/show_bug.cgi?id=174790

        Reviewed by Brady Eidson.

        Fix lifetime management issue in ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore().
        WorkQueue::dispatchAfter() keeps the WorkQueue alive because its implementation keeps a strong ref to
        |this|. As a result, the lambda passed to dispatchAfter(), which calls writeMemoryStoreToDisk(), can
        get executed after the store is gone.

        To address the issue, we now use a RunLoop::Timer to schedule the write, instead of a
        WorkQueue::dispatchAfter() call. This way, we are guaranteed that the callback will not get called
        after the store has been destroyed.

        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::asyncWriteTimerFired):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        (WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously):
        (WebKit::ResourceLoadStatisticsPersistentStorage::ref):
        (WebKit::ResourceLoadStatisticsPersistentStorage::deref):
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:

2017-07-24  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r219828.

        Causes debug assertions to be hit on iOS

        Reverted changeset:

        "Fix lifetime management issue in
        ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore()"
        https://bugs.webkit.org/show_bug.cgi?id=174790
        http://trac.webkit.org/changeset/219828

2017-07-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][WPE] Stop using AutodrainedPool in IconDatabase
        https://bugs.webkit.org/show_bug.cgi?id=174791

        Reviewed by Alex Christensen.

        AutodrainedPool seems to be some NS garbage collection thing that has no implementation on
        other platforms. Now that IconDatabase is used only by GTK and WPE, we can stop using it.

        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::setIconDataForIconURL):
        (WebKit::IconDatabase::setIconURLForPageURL):
        (WebKit::IconDatabase::iconDatabaseSyncThread):
        (WebKit::IconDatabase::performURLImport):
        (WebKit::IconDatabase::readFromDatabase):

2017-07-24  Chris Dumez  <cdumez@apple.com>

        Fix lifetime management issue in ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore()
        https://bugs.webkit.org/show_bug.cgi?id=174790

        Reviewed by Brady Eidson.

        Fix lifetime management issue in ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore().
        WorkQueue::dispatchAfter() keeps the WorkQueue alive because its implementation keeps a strong ref to
        |this|. As a result, the lambda passed to dispatchAfter(), which calls writeMemoryStoreToDisk(), can
        get executed after the store is gone.

        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:
        (WebKit::ResourceLoadStatisticsPersistentStorage::createWeakPtr):

2017-07-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. REGRESSION(r219713): [GTK][WPE] Fix default favicon database patch.

        When nullptr is passed to webkit_web_context_set_favicon_database_directory() the default database directory was
        taken from WebProcessPool::platformDefaultIconDatabasePath(), that has been removed in r219713 without properly
        replacing it, now it uses an empty string. This causes that the current directory is used to create the favicon
        database.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_favicon_database_directory): Use the default icon database directory instead of an empty
        string when nullptr is passed.

2017-07-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] 5 DataInteractionTests are failing: observed selection rects after dropping don't match expected values
        https://bugs.webkit.org/show_bug.cgi?id=174769
        <rdar://problem/33478864>

        Reviewed by Tim Horton.

        Fixes several API tests in the DataInteractionTests suite. See Source/WebCore/ChangeLog for more details.

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

2017-07-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement page load timeout
        https://bugs.webkit.org/show_bug.cgi?id=174672

        Reviewed by Brian Burg.

        Always start a timer when waiting for a navigation to complete. When the timer fires, pending callbacks for
        navigations are removed and invoked with a timeout error. If navigation completes before the timer is fired,
        then the timer is stopped. All navigation commands now receive the page load strategy and timeout as optional
        parameters, when not provided the default timeout (300 seconds) is used.

        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::WebAutomationSession):
        (WebKit::WebAutomationSession::waitForNavigationToComplete):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage):
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame):
        (WebKit::WebAutomationSession::loadTimerFired):
        (WebKit::WebAutomationSession::navigateBrowsingContext):
        (WebKit::WebAutomationSession::goBackInBrowsingContext):
        (WebKit::WebAutomationSession::goForwardInBrowsingContext):
        (WebKit::WebAutomationSession::reloadBrowsingContext):
        (WebKit::WebAutomationSession::navigationOccurredForFrame):
        * UIProcess/Automation/WebAutomationSession.h:

2017-07-23  Takuro Ashie  <ashie@clear-code.com>

        [GTK] Correct a typo in the reference manual of WebKitWebInspector
        https://bugs.webkit.org/show_bug.cgi?id=174767

        Reviewed by Michael Catanzaro.

        * UIProcess/API/gtk/WebKitWebInspector.cpp:

2017-07-23  Chris Dumez  <cdumez@apple.com>

        Drop ExceptionCodeDescription class
        https://bugs.webkit.org/show_bug.cgi?id=174757

        Reviewed by Darin Adler.

        Update GTK bindings to use new API on DOMException instead of
        ExceptionCodeDescription.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
        (webkit_dom_attr_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
        (webkit_dom_cdata_section_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
        (webkit_dom_css_rule_set_css_text):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
        (webkit_dom_css_style_declaration_set_property):
        (webkit_dom_css_style_declaration_set_css_text):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
        (webkit_dom_css_style_sheet_insert_rule):
        (webkit_dom_css_style_sheet_delete_rule):
        (webkit_dom_css_style_sheet_add_rule):
        (webkit_dom_css_style_sheet_remove_rule):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
        (webkit_dom_css_value_set_css_text):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
        (webkit_dom_character_data_dispatch_event):
        (webkit_dom_character_data_insert_data):
        (webkit_dom_character_data_delete_data):
        (webkit_dom_character_data_replace_data):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
        (webkit_dom_comment_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.cpp:
        (webkit_dom_dom_implementation_create_document_type):
        (webkit_dom_dom_implementation_create_document):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
        (webkit_dom_dom_selection_collapse_to_end):
        (webkit_dom_dom_selection_collapse_to_start):
        (webkit_dom_dom_selection_extend):
        (webkit_dom_dom_selection_get_range_at):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
        (webkit_dom_dom_token_list_add):
        (webkit_dom_dom_token_list_remove):
        (webkit_dom_dom_token_list_toggle):
        (webkit_dom_dom_token_list_replace):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
        (webkit_dom_dom_window_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
        (webkit_dom_node_set_prefix):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
        (webkit_dom_document_dispatch_event):
        (webkit_dom_document_create_element):
        (webkit_dom_document_create_cdata_section):
        (webkit_dom_document_create_processing_instruction):
        (webkit_dom_document_create_attribute):
        (webkit_dom_document_import_node):
        (webkit_dom_document_create_element_ns):
        (webkit_dom_document_create_attribute_ns):
        (webkit_dom_document_adopt_node):
        (webkit_dom_document_create_event):
        (webkit_dom_document_create_expression):
        (webkit_dom_document_evaluate):
        (webkit_dom_document_query_selector):
        (webkit_dom_document_query_selector_all):
        (webkit_dom_document_set_xml_version):
        (webkit_dom_document_set_cookie):
        (webkit_dom_document_set_body):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
        (webkit_dom_document_fragment_dispatch_event):
        (webkit_dom_document_fragment_query_selector):
        (webkit_dom_document_fragment_query_selector_all):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
        (webkit_dom_document_type_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
        (webkit_dom_element_dispatch_event):
        (webkit_dom_element_set_attribute):
        (webkit_dom_element_set_attribute_node):
        (webkit_dom_element_remove_attribute_node):
        (webkit_dom_element_set_attribute_ns):
        (webkit_dom_element_set_attribute_node_ns):
        (webkit_dom_element_matches):
        (webkit_dom_element_closest):
        (webkit_dom_element_insert_adjacent_element):
        (webkit_dom_element_insert_adjacent_html):
        (webkit_dom_element_insert_adjacent_text):
        (webkit_dom_element_remove):
        (webkit_dom_element_query_selector):
        (webkit_dom_element_query_selector_all):
        (webkit_dom_element_set_inner_html):
        (webkit_dom_element_set_outer_html):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
        (webkit_dom_html_anchor_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
        (webkit_dom_html_applet_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
        (webkit_dom_html_area_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
        (webkit_dom_html_br_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
        (webkit_dom_html_base_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
        (webkit_dom_html_body_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
        (webkit_dom_html_button_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
        (webkit_dom_html_canvas_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
        (webkit_dom_html_d_list_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
        (webkit_dom_html_directory_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
        (webkit_dom_html_div_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
        (webkit_dom_html_document_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
        (webkit_dom_html_element_dispatch_event):
        (webkit_dom_html_element_set_inner_text):
        (webkit_dom_html_element_set_outer_text):
        (webkit_dom_html_element_set_content_editable):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
        (webkit_dom_html_embed_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
        (webkit_dom_html_field_set_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
        (webkit_dom_html_font_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
        (webkit_dom_html_form_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
        (webkit_dom_html_frame_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
        (webkit_dom_html_frame_set_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
        (webkit_dom_html_hr_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
        (webkit_dom_html_head_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
        (webkit_dom_html_heading_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
        (webkit_dom_html_html_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
        (webkit_dom_html_iframe_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
        (webkit_dom_html_image_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
        (webkit_dom_html_input_element_dispatch_event):
        (webkit_dom_html_input_element_set_max_length):
        (webkit_dom_html_input_element_set_size):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
        (webkit_dom_html_li_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
        (webkit_dom_html_label_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
        (webkit_dom_html_legend_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
        (webkit_dom_html_link_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
        (webkit_dom_html_map_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
        (webkit_dom_html_marquee_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
        (webkit_dom_html_menu_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
        (webkit_dom_html_meta_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
        (webkit_dom_html_mod_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
        (webkit_dom_html_o_list_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
        (webkit_dom_html_object_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
        (webkit_dom_html_opt_group_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
        (webkit_dom_html_option_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
        (webkit_dom_html_paragraph_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
        (webkit_dom_html_param_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
        (webkit_dom_html_pre_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
        (webkit_dom_html_quote_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
        (webkit_dom_html_script_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
        (webkit_dom_html_select_element_dispatch_event):
        (webkit_dom_html_select_element_add):
        (webkit_dom_html_select_element_set_length):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
        (webkit_dom_html_style_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
        (webkit_dom_html_table_caption_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
        (webkit_dom_html_table_cell_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
        (webkit_dom_html_table_col_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
        (webkit_dom_html_table_element_dispatch_event):
        (webkit_dom_html_table_element_insert_row):
        (webkit_dom_html_table_element_delete_row):
        (webkit_dom_html_table_element_set_caption):
        (webkit_dom_html_table_element_set_t_head):
        (webkit_dom_html_table_element_set_t_foot):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
        (webkit_dom_html_table_row_element_dispatch_event):
        (webkit_dom_html_table_row_element_insert_cell):
        (webkit_dom_html_table_row_element_delete_cell):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
        (webkit_dom_html_table_section_element_dispatch_event):
        (webkit_dom_html_table_section_element_insert_row):
        (webkit_dom_html_table_section_element_delete_row):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
        (webkit_dom_html_text_area_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
        (webkit_dom_html_title_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
        (webkit_dom_html_u_list_element_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
        (webkit_dom_media_list_delete_medium):
        (webkit_dom_media_list_append_medium):
        (webkit_dom_media_list_set_media_text):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
        (webkit_dom_named_node_map_set_named_item):
        (webkit_dom_named_node_map_remove_named_item):
        (webkit_dom_named_node_map_remove_named_item_ns):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:
        (webkit_dom_node_dispatch_event):
        (webkit_dom_node_insert_before):
        (webkit_dom_node_replace_child):
        (webkit_dom_node_remove_child):
        (webkit_dom_node_append_child):
        (webkit_dom_node_clone_node_with_error):
        (webkit_dom_node_set_node_value):
        (webkit_dom_node_set_text_content):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
        (webkit_dom_processing_instruction_dispatch_event):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
        (webkit_dom_range_set_start):
        (webkit_dom_range_set_end):
        (webkit_dom_range_set_start_before):
        (webkit_dom_range_set_start_after):
        (webkit_dom_range_set_end_before):
        (webkit_dom_range_set_end_after):
        (webkit_dom_range_select_node):
        (webkit_dom_range_select_node_contents):
        (webkit_dom_range_compare_boundary_points):
        (webkit_dom_range_delete_contents):
        (webkit_dom_range_extract_contents):
        (webkit_dom_range_clone_contents):
        (webkit_dom_range_insert_node):
        (webkit_dom_range_surround_contents):
        (webkit_dom_range_create_contextual_fragment):
        (webkit_dom_range_compare_node):
        (webkit_dom_range_intersects_node):
        (webkit_dom_range_compare_point):
        (webkit_dom_range_is_point_in_range):
        (webkit_dom_range_expand):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
        (webkit_dom_text_dispatch_event):
        (webkit_dom_text_split_text):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
        (webkit_dom_xpath_expression_evaluate):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
        (webkit_dom_xpath_result_iterate_next):
        (webkit_dom_xpath_result_snapshot_item):
        (webkit_dom_xpath_result_get_number_value):
        (webkit_dom_xpath_result_get_boolean_value):
        (webkit_dom_xpath_result_get_single_node_value):
        (webkit_dom_xpath_result_get_snapshot_length):

2017-07-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Remove _WKDraggableElementInfo and fold PositionInformationTests into WKRequestActivatedElementInfo
        https://bugs.webkit.org/show_bug.cgi?id=174758

        Reviewed by Dan Bernstein.

        _WKDraggableElementInfo is no longer used in WebKit, so it should be removed. However, some of the scenarios
        in PositionInformationTests that depend on _WKDraggableElementInfo are still useful to exercise: namely,
        performing both synchronous and asynchronous position information updates while an async position information
        update is in flight. This patch refactors these unit tests into 2 new unit tests in the existing
        WKRequestActivatedElementInfo test suite.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _draggableElementAtPosition:]): Deleted.
        (-[WKWebView _requestDraggableElementAtPosition:completionBlock:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKDraggableElementInfo.h: Removed.
        * UIProcess/API/Cocoa/_WKDraggableElementInfo.mm: Removed.
        * UIProcess/API/Cocoa/_WKDraggableElementInfoInternal.h: Removed.
        * UIProcess/ios/WKContentViewInteraction.mm:
        * WebKit.xcodeproj/project.pbxproj:

2017-07-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Mac WK2] Fix null dereference in asynchronous NSTextInputClient methods when deallocating a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=174751
        <rdar://problem/33132405>

        Reviewed by Darin Adler.

        Tweaks -[WKWebView dealloc] to close the WebPageProxy at an earlier time, prior to destroying the WebViewImpl.
        This fixes a NSTextInputClient crash in WKWebView when exercising the following scenario:

        (1) Suppose that NSTextInputContext invokes an asynchronous text input query on WKWebView immediately before
        WKWebView is deallocated, such that WebPageProxy's CallbackMap contains an NSTextInputContext callback at the
        time that -[WKWebView dealloc] is called. Additionally, suppose that this callback from NSTextInputContext
        invokes additional NSTextInputClient methods on the WKWebView that involve plumbing through to the WebViewImpl
        (which is stored as _impl on the WKWebView).

        (2) Observe that when calling [super dealloc] in [WKWebView dealloc], we will destroy the WebViewImpl as a
        result of setting our unique pointer to _impl to be null. In ~WebViewImpl, we invoke WebPageProxy::close, which
        in turn invokes WebPageProxy::resetState.

        (3) WebPageProxy::resetState then calls m_callbacks.invalidate(error), which triggers all pending callbacks.
        This invokes the block described in (1), which causes us to try and call back into WKWebView, invoking
        NSTextInputClient methods. Without the fix in this patch, these methods currently assume that _impl is nonnull,
        even though we've already cleared out the pointer in (2), so we segfault with a null dereference.

        After this patch, we close the _page at an earlier time, such that the state is reset before the WebViewImpl
        (and corresponding _impl unique_ptr in WKWebView) is torn down. This ensures that _impl will not be null for
        callbacks invoked after beginning to deallocate the WKWebView.

        Forcing this scenario in a custom AppKit root that triggers async NSTextInputClient methods immediately when a
        WKWebView is being deallocated produces a crash with the same stack trace as what we observe in the radar, but
        there are no known steps to actually reproduce this crash in shipping software.

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

2017-07-22  Chris Dumez  <cdumez@apple.com>

        REGRESSION(r204565): WKObject is broken
        https://bugs.webkit.org/show_bug.cgi?id=174736
        <rdar://problem/33246169>

        Reviewed by Dan Bernstein.

        Revert r204565 as making WKObject a root class caused unexpected crashes.
        Instead, we now have WKObject inherit from NSProxy (instead of previously
        NSObject) and we forward calls to the target.

        We also need to provide an implementation for private methods such as
        isNSString__ to address the issue with NSStrings that r204565 was trying
        to fix.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::unwrap):
        * Shared/Cocoa/WKObject.h:
        * Shared/Cocoa/WKObject.mm:
        (-[WKObject dealloc]):
        (-[WKObject hash]):
        (-[WKObject isKindOfClass:]):
        (-[WKObject isMemberOfClass:]):
        (-[WKObject respondsToSelector:]):
        (-[WKObject conformsToProtocol:]):
        (-[WKObject forwardingTargetForSelector:]):
        (-[WKObject description]):
        (-[WKObject debugDescription]):
        (-[WKObject classForCoder]):
        (-[WKObject classForKeyedArchiver]):
        (-[WKObject _web_createTarget]):
        (-[WKObject forwardInvocation:]):
        (-[WKObject methodSignatureForSelector:]):
        (-[WKObject isNSObject__]):
        (-[WKObject isNSArray__]):
        (-[WKObject isNSCFConstantString__]):
        (-[WKObject isNSData__]):
        (-[WKObject isNSDate__]):
        (-[WKObject isNSDictionary__]):
        (-[WKObject isNSNumber__]):
        (-[WKObject isNSOrderedSet__]):
        (-[WKObject isNSSet__]):
        (-[WKObject isNSString__]):
        (-[WKObject isNSTimeZone__]):
        (-[WKObject isNSValue__]):

2017-07-21  Chris Dumez  <cdumez@apple.com>

        Drop IDBDatabaseException class
        https://bugs.webkit.org/show_bug.cgi?id=174743

        Reviewed by Darin Adler.

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::connectionToServerLost):

2017-07-21  Brady Eidson  <beidson@apple.com>

        Crash in many WebKit apps marking a connection invalid under Messages::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace.
        <rdar://problem/28822272> and https://bugs.webkit.org/show_bug.cgi?id=174729

        Reviewed by Tim Horton.

        Previously, when a NetworkLoad generated a "CanAuthenticateAgainstProtectionSpace" event, the message went from
        Network process -> Web process -> UI process.

        In that case, MESSAGE_CHECKing the validity of the frame in WebPageProxy made sense.

        In r202511 we cut the WebProcess out of this and had Networking go straight to UI process.

        As a result, the message check became invalid. The Networking process cannot possible know the validity of 
        particular WebPage or WebFrame identifiers.

        We simply need to validate the input in NetworkProcessProxy.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace): Validate both the page and frame ids before
          passing the call along to the WebPageProxy. Also, if either of those validations fail, respond to the network process.

2017-07-21  Andy Estes  <aestes@apple.com>

        [iOS] Adopt UIImagePickerControllerImageURL for photo uploads
        https://bugs.webkit.org/show_bug.cgi?id=174723
        <rdar://problem/33223962>

        Reviewed by Joseph Pecoraro.

        In iOS 11, use the URL provided by UIImagePickerControllerImageURL, if available, as the
        file URL for photo uploads. Since we use the UIImagePickerController imageExportPreset of
        UIImagePickerControllerImageURLExportPresetCompatible, UIKit will take care of converting
        HEIF images to JPEG for us. For other types (GIF, JPEG, and PNG), it will preserve the
        original format.

        Since UIImagePickerController now provides GIF and PNG representations, we no longer need to
        use PHImageManager to access the original assets. This patch removes the
        PHAsset/PHImageManager code added in r185241.

        * Platform/spi/ios/PhotosSPI.h: Removed.
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _uploadItemFromMediaInfo:successBlock:failureBlock:]):
        (-[WKFileUploadPanel _uploadItemForImage:withAssetURL:successBlock:failureBlock:]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2017-07-21  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake][Mac] Unreviewed, fix linking WebKitSystemInterface

        After r219560 link_directories() in PlatformXXX.cmake files does not
        affect corresponding targets.

        * PlatformMac.cmake:

2017-07-21  Andreas Kling  <akling@apple.com>

        Use more references in event dispatch code
        https://bugs.webkit.org/show_bug.cgi?id=174681

        Reviewed by Geoffrey Garen.

        * WebProcess/Plugins/PDF/PDFPluginAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
        (WebKit::PDFPluginAnnotation::handleEvent):
        (WebKit::PDFPluginAnnotation::PDFPluginAnnotationEventListener::handleEvent):
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.h:
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
        (WebKit::PDFPluginPasswordField::handleEvent):
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
        (WebKit::PDFPluginTextAnnotation::handleEvent):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::createWebEvent):
        (WebKit::PluginView::handleEvent):
        * WebProcess/Plugins/PluginView.h:

2017-07-21  Chris Dumez  <cdumez@apple.com>

        WebResourceLoadStatisticsStore::m_operatingDates is unsafely modified from several threads
        https://bugs.webkit.org/show_bug.cgi?id=174721
        <rdar://problem/33400343>

        Reviewed by Brent Fulgham.

        WebResourceLoadStatisticsStore::m_operatingDates is supposed to only be modified on
        the background thread. However, WebResourceLoadStatisticsStore::performDailyTasks()
        was mistakenly calling includeTodayAsOperatingDateIfNecessary() on the main thread,
        which would modify m_operatingDates. This could lead to crashes such as the
        one in <rdar://problem/33400343>, as the main thread may modify m_operatingDates
        while we are interating over it on the background thread to save it to disk.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):

2017-07-21  Brady Eidson  <beidson@apple.com>

        Get rid of WebCore IconDatabase code.
        https://bugs.webkit.org/show_bug.cgi?id=174700

        Reviewed by Tim Horton.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::useIconLoadingClient): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: implicit navigations don't cause browsing context switch
        https://bugs.webkit.org/show_bug.cgi?id=174633
        <rdar://problem/33387797>

        Reviewed by Brian Burg.

        When a new page load replaces the current frameset, for example when a link in the current browser context has a
        _top target, there's no explicit context switch, so the web driver doesn't know that the current browsing
        context is no longer valid. Following commands will still be using the previous frame as the current browsing
        context, but they don't fail with no such frame because the frame is still alive in the page cache and
        referenced in the internal maps used in both UI and web processes. This causes test
        testShouldFocusOnTheReplacementWhenAFrameFollowsALinkToA_TopTargetedPage to fail, since it expects a no such
        frame exception. When a new page navigation happens we can simply remove references to frames from
        m_handleWebFrameMap in WebAutomationSession, because any existing frame reference in the map should be for a
        previous page. With this, before the next command is executed, waitForNavigationToComplete will be called and it
        will fail with no such frame, condition that is handled to switch to the top level browser context. The test
        still fails, because the find element command is called with the top level browsing context, returning no such
        element, instead of no such frame. This is consistent with Chrome.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::navigationOccurredForFrame): Clear the m_handleWebFrameMap when a new page load
        finished.

2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: wait until navigation is complete before running new commands and after a click
        https://bugs.webkit.org/show_bug.cgi?id=174670

        Reviewed by Brian Burg.

        Add waitForNavigationToComplete method to Automation to allow WebDriver to wait for pending navigations to
        complete. The new method already receives page load strategy and timeout, but they are not implemented yet.

        * UIProcess/Automation/Automation.json: Add waitForNavigationToComplete method and PageLoadStrategy new type.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::waitForNavigationToComplete): Call waitForNavigationToCompleteOnPage or
        waitForNavigationToCompleteOnFrame depending on whether the current borwsing context is the main frame or not.
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage): Check if there's an ongoing load for the page,
        and wait for it to complete if needed.
        (WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame): Check if there's an ongoing load for the frame,
        and wait for it to complete if needed.
        (WebKit::WebAutomationSession::navigateBrowsingContext): Use waitForNavigationToCompleteOnPage() now.
        (WebKit::WebAutomationSession::goBackInBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::goForwardInBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::reloadBrowsingContext): Ditto.
        (WebKit::WebAutomationSession::navigationOccurredForFrame): Renamed since it now receives the notification for
        all the frames. Complete page operations if it's a main frame, or frame operations otherwise.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishLoadForFrame): Notify about all frames, not only the main one.
        (WebKit::WebPageProxy::didFailLoadForFrame): Ditto.
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): Ditto.

2017-07-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Remove WKIconDatabaseCairo.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * UIProcess/API/C/cairo/WKIconDatabaseCairo.cpp: Removed.
        * UIProcess/API/C/cairo/WKIconDatabaseCairo.h: Removed.

2017-07-20  Brady Eidson  <beidson@apple.com>

        Get rid of IconDatabase related code in WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=174693

        Reviewed by Tim Horton.

        This leaves the C-API class but guts it.

        No explanations of the other changes are needed.

        * CMakeLists.txt:
        * DerivedSources.make:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetIconDatabase):
        (WKContextSetIconDatabasePath):
        * UIProcess/API/C/WKIconDatabase.cpp:
        (WKIconDatabaseSetIconDatabaseClient):
        (WKIconDatabaseRetainIconForURL):
        (WKIconDatabaseReleaseIconForURL):
        (WKIconDatabaseSetIconDataForIconURL):
        (WKIconDatabaseSetIconURLForPageURL):
        (WKIconDatabaseCopyIconURLForPageURL):
        (WKIconDatabaseCopyIconDataForPageURL):
        (WKIconDatabaseEnableDatabaseCleanup):
        (WKIconDatabaseRemoveAllIcons):
        (WKIconDatabaseCheckIntegrityBeforeOpening):
        (WKIconDatabaseClose):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:
        (WKIconDatabaseTryGetCGImageForURL):
        (WKIconDatabaseTryCopyCGImageArrayForURL):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformDefaultIconDatabasePath): Deleted.
        * UIProcess/WebIconDatabase.cpp: Removed.
        * UIProcess/WebIconDatabase.h:
        (WebKit::WebIconDatabase::clearProcessPool): Deleted.
        * UIProcess/WebIconDatabase.messages.in: Removed.
        * UIProcess/WebIconDatabaseClient.cpp: Removed.
        * UIProcess/WebIconDatabaseClient.h: Removed.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::m_hiddenPageThrottlingTimer):
        (WebKit::WebProcessPool::~WebProcessPool):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::setIconDatabasePath): Deleted.
        (WebKit::WebProcessPool::iconDatabasePath): Deleted.
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processWillShutDown):
        (WebKit::WebProcessProxy::retainIconForPageURL): Deleted.
        (WebKit::WebProcessProxy::releaseIconForPageURL): Deleted.
        (WebKit::WebProcessProxy::releaseRemainingIconsForPageURLs): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::WebProcessPool::platformDefaultIconDatabasePath): Deleted.
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::platformDefaultIconDatabasePath): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/IconDatabase/WebIconDatabaseProxy.cpp: Removed.
        * WebProcess/IconDatabase/WebIconDatabaseProxy.h: Removed.
        * WebProcess/IconDatabase/WebIconDatabaseProxy.messages.in: Removed.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::getWebCoreStatistics):
        * WebProcess/WebProcess.h:

2017-07-20  David Quesada  <david_quesada@apple.com>

        Add SPI to notify WKNavigationDelegate about client redirects
        https://bugs.webkit.org/show_bug.cgi?id=174680
        rdar://problem/33184886

        Reviewed by Brady Eidson.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didPerformClientRedirectForNavigation):
        Add a new virtual method for navigation clients to implement if they want to be informed
        when the page is initiating a navigation that is a client redirect.

        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        Declare the new WKNavigationDelegate method -_webView:didPerformClientRedirectForNavigation:

        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::didPerformClientRedirectForNavigation):
        Add a new method to NavigationState method to tell the WKNavigationDelegate when a
        client redirect happens.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformClientRedirectForLoadForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        Allow the WebPageProxy to receive a message from the web process when a client redirect happens.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        Send this new message to the UI process on client redirects.

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

        Drop legacy XPathException type
        https://bugs.webkit.org/show_bug.cgi?id=174679

        Reviewed by Sam Weinig.

        Drop legacy XPathException type and use DOMException instead. Both Firefox and Chrome
        no longer expose XPathException.

        * UIProcess/Automation/atoms/FindNodes.js:
        (tryToFindNode):

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

        Unreviewed, rolling out r219706.

        Broke iOS build

        Reverted changeset:

        "Drop legacy XPathException type"
        https://bugs.webkit.org/show_bug.cgi?id=174679
        http://trac.webkit.org/changeset/219706

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

        Drop legacy XPathException type
        https://bugs.webkit.org/show_bug.cgi?id=174679

        Reviewed by Sam Weinig.

        Drop legacy XPathException type and use DOMException instead. Both Firefox and Chrome
        no longer expose XPathException.

        * UIProcess/Automation/atoms/FindNodes.js:
        (tryToFindNode):

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

        Avoid unnecessary WorkQueue dispatch in WebResourceLoadStatisticsStore::processStatisticsAndDataRecords()
        https://bugs.webkit.org/show_bug.cgi?id=174686

        Reviewed by Geoffrey Garen.

        Avoid unnecessary WorkQueue dispatch in WebResourceLoadStatisticsStore::processStatisticsAndDataRecords(). The most common
        call site is already on the right thread.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsProcessStatisticsAndDataRecords]):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        * UIProcess/WebResourceLoadStatisticsStore.h:

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

        Regression(ITP): May get frequently logged out of wsj.com
        https://bugs.webkit.org/show_bug.cgi?id=174661
        <rdar://problem/32343256>

        Reviewed by Geoffrey Garen.

        Bump statistics file version to blow away old statistics on disk since those do not
        take into account associated domains.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:

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

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable
        https://bugs.webkit.org/show_bug.cgi?id=174660

        Reviewed by Geoffrey Garen.

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable.
        This essentially replaces a branch to figure out if the new size is less or greater than the
        current size by an assertion.

        * Platform/IPC/ArgumentCoders.h:
        * UIProcess/Gamepad/UIGamepadProvider.cpp:
        (WebKit::UIGamepadProvider::platformGamepadConnected):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setInitialConnectedGamepads):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp:
        (WebKit::WebPasteboardOverrides::getDataForOverride):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestAutocorrectionData):

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

        Regression(ITP): Can no longer log in on abc.go.com
        https://bugs.webkit.org/show_bug.cgi?id=174533
        <rdar://problem/33325881>

        Reviewed by Geoffrey Garen.

        Bump statistics database version to blow away any existing statistics. Without this, SSO providers
        for which we added a quirk may already be in the database and identified as trackers. The quirk
        merely prevents the specified SSO providers from being identified as trackers.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:

2017-07-19  Simon Fraser  <simon.fraser@apple.com>

        getBoundingClientRects not updated for programmatic scrolls
        https://bugs.webkit.org/show_bug.cgi?id=174538
        rdar://problem/33049012

        Reviewed by Tim Horton.
        
        Feed ViewportRectStability and ScrollingLayerPositionAction into reconcileScrollingState().

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

2017-07-19  Brady Eidson  <beidson@apple.com>

        iBooks sometimes crashes when closing a book.
        <rdar://problem/31180331> and https://bugs.webkit.org/show_bug.cgi?id=174658

        Reviewed by Oliver Hunt.

        - LegacyCustomProtocolManagerProxy should not reference a WebProcessPool directly.
        - LegacyCustomProtocolManagerProxy should invalidate in its destructor.

        * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp:
        (WebKit::LegacyCustomProtocolManagerProxy::LegacyCustomProtocolManagerProxy):
        (WebKit::LegacyCustomProtocolManagerProxy::~LegacyCustomProtocolManagerProxy):
        (WebKit::LegacyCustomProtocolManagerProxy::startLoading):
        (WebKit::LegacyCustomProtocolManagerProxy::stopLoading):
        (WebKit::LegacyCustomProtocolManagerProxy::invalidate):
        (WebKit::LegacyCustomProtocolManagerProxy::wasRedirectedToRequest):
        (WebKit::LegacyCustomProtocolManagerProxy::didReceiveResponse):
        (WebKit::LegacyCustomProtocolManagerProxy::didLoadData):
        (WebKit::LegacyCustomProtocolManagerProxy::didFailWithError):
        (WebKit::LegacyCustomProtocolManagerProxy::didFinishLoading):
        (WebKit::LegacyCustomProtocolManagerProxy::processDidClose): Deleted.
        * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        (WebKit::NetworkProcessProxy::didClose):
        * UIProcess/Network/NetworkProcessProxy.h:
        (WebKit::NetworkProcessProxy::processPool):

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

        [WTF] Implement WTF::ThreadGroup
        https://bugs.webkit.org/show_bug.cgi?id=174081

        Reviewed by Mark Lam.

        * Shared/AsyncRequest.h:

2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle invalid selector errors
        https://bugs.webkit.org/show_bug.cgi?id=174619

        Reviewed by Brian Burg.

        We are currently handling only XPathException and only when it's an invalid expression. In the xpath case, the
        spec also says "If any item in result is not an element return an error with error code invalid selector.", so
        we should also handle TYPE_ERR (The expression could not be converted to return the specified type.). However,
        since the spec says "or other error", I think we can simplify this and simply throw InvalidSelector inside the
        catch, without checking any specific error. This is causing 14 failures in selenium tests.

        §12. Element Retrieval. Step 6: If a DOMException, SyntaxError, XPathException, or other error occurs during the
        execution of the element location strategy, return error invalid selector.
        https://www.w3.org/TR/webdriver/#dfn-find

        * UIProcess/Automation/Automation.json: Add InvalidSelector error.
        * UIProcess/Automation/atoms/FindNodes.js:
        (tryToFindNode): Raise InvalidSelector in case of error.
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Handle InvalidSelector exceptions.

2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: error details not passed to DidEvaluateJavaScriptFunction message when callback was not called before page unload
        https://bugs.webkit.org/show_bug.cgi?id=174624

        Reviewed by Brian Burg.

        There's a variable errorMessage, but it's unused.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Pass errorMessage instead of String() to DidEvaluateJavaScriptFunction.

2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: evaluateJavaScriptFunction should always notify the web process before returning early
        https://bugs.webkit.org/show_bug.cgi?id=174623

        Reviewed by Brian Burg.

        It currently returns early if page, frame or scriptObject are nullptr, in which cases the UI process is not
        notified. This causes test testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs to hang, because message
        DidEvaluateJavaScriptFunction is never sent when the given frame no longer exists. We should send
        DidEvaluateJavaScriptFunction with WindowNotFound in case of page is nullptr and FrameNotFound if the frame is
        nullptr. The scriptObject early return is actually wrong, because scriptObjectForFrame creates a new script if
        there's isn't one for the given frame.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: pending evaluate script callbacks are stored with the wrong frame ID when using the default main frame
        https://bugs.webkit.org/show_bug.cgi?id=174622

        Reviewed by Brian Burg.

        The frameHandle argument is optional in evaluateJavaScriptFunction(), when not provided we pass 0 to the web
        process. The proxy gets the web page main frame when received frame ID is 0, but the given frameID is
        still used as key of m_webFramePendingEvaluateJavaScriptCallbacksMap and also passed to the javascript function
        as argument. I think r203442 was actually a workaround to this bug, making it even more hidden. Both
        m_webFrameScriptObjectMap and m_webFramePendingEvaluateJavaScriptCallbacksMap should never have 0 as a
        key, since they always use a frame ID, and the frame identifier counter starts at 1. This is causing test
        testShouldDetectPageLoadsWhileWaitingOnAnAsyncScriptAndReturnAnError to hang, because when the page is unloaded
        and didClearWindowObjectForFrame is called, we try to get the pending callbacks of frame 1, but they were stored
        as frame 0 so DidEvaluateJavaScriptFunction message is never sent to the UI process.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use always the actual frameID from the WebFrame
        we are using.
        * WebProcess/Automation/WebAutomationSessionProxy.h: Do not allow 0 as a key of
        m_webFramePendingEvaluateJavaScriptCallbacksMap and m_webFrameScriptObjectMap.

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Shared/API/APIArray.cpp:
        (API::Array::toStringVector):
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsArray):
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addProcess):
        (WebKit::WebUserContentControllerProxy::removeAllUserScripts):
        (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel presentWithParameters:resultListener:]):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

2017-07-18  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219610.

        This caused an api failure on all platforms for the test
        SnapshotImageLargeAsyncDecoding

        Reverted changeset:

        "Async image decoding for large images should be disabled
        after the first time a tile is painted"
        https://bugs.webkit.org/show_bug.cgi?id=174451
        http://trac.webkit.org/changeset/219610

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2017-07-18  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Async image decoding for large images should be disabled after the first time a tile is painted
        https://bugs.webkit.org/show_bug.cgi?id=174451

        Reviewed by Simon Fraser.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::paintContents):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

2017-07-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: link and partial link queries don't work if text link contains trailing or leading whitespaces
        https://bugs.webkit.org/show_bug.cgi?id=174499

        Reviewed by Brian Burg.

        This is causing test test_Driver_Can_Get_Link_By_Link_Test_Ignoring_Trailing_Whitespace to fail.

        * UIProcess/Automation/atoms/FindNodes.js:
        (switch): Use normalize-space() in in the links xpath expressions.

2017-07-17  Darin Adler  <darin@apple.com>

        Improve use of NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=174348

        Reviewed by Sam Weinig.

        * DatabaseProcess/DatabaseProcess.h: Removed unneeded include of
        NeverDestroyed.h.
        * NetworkProcess/cache/NetworkCacheKey.cpp: Ditto.

        * NetworkProcess/capture/NetworkCaptureManager.cpp: Moved include of
        NeverDestroyed.h here ...
        * NetworkProcess/capture/NetworkCaptureManager.h: ... from here.

        * PluginProcess/PluginProcess.cpp: Moved include of NeverDestroyed.h
        here ...
        * PluginProcess/PluginProcess.h: ... from here.

        * Shared/API/Cocoa/_WKRemoteObjectInterface.mm:
        (isContainerClass): Removed trivial inefficient use of
        LazyNeverDestroyed<HashSet> to check against two classes.
        Instead wrote out the boolean expression.

        * Shared/mac/SecItemShim.cpp: Removed unneeded include of
        NeverDestroyed.h.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize): Call
        installMemoryPressureHandler instead of WebMemoryPressureHandler::singleton.

        * UIProcess/Gamepad/UIGamepadProvider.h: Removed unneeded include
        of NeverDestroyed.h.

        * UIProcess/Plugins/PluginProcessManager.cpp: Moved include of
        NeverDestroyed.h here ...
        * UIProcess/Plugins/PluginProcessManager.h: ... from here.

        * UIProcess/WebInspectorProxy.cpp: Removed unneeded include
        of NeverDestroyed.h.

        * UIProcess/WebPageProxy.h: Added now-needed include of
        MediaPlaybackTargetContext.h.

        * UIProcess/WebPasteboardProxy.cpp: Moved include of
        NeverDestroyed.h here ...
        * UIProcess/WebPasteboardProxy.h: ... from here.

        * UIProcess/ios/WebMemoryPressureHandlerIOS.h: Removed the
        WebMemoryPressureHandler class from this header. Callers don't need to
        know if there is a class. They simply indicate when it's time to install
        the handler. Another way to put it is that this class had no functions
        other than the singleton function.

        * UIProcess/ios/WebMemoryPressureHandlerIOS.mm:
        (WebKit::installMemoryPressureHandler): Replaced the class with this function.
        It creates a dispatch source and then resumes it. To avoid having the source
        look like a leak, we keep it in a global variable.

        * WebProcess/Gamepad/WebGamepadProvider.h: Include Forward.h instead of
        NeverDestroyed.h.

        * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: Moved include of
        NeverDestroyed.h here ...
        * WebProcess/WebCoreSupport/WebPasteboardOverrides.h: ... from here.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.h: Removed unneeded
        include of NeverDestroyed.h.

2017-07-17  Timothy Horton  <timothy_horton@apple.com>

        Page using safe area constant properties jumps to correct layout after resize
        https://bugs.webkit.org/show_bug.cgi?id=174598
        <rdar://problem/33364275>

        Reviewed by Simon Fraser.

        Test: fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::dynamicViewportSizeUpdate):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        Plumb unobscured safe area insets through in the dynamicViewportSizeUpdate,
        like we do in VisibleContentRectUpdate (once again sad that these aren't
        more similar), so that it will be correct in the during-rotation snapshot,
        instead of only becoming correct in the first visible content rect update
        post-rotation.

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

        UserMediaPermissionRequestManagerProxy should not use WebCore::Timer
        https://bugs.webkit.org/show_bug.cgi?id=174599
        <rdar://problem/33362600>

        Reviewed by Tim Horton.

        UserMediaPermissionRequestManagerProxy should not use WebCore::Timer since it runs in the
        UIProcess. Switch to using RunLoop::Timer instead.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

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

        NETWORK_SESSION does not need didReceiveAuthenticationChallenge(uint64_t, uint64_t, const AuthenticationChallenge&)
        https://bugs.webkit.org/show_bug.cgi?id=174595

        Reviewed by Alex Christensen.

        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
        * Shared/Authentication/AuthenticationManager.h:

2017-07-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Web process uses too much memory when beginning a drag on a very large image
        https://bugs.webkit.org/show_bug.cgi?id=174585
        <rdar://problem/33302541>

        Reviewed by Tim Horton.

        Add IPC support for serializing/deserializing the size of an image written to the pasteboard. See WebCore
        ChangeLogs for more details.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardImage>::encode):
        (IPC::ArgumentCoder<PasteboardImage>::decode):

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed attempt to fix Mac cmake build

        * PlatformMac.cmake: Remove reference to file which is gone since r219025

2017-07-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Include most CMake modules from WebKitCommon.cmake
        https://bugs.webkit.org/show_bug.cgi?id=174546

        Reviewed by Konstantin Tokarev.

        * CMakeLists.txt:

2017-07-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Macros in WebKitMacros.cmake should be prefixed with WEBKIT_ namespace
        https://bugs.webkit.org/show_bug.cgi?id=174547

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2017-07-17  Alex Christensen  <achristensen@webkit.org>

        Modernize content extension code
        https://bugs.webkit.org/show_bug.cgi?id=174588

        Reviewed by Sam Weinig.

        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addContentRuleLists):

2017-07-17  Jeremy Jones  <jeremyj@apple.com>

        Add video fullscreen transition logging.
        https://bugs.webkit.org/show_bug.cgi?id=174474

        Reviewed by Jer Noble.

        No functional change. Just adds logging.

        * Platform/Logging.h:
        * WebProcess/cocoa/WebVideoFullscreenManager.mm:
        (WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
        (WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement):
        (WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):
        (WebKit::WebVideoFullscreenManager::didSetupFullscreen):
        (WebKit::WebVideoFullscreenManager::didEnterFullscreen):
        (WebKit::WebVideoFullscreenManager::didExitFullscreen):
        (WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
        (WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced):

2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Create targets before WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS is called
        https://bugs.webkit.org/show_bug.cgi?id=174557

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:

2017-07-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: link and partial link queries don't work if the link contains formatting tags
        https://bugs.webkit.org/show_bug.cgi?id=174498

        Reviewed by Brian Burg.

        So, for example, if we find links with text "Foo" and there's a link like <a href=""><bA>Foo</b></a> we fail
        with no such element error. This causes test test_Link_With_Formatting_Tags to fail.

        * UIProcess/Automation/atoms/FindNodes.js:
        (switch): Use descendant-or-self::text() instead of just text() in the links xpath expressions.

2017-07-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: FindNodes should throw an error in case of invalid strategy
        https://bugs.webkit.org/show_bug.cgi?id=174497

        Reviewed by Brian Burg.

        We are currently returning null or empty list. According to the spec in 12.2 Find Element and 12.3 Find
        Elements, step 4: "If location strategy is not present as a keyword in the table of location strategies, return
        error with error code invalid argument.".
        https://www.w3.org/TR/webdriver/#find-element.

        This is causing test test_should_throw_an_error_if_user_passes_in_invalid_by_when_find_elements to fail.

        * UIProcess/Automation/atoms/FindNodes.js:
        (switch): Throw an error in case of unknown strategy.
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Handle InvalidParameter exceptions.

2017-07-16  Brady Eidson  <beidson@apple.com>

        Crash when a WKHTTPCookieStore outlives its owning WKWebsiteDataStore.
        <rdar://problem/33341730> and https://bugs.webkit.org/show_bug.cgi?id=174574

        Reviewed by Tim Horton.

        Instead of holding a weak reference to its owning API::WebsiteDataStore,
        API::HTTPCookieStore can hold a strong reference to the owner's implementation
        WebKit::WebsiteDataStore.
        
        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::HTTPCookieStore):
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):
        (API::HTTPCookieStore::registerObserver):
        (API::HTTPCookieStore::unregisterObserver):
        (API::HTTPCookieStore::cookieManagerDestroyed):
        (API::HTTPCookieStore::registerForNewProcessPoolNotifications):
        * UIProcess/API/APIHTTPCookieStore.h:

2017-07-15  Brady Eidson  <beidson@apple.com>

        Make sure all CFHTTPCookieStorageRefs we create are scheduled.
        <rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513

        Reviewed by Tim Horton.

        Whenever we create a CFHTTPCookieStorage from identifying data it is unscheduled.
        We need to schedule it on the appropriate RunLoop.
        
        This patch also cleans up the creation of the identifying data itself.
        
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

        * Shared/cf/CookieStorageUtilsCF.h: Added.
        * Shared/cf/CookieStorageUtilsCF.mm: Added.
        (WebKit::cookieStorageFromIdentifyingData):
        (WebKit::identifyingDataFromCookieStorage):

        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setSharedHTTPCookieStorage):

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):

        * WebKit.xcodeproj/project.pbxproj:

        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

2017-07-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS WK2] Presenting an action sheet on an image map prevents selection UI from updating
        https://bugs.webkit.org/show_bug.cgi?id=174539
        <rdar://problem/33307395>

        Reviewed by Darin Adler.

        Small tweak to avoid presenting at the element rect or text rect if the interaction information failed to
        capture valid bounds for the element. We instead fall back to presenting at the touch location. This addresses
        problems when presenting the action sheet popover on image maps on iPad, where GetPositionInformation fails to
        capture correct data about for the <area>.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (presentationStyleForView):

2017-07-14  Jonathan Bedard  <jbedard@apple.com>

        Add iOS 11 SPI
        https://bugs.webkit.org/show_bug.cgi?id=174430
        <rdar://problem/33269288>

        Reviewed by Tim Horton.

        * Platform/spi/ios/UIKitSPI.h: Add drag-and-drop SPI for iOS 11.
        * UIProcess/ios/WKContentViewInteraction.mm: Move UIKit SPI to UIKitSPI.h.

2017-07-14  Jeff Miller  <jeffm@apple.com>

        -[WKWebProcessBundleParameters setParametersForKeyWithDictionary:] passing wrong parameters to -setParameter:forKey
        https://bugs.webkit.org/show_bug.cgi?id=174524

        Reviewed by Sam Weinig.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm:
        (-[WKWebProcessBundleParameters setParametersForKeyWithDictionary:]):
        Pass the dictionary key and value in the correct order.

2017-07-14  Brent Fulgham  <bfulgham@apple.com>

        Monitor directory for new statistics files after a delete operation
        https://bugs.webkit.org/show_bug.cgi?id=174521
        <rdar://problem/33322189>

        Reviewed by Chris Dumez.

        Create a FileMonitor to watch the data directory when the statistics file is
        deleted by an external process. If it sees the file get created externally, merge
        those data into the in-memory store.

        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): Added.
        (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics):
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:

2017-07-14  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219516.

        This caused an API failure on macOS.

        Reverted changeset:

        "Make sure all CFHTTPCookieStorageRefs we create are
        scheduled."
        https://bugs.webkit.org/show_bug.cgi?id=174513
        http://trac.webkit.org/changeset/219516

2017-07-14  Daniel Bates  <dabates@apple.com>

        REGRESSION (r219013): Compute source frame info for frameless document
        https://bugs.webkit.org/show_bug.cgi?id=174385
        <rdar://problem/33217736>

        Reviewed by Brady Eidson.

        Fixes an issue where we would crash in WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction()
        when computing the frame info for a now-frameless document. One way this can happen is when the frame
        that contains the document that initiated the navigation is removed from the page.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction): Check that we have a valid page ID before
        looking up the WebPage object corresponding to it.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Compute a FrameInfoData
        object from the source document directly as opposed to using WebFrame::info() as the latter requires
        that we have a valid WebCore frame and the source document may not have a frame.

2017-07-14  Jer Noble  <jer.noble@apple.com>

        Allow clients to override their own hardware media requirements where no fallback media exists.
        https://bugs.webkit.org/show_bug.cgi?id=174426
        <rdar://problem/32537704>

        Reviewed by Eric Carlson.

        Add a new WKWebViewConfiguration property, as well as a new WKPreferences function, both to control
        WebCore's new allowMediaContentTypesRequiringHardwareSupportAsFallback setting.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesGetAllowMediaContentTypesRequiringHardwareSupportAsFallback):
        (WKPreferencesSetAllowMediaContentTypesRequiringHardwareSupportAsFallback):
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setAllowMediaContentTypesRequiringHardwareSupportAsFallback:]):
        (-[WKWebViewConfiguration _allowMediaContentTypesRequiringHardwareSupportAsFallback]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-07-14  Chris Dumez  <cdumez@apple.com>

        Possible crash under NetworkSocketStream::didFailSocketStream()
        https://bugs.webkit.org/show_bug.cgi?id=174526
        <rdar://problem/32831441>

        Reviewed by Brent Fulgham.

        For robustness, initialize the SocketStreamHandleImpl after the other
        data members. We are passing |this| to the SocketStreamHandleImpl when
        constructing it so it is unsafe to have uninitialized data members
        at this point.

        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::NetworkSocketStream):
        * NetworkProcess/NetworkSocketStream.h:

2017-07-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Unclear distinction between WebKitHelpers and WebKitMacros
        https://bugs.webkit.org/show_bug.cgi?id=153189

        Reviewed by Antonio Gomes.

        New location for macros that are exclusively needed here.

        * CMakeLists.txt:

2017-07-14  Brady Eidson  <beidson@apple.com>

        Make sure all CFHTTPCookieStorageRefs we create are scheduled.
        <rdar://problem/33221110> and https://bugs.webkit.org/show_bug.cgi?id=174513

        Reviewed by Tim Horton.

        Whenever we create a CFHTTPCookieStorage from identifying data it is unscheduled.
        We need to schedule it on a RunLoop.
        
        This patch also cleans up the creation of the identifying data itself.
        
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        
        * Shared/cf/CookieStorageUtilsCF.cpp: Added.
        (WebKit::cookieStorageFromIdentifyingData):
        (WebKit::identifyingDataFromCookieStorage):
        * Shared/cf/CookieStorageUtilsCF.h: Added.
        
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setSharedHTTPCookieStorage):
        
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        
        * WebKit.xcodeproj/project.pbxproj:
        
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

2017-07-14  Chris Dumez  <cdumez@apple.com>

        Potential null-dereference under NetworkRTCProvider::resolvedName()
        https://bugs.webkit.org/show_bug.cgi?id=174507
        <rdar://problem/32597868>

        Reviewed by Youenn Fablet.

        NetworkRTCProvider::resolvedName() could do a null dereference of m_connection
        because m_connection is nullified in NetworkRTCProvider::close() but resolvers
        were only closed later on in the NetworkRTCProvider destructor.

        To address the issue, we now stop DNS resolvers earlier, in NetworkRTCProvider::close().
        Also fix unsafe modification of m_resolvers HashMap when iterating over it.

        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::~NetworkRTCProvider):
        (WebKit::NetworkRTCProvider::close):
        (WebKit::NetworkRTCProvider::Resolver::~Resolver):
        (WebKit::NetworkRTCProvider::stopResolver):

2017-07-14  Youenn Fablet  <youenn@apple.com>

        Report CoreAudioCaptureSource failure in case shared unit stops working properly
        https://bugs.webkit.org/show_bug.cgi?id=174494

        Reviewed by Eric Carlson.

        In case of capture failure, send a CaptureFailure message so that the
        correct behavior happens in the Web process.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::captureFailed):
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2017-07-13  Chris Dumez  <cdumez@apple.com>

        Better deal with changes to the ResourceLoadStatisticsStore file on disk
        https://bugs.webkit.org/show_bug.cgi?id=174487

        Reviewed by Brent Fulgham.

        Rename WebResourceLoadStatisticsStore's resetDataFromDecoder() to mergeWithDataFromDecoder()
        and update it so that it actual merges the data from the disk with the one we have in memory,
        instead of replacing it. This avoid data loss.

        We leverage the existing WebResourceLoadStatisticsStore::mergeStatistics() to merge the
        statistics.

        To faciliate merging the operating dates, they are now represented as OperatingDate objects
        instead of WallTime objects. OperatingDate only include date precision, no time information.
        As a result, the merge 2 vectors of OperatingDate objects, we can:
        1. Merge the 2 sorted vectors (using std::merge())
        2. Get rid of duplicates (easy because of date-level precision)
        3. Drop old dates until the vector has at most 30 items.

        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::refreshMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::OperatingDate::fromWallTime):
        (WebKit::OperatingDate::today):
        (WebKit::OperatingDate::secondsSinceEpoch):
        (WebKit::OperatingDate::operator==):
        (WebKit::OperatingDate::operator<):
        (WebKit::OperatingDate::operator<=):
        (WebKit::OperatingDate::OperatingDate):
        (WebKit::mergeOperatingDates):
        (WebKit::WebResourceLoadStatisticsStore::createEncoderFromData):
        (WebKit::WebResourceLoadStatisticsStore::mergeWithDataFromDecoder):
        (WebKit::WebResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
        (WebKit::WebResourceLoadStatisticsStore::hasStatisticsExpired):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-13  Dan Bernstein  <mitz@apple.com>

        Removed empty project directories left behind after the rename

        * WebKit2.xcodeproj: Removed.

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Fix the cMake builds (GTK and WPE.)
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

        * Scripts/generate-forwarding-headers.pl:
        (collectFrameworkHeaderPaths):
        (createForwardingHeadersForFramework):

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Rename WebKit2.xcodeproj to WebKit.xcodeproj.
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj: Renamed from Source/WebKit/WebKit2.xcodeproj/project.pbxproj.

2017-07-13  Matthew Hanson  <matthew_hanson@apple.com>

        Update tools and configurations after renaming Source/WebKit2 to Source/WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=174164
        rdar://problem/33137595

        Reviewed by Dan Bernstein.

        * PlatformGTK.cmake:
        * Shared/API/c/wpe/WebKit.h:

2017-07-13  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fix compiler warnings when building with GCC 7
        https://bugs.webkit.org/show_bug.cgi?id=174463

        Reviewed by Darin Adler.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::sendOutputMessage):

2017-07-13  Chris Dumez  <cdumez@apple.com>

        Moved filesystem code out of WebResourceLoadStatisticsStore class
        https://bugs.webkit.org/show_bug.cgi?id=174435

        Reviewed by Brent Fulgham.

        Moved filesystem code out of WebResourceLoadStatisticsStore class and into
        a new ResourceLoadStatisticsPersistentStorage class to decrease complexity.

        * CMakeLists.txt:
        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp: Added.
        (WebKit::hasFileChangedSince):
        (WebKit::createDecoderForFile):
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::storageDirectoryPath):
        (WebKit::ResourceLoadStatisticsPersistentStorage::resourceLogFilePath):
        (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::stopMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::refreshMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        (WebKit::ResourceLoadStatisticsPersistentStorage::clear):
        (WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously):
        (WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup):
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h: Added.
        * UIProcess/Storage/ios/ResourceLoadStatisticsPersistentStorageIOS.mm: Added.
        (WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::resetDataFromDecoder):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-07-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r219453.

        Seems to cause some crashes on the bots

        Reverted changeset:

        "Moved filesystem code out of WebResourceLoadStatisticsStore
        class"
        https://bugs.webkit.org/show_bug.cgi?id=174435
        http://trac.webkit.org/changeset/219453

2017-07-13  Jeremy Jones  <jeremyj@apple.com>

        Fix style. Use #pragma once in VideoFullscreen and PlaybackSession headers.
        https://bugs.webkit.org/show_bug.cgi?id=174448

        Reviewed by Eric Carlson.

        No behavior change.

        * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h:
        * WebProcess/cocoa/WebVideoFullscreenManager.h:

2017-07-13  Jeremy Jones  <jeremyj@apple.com>

        Style fix. Replace strongThis with protectedThis.
        https://bugs.webkit.org/show_bug.cgi?id=174444

        Reviewed by Eric Carlson.

        Rename, no behavior change.

        * WebProcess/cocoa/WebVideoFullscreenManager.mm:
        (WebKit::WebVideoFullscreenManager::didSetupFullscreen):
        (WebKit::WebVideoFullscreenManager::didEnterFullscreen):
        (WebKit::WebVideoFullscreenManager::didExitFullscreen):
        (WebKit::WebVideoFullscreenManager::didCleanupFullscreen):

2017-07-13  Chris Dumez  <cdumez@apple.com>

        Moved filesystem code out of WebResourceLoadStatisticsStore class
        https://bugs.webkit.org/show_bug.cgi?id=174435

        Reviewed by Brent Fulgham.

        Moved filesystem code out of WebResourceLoadStatisticsStore class and into
        a new ResourceLoadStatisticsPersistentStorage class to decrease complexity.

        * CMakeLists.txt:
        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp: Added.
        (WebKit::hasFileChangedSince):
        (WebKit::createDecoderForFile):
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::storageDirectoryPath):
        (WebKit::ResourceLoadStatisticsPersistentStorage::resourceLogFilePath):
        (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::stopMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::refreshMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        (WebKit::ResourceLoadStatisticsPersistentStorage::clear):
        (WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously):
        (WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup):
        * UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h: Added.
        * UIProcess/Storage/ios/ResourceLoadStatisticsPersistentStorageIOS.mm: Added.
        (WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::resetDataFromDecoder):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-07-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: evaluateJavaScriptFunction should start the callback timeout after the function is applied
        https://bugs.webkit.org/show_bug.cgi?id=174421

        Reviewed by Brian Burg.

        This is causing selenium test testShouldNotTimeoutIfScriptCallsbackInsideAZeroTimeout to fail, because
        JavaScriptTimeout error is generated unexpectedly. When no script timeout is specified, 0 is used by default,
        which means we do a setTimeout with 0 and then the script does another setTimeout with 0, but ours is dispatched
        before and reportTimeoutError is called. We should start our timeout after applying the function, and only if
        the result hasn't been reported yet.

        * WebProcess/Automation/WebAutomationSessionProxy.js:
        (let.AutomationSessionProxy.prototype.evaluateJavaScriptFunction):

2017-07-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Add SPI to enable, disable, or follow default behavior for DnD on a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=174440
        <rdar://problem/33272627>

        Reviewed by Beth Dakin.

        Adds a new _dragInteractionPolicy property to WKWebView, which an internal client may use to always allow
        dragging out of the web view (_WKDragInteractionPolicyAlwaysEnable), never allow
        (_WKDragInteractionPolicyAlwaysDisable) or just use the default device-dependent behavior
        (_WKDragInteractionPolicyDefault).

        Also removes an extraneous class from WKContentViewInteraction.mm that is no longer used anywhere.

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

        Set _dragInteractionPolicy to _WKDragInteractionPolicyDefault upon initialization.

        (-[WKWebView _dragInteractionPolicy]):
        (-[WKWebView _setDragInteractionPolicy:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (shouldEnableDragInteractionForPolicy):
        (-[WKContentView _didChangeDragInteractionPolicy]):

        Called by the WKWebView when its _dragInteractionPolicy changes. The content view updates its
        UIDragInteraction's -enabled property here in response.

        (-[WKContentView setupDataInteractionDelegates]):

2017-07-12  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Async image decoding for large images should be disabled by default
        https://bugs.webkit.org/show_bug.cgi?id=174432

        Reviewed by Simon Fraser.

        -- Replace every reference to GraphicsLayerPaintFlags::Snapshotting by
           GraphicsLayerPaintFlags::None and every GraphicsLayerPaintFlags::None
           by AllowAsyncImageDecoding.
        -- Replace setting the bit PaintBehaviorSnapshotting in an existing PaintBehavoir 
           by resetting the bit PaintBehaviorAllowAsyncImageDecoding.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::imageForRect):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):

2017-07-12  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] a capture source failure should end the MediaStreamTrack
        https://bugs.webkit.org/show_bug.cgi?id=174375

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged): Consolidate start/end.
        (WebKit::UserMediaPermissionRequestManagerProxy::startedCaptureSession): Deleted.
        (WebKit::UserMediaPermissionRequestManagerProxy::endedCaptureSession): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isPlayingMediaDidChange): Call captureStateChanged if the capture 
        state changes. Consider interrupted flags.

2017-07-12  Daniel Bates  <dabates@apple.com>

        NavigationAction should track whether the navigation was initiated by the main frame
        https://bugs.webkit.org/show_bug.cgi?id=174386
        <rdar://problem/33245267>

        Reviewed by Brady Eidson.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab): Pass whether the load was initiated by the main frame
        when instantiating the NavigationAction.

2017-07-12  Daniel Bates  <dabates@apple.com>

        Rename NavigationInitiatedByMainFrame to InitiatedByMainFrame
        https://bugs.webkit.org/show_bug.cgi?id=174427

        Rubber-stamped by Brady Eidson.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::loadURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchCreatePage):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab):

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219401.

        This revision rolled out the previous patch, but after talking
        with reviewer, a rebaseline is what was needed.Rolling back in
        before rebaseline.

        Reverted changeset:

        "Unreviewed, rolling out r219379."
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219401

2017-07-12  Daniel Bates  <dabates@apple.com>

        Update description of Secure Contexts experimental flag
        https://bugs.webkit.org/show_bug.cgi?id=174401

        Reviewed by Simon Fraser.

        Change the description of the Secure Contexts experimental flag from "isSecureContext attribute"
        to "Secure Contexts API".

        * Shared/WebPreferencesDefinitions.h:

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219379.

        This revision caused a consistent failure in the test
        fast/dom/Window/property-access-on-cached-window-after-frame-
        removed.html.

        Reverted changeset:

        "Remove NAVIGATOR_HWCONCURRENCY"
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219379

2017-07-12  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Use libepoxy
        https://bugs.webkit.org/show_bug.cgi?id=172104

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake: Drop the EGL_INCLUDE_DIRS compilation flags.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        Include <epoxy/gl.h> when compiling with libepoxy usage enabled.

2017-07-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: upstream safaridriver's JavaScript atom implementations
        https://bugs.webkit.org/show_bug.cgi?id=172060
        <rdar://problem/32168187>

        Reviewed by Brian Burg.

        * UIProcess/Automation/atoms/ElementAttribute.js: Added.
        * UIProcess/Automation/atoms/ElementDisplayed.js: Added.
        * UIProcess/Automation/atoms/FindNodes.js: Added.
        * UIProcess/Automation/atoms/FormElementClear.js: Added.
        * UIProcess/Automation/atoms/FormSubmit.js: Added.

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2017-07-11  Ansh Shukla  <ansh_shukla@apple.com>

        WKWindowFeatures needs to expose scrollbar, fullscreen, and dialog configuration properties
        https://bugs.webkit.org/show_bug.cgi?id=174239

        Reviewed by Brady Eidson.

        Add a new private header to expose getters for window feature properties already available
        in the TFB APIWindowFeatures class. These properties are necessary for Safari to adopt more
        modern API.

        * UIProcess/API/Cocoa/WKWindowFeatures.mm:
        (-[WKWindowFeatures _locationBarVisibility]):
        (-[WKWindowFeatures _scrollbarsVisibility]):
        (-[WKWindowFeatures _fullscreenDisplay]):
        (-[WKWindowFeatures _dialogDisplay]):
        * UIProcess/API/Cocoa/WKWindowFeaturesInternal.h: Expose some window features as read-only
        properties.
        * UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-07-11  Chris Dumez  <cdumez@apple.com>

        Avoid duplicating default parameter values in [WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]
        https://bugs.webkit.org/show_bug.cgi?id=174402

        Reviewed by Brent Fulgham.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies):
        (WebKit::WebResourceLoadStatisticsStore::hasStatisticsExpired):
        (WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
        (WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
        (WebKit::WebResourceLoadStatisticsStore::pruneStatisticsIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-11  Dean Jackson  <dino@apple.com>

        Rolling out r219372.

        * Configurations/FeatureDefines.xcconfig:

2017-07-11  Dean Jackson  <dino@apple.com>

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2017-07-11  Dean Jackson  <dino@apple.com>

        Viewport fit experimental feature should be always on by default
        https://bugs.webkit.org/show_bug.cgi?id=174398
        <rdar://problem/33248920>

        Reviewed by Simon Fraser.

        Even though this is experimental, it should be enabled by default, and
        not follow the value of DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.

        * Shared/WebPreferencesDefinitions.h:

2017-07-11  Adrian Perez de Castro  <aperez@igalia.com>

        Fix typo: ContentRuleListStore::nonLegacyDdefaultStore()
        https://bugs.webkit.org/show_bug.cgi?id=174387

        Reviewed by Michael Catanzaro.

        Rename nonLegacyDdefaultStore() to nonLegacyDefaultStore().

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::ContentRuleListStore::nonLegacyDefaultStore):
        (API::ContentRuleListStore::defaultStore):
        * UIProcess/API/APIContentRuleListStore.h:

2017-07-11  Chris Dumez  <cdumez@apple.com>

        Simplify primary domain lambda captures in WebResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174381

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::isolatedPrimaryDomain):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        (WebKit::primaryDomain): Deleted.

2017-07-11  Timothy Hatcher  <timothy@hatcher.name>

        Fix a build failure in WebDragClient when !PLATFORM(COCOA) && !PLATFORM(GTK).
        https://bugs.webkit.org/show_bug.cgi?id=174372

        Reviewed by Beth Dakin.

        * WebProcess/WebCoreSupport/WebDragClient.cpp:
        (WebKit::WebDragClient::didConcludeEditDrag): Added empty method.

2017-07-11  Brent Fulgham  <bfulgham@apple.com>

        Reset cookie partitioning state after network process crashes
        https://bugs.webkit.org/show_bug.cgi?id=174306
        <rdar://problem/33171605>

        Reviewed by Chris Dumez.

        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler): Move cookie
        partioning state code to helper function.
        (WebKit::ResourceLoadStatisticsStore::resetPartitionCookiesState): Added.
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess): Inform the statistics store that
        the network process crashed.
        (WebKit::WebProcessPool::terminateNetworkProcess): Mark network process as crashed.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::networkProcessDidCrash): Reset the cookie
        partitioning state after a crash.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::notifyResourceLoadStatisticsNetworkProcessDidCrash): Relay
        information to the statistics store.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-07-11  Timothy Hatcher  <timothy@hatcher.name>

        Fix broken build when !ENABLE(INDEXED_DATABASE)
        https://bugs.webkit.org/show_bug.cgi?id=174370

        Reviewed by Alex Christensen.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::pageAddedToProcess):

2017-07-11  Youenn Fablet  <youenn@apple.com>

        Changing the web page muted state for playing audio should not disable other tabs capture
        https://bugs.webkit.org/show_bug.cgi?id=174349

        Unreviewed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::activateMediaStreamCaptureInPage): Fixes non MEDIA_STREAM builds.

2017-07-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Address post-review feedback after http://trac.webkit.org/r219310
        https://bugs.webkit.org/show_bug.cgi?id=174300
        <rdar://problem/33030639>

        Reviewed by Simon Fraser.

        Removes plumbing introduced in r219310 for telling WKContentView when the user has finished panning or zooming.
        This was previously used to reset allowing asynchronous touch event after preventing the web touch events
        gesture recognizer from firing.

        However, a far simpler (and much less fragile) solution is to just set _canSendTouchEventsAsynchronously to NO
        at the beginning of the gesture, before the first `touchstart` event is dispatched. This way, we always ensure
        that _canSendTouchEventsAsynchronously is NO when beginning to process a touch event. This approach is correct
        because the only place where we query _canSendTouchEventsAsynchronously is in -_webTouchEventsRecognized:, where
        (when we are beginning a new gesture) we are guaranteed that -gestureRecognizer:shouldIgnoreWebTouchWithEvent:
        has already been called and _canSendTouchEventsAsynchronously is NO.

        Confirmed that the LayoutTests added in r219310 still pass.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewDidEndDragging:willDecelerate:]):
        (-[WKWebView scrollViewDidEndZooming:withView:atScale:]):
        * UIProcess/PageClient.h:
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidEndPanGesture): Deleted.
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewDidEndPanGesture): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::overflowScrollViewDidEndPanGesture): Deleted.
        * UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndPanGesture): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizer:shouldIgnoreWebTouchWithEvent:]):
        (-[WKContentView scrollViewDidEndPanOrPinchGesture]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::overflowScrollViewDidEndPanGesture): Deleted.

2017-07-11  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed clean-up after r219323

        Simplify algorithm slightly based on a suggestion Chris Dumez made in the review.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::pruneResources): Don't create a second variable to track the pruning operation.

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

        SharedBuffer::size should return a size_t
        https://bugs.webkit.org/show_bug.cgi?id=174328

        Reviewed by Andreas Kling.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):

2017-07-11  Youenn Fablet  <youenn@apple.com>

        We should do ICE candidate filtering at the Document level
        https://bugs.webkit.org/show_bug.cgi?id=173861
        <rdar://problem/33122058>

        Reviewed by Eric Carlson.

        Removing ICE candidate filtering handling at UIProcess level.
        ICE candidate filtering is now disabled at UserMediaRequest level.
        WebPage forwards the ICE candidate filtering option to the page so as to set
        the default option correctly for every document of the page.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream):
        (WebKit::UserMediaProcessManager::endedCaptureSession):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::disableICECandidateFiltering):
        (WebKit::WebPage::enableICECandidateFiltering):

2017-07-11  Youenn Fablet  <youenn@apple.com>

        Changing the web page muted state for playing audio should not disable other tabs capture
        https://bugs.webkit.org/show_bug.cgi?id=174349
        rdar://problem/33223988

        Reviewed by Eric Carlson.

        Make sure to mute capturing streams of any other tab if the current tab will start capturing or will unmute existing capturing streams.
        Manually tested by having a tab doing capture and another tab playing a video.
        Muting or unmuting the tab playing video should not change the capture tab.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::activateMediaStreamCaptureInPage):
        (WebKit::WebPageProxy::setMuted):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::activateMediaStreamCaptureInPage):

2017-07-11  Youenn Fablet  <youenn@apple.com>

        NetworkProcess should close listening WebRTC sockets when being suspended
        https://bugs.webkit.org/show_bug.cgi?id=174270
        rdar://problem/33139844

        Reviewed by Chris Dumez.

        To prevent potential spinning of the NetworkProcess, NetworkProcess will now close listening sockets when being notified that it will be suspended.
        When the network process is being suspended, it will stop creating listening sockets, until it resumes.
        Future additional efforts might be to improve select/cancel so that we can stop listening sockets at resume time,
        or to reimplement part of the stack using CFStream.

        Tested through manual testing by going to a website doing WebRTC, homing out so that the network process is suspended and reopening Safari.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cleanupForSuspension):
        Proxying call to clean for suspension to rtc provider so that it will
        close listening sockets.
        (WebKit::NetworkConnectionToWebProcess::resumeFromSuspension): Authorizing back listening sockets.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::cleanupForSuspension):
        Clean-up is done asynchronously as it can happen in background threads.
        Hence why passing a callback as parameter.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::notifyProcessReadyToSuspend): Helper routine
        to notify UI process that network process clean up is done.
        (WebKit::TaskCounter::TaskCounter): Helper class to call notifyProcessReadyToSuspend when sded.
        (WebKit::TaskCounter::~TaskCounter):
        (WebKit::NetworkProcess::actualPrepareToSuspend): Doing the clean-up for each connection that needs it.
        Making sure to notify UI process of clean-up being completed once all connections are cleaned.
        (WebKit::NetworkProcess::processWillSuspendImminently):
        (WebKit::NetworkProcess::prepareToSuspend):
        (WebKit::NetworkProcess::processDidResume): Reenable listening sockets.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
        (WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):
        * NetworkProcess/webrtc/LibWebRTCSocketClient.h: Adding type getter and making close public.
        Used by NetworkRTCProvider to identifiy listening sockets and close them.
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::closeListeningSockets): We close the webrtc socket
        and we also notify the Web Process that the socket is closed so that it can take actions to recreate some if needed.
        (WebKit::NetworkRTCProvider::finishClosingListeningSockets):
        * NetworkProcess/webrtc/NetworkRTCProvider.h:
        (WebKit::NetworkRTCProvider::authorizeListeningSockets): Authorize creation of listening sockets.

2017-07-10  Brent Fulgham  <bfulgham@apple.com>

        Resource Load Statistics: Prune statistics in orders of importance
        https://bugs.webkit.org/show_bug.cgi?id=174215
        <rdar://problem/33164403>

        Unreviewed test correction.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::pruneResources): The revised algorithm did not update the remaining
        count to be pruned, causing a test failure.

2017-07-10  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Prune statistics in orders of importance
        https://bugs.webkit.org/show_bug.cgi?id=174215
        <rdar://problem/33164403>

        Reviewed by Chris Dumez.

        New functionality. Prunes statistics in this order:
        1. Non-prevalent resources without user interaction.
        2. Prevalent resources without user interaction.
        3. Non-prevalent resources with user interaction.
        4. Prevalent resources with user interaction.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
            Added timestamp field lastSeen.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetLastSeen:forHost:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetMaxStatisticsEntries:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetPruneEntriesDownTo:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):
            Test infrastructure.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::setMaxStatisticsEntries):
            Test infrastructure.
        (WebKit::ResourceLoadStatisticsStore::setPruneEntriesDownTo):
            Test infrastructure.
        (WebKit::sortAndPrune):
            Convenience function.
        (WebKit::ResourceLoadStatisticsStore::pruneStatisticsIfNeeded):
            The new pruning function.
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
            Now calls ResourceLoadStatisticsStore::pruneStatisticsIfNeeded().
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
            Test infrastructure.
        (WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
            Test infrastructure.
        (WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
            Test infrastructure.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-10  Dean Jackson  <dino@apple.com>

        const() experimental feature should always be on by default
        https://bugs.webkit.org/show_bug.cgi?id=174341
        <rdar://problem/33228603>

        Reviewed by Simon Fraser.

        Even though this is experimental, it should be enabled by default, and
        not follow the value of DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.

        * Shared/WebPreferencesDefinitions.h:

2017-07-10  Chris Dumez  <cdumez@apple.com>

        [iOS] _didCommitLayerTree should avoid calling [scrollView setZoomScale] unnecessarily
        https://bugs.webkit.org/show_bug.cgi?id=174326
        <rdar://problem/33150490>

        Reviewed by Simon Fraser.

        Only call [scrollView setZoomScale] if the new zoom scale is actually different to
        avoid doing unnecessary work in UIKit.

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

2017-07-10  Chris Dumez  <cdumez@apple.com>

        Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174203

        Reviewed by Brent Fulgham.

        Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore. The 2 classes
        have a similar purpose and there is no clean separation between the 2. It makes more
        sense to have a single store class for resource load statistics.

        If we want to simplify the WebResourceLoadStatisticsStore class, I think it'd make
        more sense to split the file system I/O code out. This code adds quite a bit of
        complexity.

        * CMakeLists.txt:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp: Removed.
        * UIProcess/Storage/ResourceLoadStatisticsStore.h: Removed.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
        (WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsStore::ensureResourceStatisticsForPrimaryDomain):
        (WebKit::WebResourceLoadStatisticsStore::createEncoderFromData):
        (WebKit::WebResourceLoadStatisticsStore::populateFromDecoder):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::mergeStatistics):
        (WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        (WebKit::WebResourceLoadStatisticsStore::processStatistics):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUnexpiredRecentUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        (WebKit::WebResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
        (WebKit::WebResourceLoadStatisticsStore::hasStatisticsExpired):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::sortedPrevalentResourceTelemetry):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        * UIProcess/WebResourceLoadStatisticsTelemetry.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        * WebKit2.xcodeproj/project.pbxproj:

2017-07-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Ignore touch events that interrupt platform-driven momentum scrolling
        https://bugs.webkit.org/show_bug.cgi?id=174300
        <rdar://problem/33030639>

        Reviewed by Simon Fraser.

        Adds support for immediately failing WKContentView's UIWebTouchEventsGestureRecognizer if any touch interrupts
        scroll view deceleration. Covered by 3 new LayoutTests (see Source/WebCore/ChangeLog).

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewDidEndDragging:willDecelerate:]):
        (-[WKWebView scrollViewDidEndZooming:withView:atScale:]):
        * UIProcess/PageClient.h:
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidEndPanGesture):
        * UIProcess/Scrolling/RemoteScrollingTree.h:
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewDidEndPanGesture):

        Adds plumbing in the UI process to alert the WKContentView when scroll view dragging has ended in an overflow
        momentum scrolling region (tracked by an overflow scrolling tree node). This parallels UI process plumbing for
        ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewWillStartPanGesture.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::overflowScrollViewDidEndPanGesture):
        * UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndPanGesture):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView scrollViewDidEndPanOrPinchGesture]):

        When the dragging phase of a scroll gesture ends, ensure that _canSendTouchEventsAsynchronously is reset to NO.
        When touches are not being prevented, this flag is set to YES in -scrollViewWillStartPanOrPinchGesture: and
        normally reset to NO in -_webTouchEventsRecognized: after all touch points have been released. However, in the
        case where we've prematurely failed the web touch events gesture recognizer after -touchesBegan:,
        -_webTouchEventsRecognized: will not be called again in a state where all touches have been released. Thus, we
        also need to bookend the place where we begin allowing async touch event dispatch in
        -scrollViewWillStartPanOrPinchGesture by disallowing async touch event dispatch in
        -scrollViewDidEndPanOrPinchGesture.

        This has no impact in the normal case where the user scrolls without momentum, since
        -scrollViewDidEndPanOrPinchGesture will fire after async touch events have already been disallowed in
        -_webTouchEventsRecognized:, and in the case where the page prevents default on touches, scrolling doesn't
        happen anyways, so neither scrollViewWillStartPanOrPinchGesture nor scrollViewDidEndPanOrPinchGesture will be
        invoked.

        (-[WKContentView gestureRecognizer:shouldIgnoreWebTouchWithEvent:]):

        Implements a new SPI hook in UIKit. This serves an identical purpose as -shouldIgnoreWebTouch, but additionally
        passes the triggering UIEvent, as well as the gesture recognizer itself (following standard convention for
        Objective C delegate methods). Here, we return YES in the case where one or more of the touches recognized by
        the gesture is currently interrupting scroll deceleration.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::overflowScrollViewDidEndPanGesture):

2017-07-10  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Allow access to com.apple.cfnetwork.cfnetworkagent in the Network Process
        https://bugs.webkit.org/show_bug.cgi?id=174320
        <rdar://problem/33191856>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

2017-07-10  Megan Gardner  <megan_gardner@apple.com>

        Add location to NavigationActionData
        https://bugs.webkit.org/show_bug.cgi?id=174233
        <rdar://problem/29165518>

        Reviewed by Simon Fraser.
        
        Add the root view location of a tap to a NavigationAction to vend to Safari.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction description]):
        (-[WKNavigationAction _clickLocationInRootViewCoordinates]):
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
        (WebKit::clickLocationInRootViewCoordinatesForMouseEvent):
        (WebKit::InjectedBundleNavigationAction::clickLocationInRootViewCoordinatesForNavigationAction):
        (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
        (WebKit::InjectedBundleNavigationAction::clickLocationInRootViewCoordinates):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2017-07-03  Brian Burg  <bburg@apple.com>

        Web Replay: remove some unused code
        https://bugs.webkit.org/show_bug.cgi?id=173903

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::tryClose):
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::stopLoadingFrame):
        (WebKit::WebPage::stopLoading):
        (WebKit::WebPage::reload):
        (WebKit::WebPage::contextMenuAtPointInWindow):
        (WebKit::handleContextMenuEvent):
        (WebKit::handleMouseEvent):
        (WebKit::handleWheelEvent):
        (WebKit::handleKeyEvent):
        (WebKit::WebPage::scroll):
        (WebKit::WebPage::logicalScroll):

2017-07-10  Chris Dumez  <cdumez@apple.com>

        Further WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore clean up
        https://bugs.webkit.org/show_bug.cgi?id=174301

        Reviewed by Brent Fulgham.

        General clean up and various simplifications / optimizations to WebResourceLoadStatisticsStore
        and ResourceLoadStatisticsStore classes.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::create):
        (WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore):
        (WebKit::ResourceLoadStatisticsStore::hasHadRecentUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
        (WebKit::ResourceLoadStatisticsStore::populateFromDecoder):
        (WebKit::ResourceLoadStatisticsStore::clearInMemory):
        (WebKit::ResourceLoadStatisticsStore::mergeStatistics):
        (WebKit::ResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::ResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        (WebKit::ResourceLoadStatisticsStore::processStatistics):
        (WebKit::ResourceLoadStatisticsStore::hasHadUnexpiredRecentUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
        (WebKit::WebResourceLoadStatisticsStore::resourceLogFilePath):
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
        (WebKit::WebResourceLoadStatisticsStore::scheduleOrWriteStoreToDisk):
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
        (WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
        (WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup):
        (WebKit::WebResourceLoadStatisticsStore::createDecoderFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::setDataRecordsBeingRemoved):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::sortedPrevalentResourceTelemetry):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-07-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Remove WebKitSoupCookieJarSqlite
        https://bugs.webkit.org/show_bug.cgi?id=174310

        Reviewed by Carlos Garcia Campos.

        It seems WebKitSoupCookieJarSqlite uses exactly the same database format as the upstream
        SoupCookieJarDb class. WebKitSoupCookieJarSqlite is a copy of SoupCookieJarSqlite that uses
        WebCore's SQLite wrapper and WTF stuff. WebKitSoupCookieJarSqlite exists only because
        SoupCookieJarDb is relatively new, and the older SoupCookieJarSqlite class existed only in
        libsoup-gnome rather than libsoup proper. The advantage of continuing to use our
        WebKitSoupCookieJarSqlite class, besides that we already know it works, is that it utilizes
        the same SQLiteDatabase class that is used elsewhere in WebKit. But that's not really any
        reason to keep the class around, when SoupCookieJarDb does exactly the same thing. It was
        introduced in libsoup 2.42 and that is already our minimum required version, so we can
        switch now.

        This passes a quick sanity-check of Epiphany's cookies dialog and also TestCookieManager.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage):
        * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: Removed.
        * WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.h: Removed.

2017-07-10  Myles C. Maxfield  <mmaxfield@apple.com>

        REGRESSION(r213590): UI process updates the visible content rects more often than it did in iOS 10
        https://bugs.webkit.org/show_bug.cgi?id=174282
        <rdar://problem/33144344>

        Reviewed by Simon Fraser.

        In r213590, we accidentally refactored -[WKWebView _didCommitLayerTree:] to call _scheduleVisibleContentRectUpdate
        more often. Instead, this should be triggered from inside the "if" statements. 

        No tests because there is no behavior change. Performance change is tested in MotionMark.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _isShowingVideoPictureInPicture]):
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView goBack]):
        (-[WKWebView _didCommitLayerTree:]):
        (-[WKWebView _restorePageStateToUnobscuredCenter:scale:]):
        (-[WKWebView _zoomToRect:withOrigin:fitEntireRect:minimumScale:maximumScale:minimumScrollDistance:]):
        (-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
        (-[WKWebView scrollViewDidScroll:]):
        (-[WKWebView _visibleContentRect]):
        (-[WKWebView _frameOrBoundsChanged]):
        (-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
        (-[WKWebView _updateVisibleContentRects]):
        (-[WKWebView _navigationGestureDidBegin]):
        (-[WKWebView _reloadWithoutContentBlockers]):
        (-[WKWebView _reloadExpiredOnly]):
        (-[WKWebView _setObscuredInsets:]):
        (-[WKWebView _setUnobscuredSafeAreaInsets:]):
        (-[WKWebView _endAnimatedResize]):
        (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
        (-[WKWebView _clearOverrideLayoutParameters]):
        (-[WKWebView _requestActivatedElementAtPosition:completionBlock:]):
        (-[WKWebView _propertiesOfLayerWithID:]):

2017-07-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] SoupCookieJar is never released (resulting in sqlite temp files lying around)
        https://bugs.webkit.org/show_bug.cgi?id=166029

        Reviewed by Michael Catanzaro.

        Clear the SoupNetworkSession and cookie storage after the main loop quits.

        * NetworkProcess/soup/NetworkProcessMainSoup.cpp:
        (WebKit::NetworkProcessMainUnix):

2017-07-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Action sheets for links fail to present in WebKit2 PDF view
        https://bugs.webkit.org/show_bug.cgi?id=174307
        <rdar://problem/31412128>

        Reviewed by Tim Horton.

        Currently, presenting an action sheet for a link always uses the WKActionSheetPresentAtClosestIndicatorRect
        codepath, which requires text indicator data for the link. However, when showing an action sheet for a link via
        WKPDFView, a text indicator for the link is not included, so the popover rect ends up being an empty rect at the
        origin, which causes us to bail from presenting the popover.

        To address this, we tweak our heuristic for determining which action sheet presentation style to use, so that we
        only use the closest indicator rect for a link if the text indicator data is also present (otherwise, we fall
        back to using the element rect). All other behavior is the same.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showImageSheet]):
        (presentationStyleForView):

        Refactor _shouldPresentAtTouchLocationForElementRect into presentationStyleForView, a static function that
        returns a WKActionSheetPresentationStyle.

        (-[WKActionSheetAssistant showLinkSheet]):
        (-[WKActionSheetAssistant _shouldPresentAtTouchLocationForElementRect:]): Deleted.

2017-07-09  Brady Eidson  <beidson@apple.com>

        Remove some obsolete WebKitVersionChecks.
        https://bugs.webkit.org/show_bug.cgi?id=174294

        Reviewed by Dan Bernstein.

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

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

        Simplify WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174290

        Reviewed by Brent Fulgham.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsProcessStatisticsAndDataRecords]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsSubmitTelemetry]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        Rename a couple of functions in the Cocoa SPI for clarity and to match the name
        of their internal implementation.

        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::create):
        (WebKit::ResourceLoadStatisticsStore::ensureResourceStatisticsForPrimaryDomain):
        Stylistic changes.

        (WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
        Make const.

        (WebKit::ResourceLoadStatisticsStore::readDataFromDecoder):
        Use HashMap::add() instead of HashMap::set(). There is not supposed to have any duplicate
        keys so add() is sufficient and more efficient.

        (WebKit::ResourceLoadStatisticsStore::clearInMemoryAndPersistent): Removed.
        clearInMemoryAndPersistent() was only called from WebResourceLoadStatisticsStore and
        the m_deletePersistentStoreHandler / m_grandfatherExistingWebsiteDataHandler were both
        set by the WebResourceLoadStatisticsStore as well. Therefore, we don't really need this
        function, WebResourceLoadStatisticsStore now calls ResourceLoadStatisticsStore::clearInMemory()
        instead and takes care of doing what the m_deletePersistentStoreHandler /
        m_grandfatherExistingWebsiteDataHandler handlers were doing on its side.

        (WebKit::ResourceLoadStatisticsStore::mergeStatistics):
        Pass Vector as rvalue reference, as a preparation for a future optimization. Added FIXME
        comment about the optimization.

        (WebKit::ResourceLoadStatisticsStore::setNotificationCallback): Removed.
        (WebKit::ResourceLoadStatisticsStore::setGrandfatherExistingWebsiteDataCallback): Removed.
        (WebKit::ResourceLoadStatisticsStore::setDeletePersistentStoreCallback): Removed.
        (WebKit::ResourceLoadStatisticsStore::setFireTelemetryCallback): Removed.
        Drop those callback setters. WebResourceLoadStatisticsStore is the only client of
        ResourceLoadStatisticsStore and those callbacks were always called as a result of
        an operation requested by the WebResourceLoadStatisticsStore. Therefore, those are
        not needed. WebResourceLoadStatisticsStore can take care of doing what those
        callbacks were doing on its side.

        (WebKit::ResourceLoadStatisticsStore::processStatistics):
        Pass parameter by const reference since we clearly do not intend to transfer ownership of it.

        (WebKit::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        (WebKit::ResourceLoadStatisticsStore::updateStatisticsForRemovedDataRecords):
        (WebKit::ResourceLoadStatisticsStore::handleFreshStartWithEmptyOrNoStore):
        Stylistic changes.

        (WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords): Removed.
        (WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved): Removed.
        (WebKit::ResourceLoadStatisticsStore::dataRecordsWereRemoved): Removed.
        Those were moved to WebResourceLoadStatisticsStore since they do not require
        any access to the statistics, and are only used by WebResourceLoadStatisticsStore.

        * UIProcess/Storage/ResourceLoadStatisticsStore.h:

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        Store registering most callbacks on the coreStore. Instead, the logic of those
        callbacks is now inlined in the few methods in WebResourceLoadStatisticsStore
        that were causing these callbacks to be called.

        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        Access some methods on WebResourceLoadStatisticsStore instead of the coreStore
        since those were moved.

        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        Drop unnecessary mutable for lambda.

        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        Pass parameter as rvalue reference as a preparation for a future optimization.

        (WebKit::WebResourceLoadStatisticsStore::hasStatisticsFileChangedSinceLastSync):
        Make const.

        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
        Add assertion to make sure this is called on the main thread.

        (WebKit::WebResourceLoadStatisticsStore::fireDataModificationHandler): Removed.
        This was dispatching to a background queue to call fireDataModificationHandler()
        on the ResourceLoadStatisticsStore. The coreStore would then dispatch back on the
        main thread to call the WebResourceLoadStatisticsStore's modification handler.
        This modification handler was merely calling processStatisticsAndDataRecords().
        Therefore, callers of WebResourceLoadStatisticsStore::fireDataModificationHandler()
        can call WebResourceLoadStatisticsStore::processStatisticsAndDataRecords() directly
        instead.

        (WebKit::WebResourceLoadStatisticsStore::fireTelemetryHandler): Removed.
        This was calling ResourceLoadStatisticsStore::fireTelemetryHandler(), which was
        calling back WebResourceLoadStatisticsStore's fireTelemetryHandler. The handler
        in question was merely calling submitTelemetry(). Therefore, callers of
        WebResourceLoadStatisticsStore::fireTelemetryHandler() can call
        WebResourceLoadStatisticsStore::submitTelemetry() directly instead.

        (WebKit::WebResourceLoadStatisticsStore::clearInMemoryAndPersistent):
        Call ResourceLoadStatisticsStore::clearInMemory() instead of clearInMemoryAndPersistent(),
        which was removed. ResourceLoadStatisticsStore::clearInMemoryAndPersistent() was calling
        clearInMemory() and then 2 of WebResourceLoadStatisticsStore's handlers. Instead, we now
        call the functions that those handlers were calling directly, thus eliminating the need
        for those handlers.

        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        Set m_minimumTimeBetweenDataRecordsRemoval directly as it is now store on this class
        instead of the coreStore.

        (WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::dataRecordsBeingRemoved):
        (WebKit::WebResourceLoadStatisticsStore::dataRecordsWereRemoved):
        Those were merely moved from the ResourceLoadStatisticsStore.

        * UIProcess/WebResourceLoadStatisticsStore.h:

        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        Check for sortedPrevalentResources.isEmpty() instead of checking if the size
        if less than minimumPrevalentResourcesForTelemetry.
        ResourceLoadStatisticsStore::sortedPrevalentResourceTelemetry() either returns
        an empty vector or a vector with more than minimumPrevalentResourcesForTelemetry
        items. Therefore, there is no need to expose minimumPrevalentResourcesForTelemetry.

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

        Drop NOSNIFF compile flag
        https://bugs.webkit.org/show_bug.cgi?id=174289

        Reviewed by Michael Catanzaro.

        * Configurations/FeatureDefines.xcconfig:

2017-07-07  Chris Dumez  <cdumez@apple.com>

        [WK2] Use a rolling 30-day uptime for processing statistics
        https://bugs.webkit.org/show_bug.cgi?id=174235
        <rdar://problem/33164381>

        Reviewed by Brent Fulgham.

        Follow-up fix for r219274 because it caused this test to time out:
        http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html

        The test sets TimeToLiveUserInteraction to 0 so our implementation cannot use
        0 as magic value to see if it was set. Instead, use std::optional.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired):
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-07  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Use a rolling 30-day uptime for processing statistics
        https://bugs.webkit.org/show_bug.cgi?id=174235
        <rdar://problem/33164381>

        Reviewed by Chris Dumez.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.cpp:
        (WebKit::WKWebsiteDataStore::_resourceLoadStatisticsResetToConsistentState): Initialize time-to-live to zero by default.
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::createEncoderFromData): Write out vector
        of operating dates.
        (WebKit::ResourceLoadStatisticsStore::readDataFromDecoder): Read in vector of
        operating dates.
        (WebKit::ResourceLoadStatisticsStore::hasHadRecentUserInteraction): Check new
        convenience method.
        (WebKit::ResourceLoadStatisticsStore::markTodayAsOperatingDate): Added.
        (WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired): Added.
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): When reading
        a new data file, update the current operating date (if needed).
        (WebKit::WebResourceLoadStatisticsStore::handleDailyTasks): Roll uptime dates as
        needed, then handle telemetry.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] For cross-app drags, 'drop' event handlers are never invoked if dataTransfer.dropEffect is not set while dragging
        https://bugs.webkit.org/show_bug.cgi?id=174219
        <rdar://problem/32083177>

        Reviewed by Ryosuke Niwa.

        Tweak some testing SPI to return a drop operation flag instead of whether or not the drop operation was not
        UIDropOperationCancel.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _simulateDataInteractionUpdated:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _simulateDataInteractionUpdated:]):

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

        Unreviewed, rolling out r219238, r219239, and r219241.
        https://bugs.webkit.org/show_bug.cgi?id=174265

        "fast/workers/dedicated-worker-lifecycle.html is flaky"
        (Requested by yusukesuzuki on #webkit).

        Reverted changesets:

        "[WTF] Implement WTF::ThreadGroup"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219238

        "Unreviewed, build fix after r219238"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219239

        "Unreviewed, CLoop build fix after r219238"
        https://bugs.webkit.org/show_bug.cgi?id=174081
        http://trac.webkit.org/changeset/219241

2017-07-07  Antti Koivisto  <antti@apple.com>

        WKWebSiteDataStore.removeDataOfTypes should wait until disk cache files are actually removed before invoking completion handler
        https://bugs.webkit.org/show_bug.cgi?id=174224
        <rdar://problem/33067545>

        Reviewed by Sam Weinig.

        Currently we dispatch file deletion operations to a background queue and call the completion
        handler without waiting for the I/O to complete.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::clearDiskCacheEntries):

            Call a new version of NetworkCache::remove() for bulk deletion.
            Note that it is fine to call this with an empty vector.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::remove):

            Bulk deletion with a completion handler.

        (WebKit::NetworkCache::Cache::deleteFiles): Added.

            Factor to a helper function.

        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::remove):

            Remove files for all the provided keys in a queue and invoke the completion handler in the main thread when done.

        * NetworkProcess/cache/NetworkCacheStorage.h:

2017-07-06  Chris Dumez  <cdumez@apple.com>

        Fix bad usage of static variables in ResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174237

        Reviewed by Brent Fulgham.

        Fix bad usage of static variables in ResourceLoadStatisticsStore. Those can be set via
        member functions on ResourceLoadStatisticsStore so they should be data members. The
        API to set them is associated to a particular store and there can in theory be several
        stores.

        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::shouldPartitionCookies):
        (WebKit::ResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::ResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::ResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::ResourceLoadStatisticsStore::hasHadRecentUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::handleFreshStartWithEmptyOrNoStore):
        (WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords):
        (WebKit::shouldPartitionCookies): Deleted.
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:

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

        [WTF] Implement WTF::ThreadGroup
        https://bugs.webkit.org/show_bug.cgi?id=174081

        Reviewed by Mark Lam.

        * Shared/AsyncRequest.h:
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:

2017-07-06  Chris Dumez  <cdumez@apple.com>

        Drop unused ResourceLoadStatistics members
        https://bugs.webkit.org/show_bug.cgi?id=174226

        Reviewed by Brent Fulgham.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::readDataFromDecoder):

2017-07-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the internal iOS 11 build

        It turns out, our internal bots are still on an older version of the iOS 11 SDK that's missing _UIDataOwner in
        <UIKit/NSItemProvider+UIKitAdditions_Private.h>. To ensure that we can build on both current and slightly older
        versions of the iOS 11 SDK, fall back to using NSInteger instead of _UIDataOwner.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dragInteraction:dataOwnerForSession:]):
        (-[WKContentView _dropInteraction:dataOwnerForSession:]):

2017-07-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Add delegate hooks for specifying the data owner for a drag or drop session
        https://bugs.webkit.org/show_bug.cgi?id=174139
        <rdar://problem/33126212>

        Reviewed by Beth Dakin.

        Add hooks to query the UI delegate for a _UIDataOwner on both drag and drop sides.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dragInteraction:dataOwnerForSession:]):
        (-[WKContentView _dropInteraction:dataOwnerForSession:]):

2017-07-06  Brent Fulgham  <bfulgham@apple.com>

        [WK2] ResourceLoadStatistics should batch its writes
        https://bugs.webkit.org/show_bug.cgi?id=174111
        <rdar://problem/33115894>

        Reviewed by Chris Dumez.

        Revise the data writing operation to only write on a specific interval (currently
        set to 5 minutes).

        Also make 'writeStoreToDisk' simpler to use by moving the deleting (before write) and
        creating (after write) of the FileMonitor into the method, rather than requiring this
        knowledge in multiple places.

        Make sure that we write our statistics file out before exiting so that we do not
        lose any data if we exit before the five-minute window has elapsed.

        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::setWritePersistentStoreCallback): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords): Remove the stop
        and start monitoring into 'writeStoreToDisk'. Also check if enough time has elapsed since
        the last write to commit to disk.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Remove the
        stop and start monitoring into 'writeStoreToDisk'.
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk): Add the stop and start monitoring
        commands here, so callers don't have to know to do so.

2017-07-06  Chris Dumez  <cdumez@apple.com>

        FileMonitor should not be ref counted
        https://bugs.webkit.org/show_bug.cgi?id=174166

        Reviewed by Brent Fulgham.

        Update code using FileMonitor to reflect API change.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
        (WebKit::WebResourceLoadStatisticsStore::stopMonitoringStatisticsStorage):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-06  Matt Rajca  <mrajca@apple.com>

        Fix build with VIDEO support disabled.
        https://bugs.webkit.org/show_bug.cgi?id=174217

        Unreviewed build fix.

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

2017-07-06  Chris Dumez  <cdumez@apple.com>

        Crash under WebResourceLoadStatisticsStore::persistentStoragePath(WTF::String const&)
        https://bugs.webkit.org/show_bug.cgi?id=174205
        <rdar://problem/33093552>

        Reviewed by Brent Fulgham.

        Make sure we isolateCopy() m_statisticsStoragePath before using it from the background
        thread.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::resourceLogFilePath):
        (WebKit::WebResourceLoadStatisticsStore::statisticsFilePath):
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
        (WebKit::WebResourceLoadStatisticsStore::deleteStoreFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
        (WebKit::WebResourceLoadStatisticsStore::syncWithExistingStatisticsStorageIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::persistentStoragePath): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.h:

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

        Fix CFURLRequestRef serialization after r207330
        https://bugs.webkit.org/show_bug.cgi?id=163332

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        The CFURLConnection code was not updated.
        We did not catch this because nobody uses the WebKit2 CFURLConnection code, but I need to use it to debug something.

2017-07-06  Chris Dumez  <cdumez@apple.com>

        Move ResourceLoadObserver notification throttling logic from WebProcess class to ResourceLoadObserver
        https://bugs.webkit.org/show_bug.cgi?id=174194

        Reviewed by Brent Fulgham.

        Move ResourceLoadObserver notification throttling logic from WebProcess class to
        ResourceLoadObserver. This makes more sense and decreases the complexity of the
        WebProcess class.

        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::WebProcess::statisticsChangedTimerFired): Deleted.
        * WebProcess/WebProcess.h:

2017-07-06  Chris Dumez  <cdumez@apple.com>

        WebResourceLoadStatisticsStore should only be constructed when the feature is enabled
        https://bugs.webkit.org/show_bug.cgi?id=174189

        Reviewed by Brent Fulgham.

        Delay the construction of the WebResourceLoadStatisticsStore until the feature gets
        enabled via WebsiteDataStore::setResourceLoadStatisticsEnabled(). Previously, we would
        always construct a store and then have a boolean on the store to indicate if it is
        enabled or not.

        Also simplify the initialization process of the WebResourceLoadStatisticsStore, we
        used to have:
        1. WebResourceLoadStatisticsStore constructor
        2. WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver()
        3. WebResourceLoadStatisticsStore::setResourceLoadStatisticsEnabled(true)

        All 3 steps are now taken care of by the WebResourceLoadStatisticsStore constructor.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::platformInitialize):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::resourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resourceLoadStatistics):
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::platformInitialize):

2017-07-06  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] It should process MouseMoved events when the parent window is not active
        https://bugs.webkit.org/show_bug.cgi?id=116691

        Reviewed by Michael Catanzaro.

        From reading the comments in the related code, only in Safari it
        is desired that MouseMoved events are not processed when the
        parent window is not active. In other ports, in particular those
        targeting Linux, these events should be processed for consistency
        with other browsers.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setCursor):
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::setCursor):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::handleMouseEvent):
        (WebKit::WebPage::mouseEvent):  No need to always pass a boolean
        parameter that is only checked for one type of event. Do the check
        internally in handleMouseEvent() only when needed and only in Cocoa.

2017-07-05  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Move SoftLinking.h into WTF
        https://bugs.webkit.org/show_bug.cgi?id=174000

        Reviewed by Alex Christensen.

        * Platform/mac/StringUtilities.mm:
        * Platform/spi/ios/ManagedConfigurationSPI.h:
        * Shared/Cocoa/DataDetectionResult.mm:
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        * Shared/ios/InteractionInformationAtPosition.mm:
        * Shared/ios/WebIconUtilities.mm:
        * Shared/mac/CookieStorageShim.mm:
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        * UIProcess/Cocoa/UIDelegate.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/mac/WKImmediateActionController.mm:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
        * WebProcess/WebPage/mac/WebInspectorUIMac.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-07-05  Brady Eidson  <beidson@apple.com>

        Allow navigations in subframes to get a ShouldOpenExternalURLsPolicy of "ShouldAllow".
        <rdar://problem/22485589> and https://bugs.webkit.org/show_bug.cgi?id=174178

        Reviewed by Alex Christensen.

        Adopt to the new constructor for FrameLoadRequest.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::loadURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchCreatePage):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab):

2017-07-05  Ryosuke Niwa  <rniwa@webkit.org>

        Remove unnecessary forward declartions now that we include Foundation.h

        * UIProcess/API/Cocoa/WKContentRuleListStore.h:

2017-07-05  Ryosuke Niwa  <rniwa@webkit.org>

        Make WebKit's public headers on Mac and iOS C++ module safe
        https://bugs.webkit.org/show_bug.cgi?id=174175

        Reviewed by Alex Christensen.

        Fixed the header files.

        * UIProcess/API/Cocoa/WKContentRuleList.h:
        * UIProcess/API/Cocoa/WKContentRuleListStore.h:
        * UIProcess/API/Cocoa/WKUIDelegate.h:

2017-07-05  Chris Dumez  <cdumez@apple.com>

        [WK2] WebsiteDataStore::setResourceLoadStatisticsEnabled() updates processPools the store is not associated with
        https://bugs.webkit.org/show_bug.cgi?id=174174

        Reviewed by Brent Fulgham.

        WebsiteDataStore::setResourceLoadStatisticsEnabled() updates processPools the store is not associated with.
        Fix this by iterating over WebsiteDataStore::processPools() instead of WebProcessPool::allProcessPools().

        Also rename shouldPartitionCookiesForTopPrivatelyOwnedDomains methods / IPC messages to
        updateCookiePartitioningForTopPrivatelyOwnedDomains since this is a setter, not a getter.

        Finally, drop ShouldPartitionCookiesForTopPrivatelyOwnedDomains IPC message to the NetworkProcessProxy
        as well as corresponding methods as those appear to be unused.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updateCookiePartitioningForTopPrivatelyOwnedDomains):
        (WebKit::NetworkProcess::shouldPartitionCookiesForTopPrivatelyOwnedDomains): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::shouldPartitionCookiesForTopPrivatelyOwnedDomains): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setResourceLoadStatisticsEnabled):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::registerSharedResourceLoadObserver):
        (WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-07-05  Tim Horton  <timothy_horton@apple.com>

        Async Image Decoding: Image flashes away briefly when tapping on tab in iPad tab picker
        https://bugs.webkit.org/show_bug.cgi?id=174173
        <rdar://problem/32431952>

        Reviewed by Geoffrey Garen.

        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID):
        When a client uses e.g. doAfterNextPresentationUpdate (or internally,
        dispatchAfterEnsuringDrawing), they're doing so in the hopes that the
        callback is called after the page is well-painted -- for example, to
        remove a snapshot (in the tab picker case, as well as for navigation
        gestures), or to *take* a snapshot. In all of these cases, it is
        preferable to do a synchronous decode, to ensure that the image does
        not flash away temporarily.

        Use the existing mechanism that was implemented for the synchronous
        activity state change flush to also force synchronous image decoding
        any time there is a post-commit transaction callback.

2017-07-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] 3D touch fails to recognize when UIDragInteraction is enabled on phone
        https://bugs.webkit.org/show_bug.cgi?id=174171
        <rdar://problem/32956929>

        Reviewed by Tim Horton.

        By default, UIKit defers all competing long press gesture recognizers if dragging is enabled. However, this
        would cause 3D touch to be prevented, due to UIKit asking us whether or not we can proceed with the 3D touch
        gesture in -_interactionShouldBeginFromPreviewItemController:forPosition:, while the highlight long press
        gesture recognizer is being deferred. To address this, we use SPI on UIDragInteraction to allow the highlight
        long press gesture recognizer to recognize alongside the drag lift gesture. We then (already) manually cancel
        the highlight long press gesture in _dragInteraction:prepareForSession:completion:.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dragInteraction:shouldDelayCompetingGestureRecognizer:]):

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        * Configurations/BaseTarget.xcconfig:

2017-07-05  Chris Dumez  <cdumez@apple.com>

        Regression(r218821): Bad cast to WebKit::DiagnosticLoggingClient in WKWebView's _setDiagnosticLoggingDelegate
        https://bugs.webkit.org/show_bug.cgi?id=174163
        <rdar://problem/33067518>

        Reviewed by Alex Christensen.

        After r218821, WebPageProxy::setDiagnosticLoggingClient() would no longer set the client in
        private session. This is an issue because there is code in WKWebView which expects the
        DiagnosticLoggingClient to be set and of a specific type. This would lead to bad casts in
        WKWebView's _diagnosticLoggingDelegate / _setDiagnosticLoggingDelegate.

        To avoid the issue, we now unconditionally update the client in
        WebPageProxy::setDiagnosticLoggingClient(). Instead, we implement the logic for disabling
        logging in private session in the logging methods themselves, via the
        WebPageProxy::effectiveDiagnosticLoggingClient() helper instead.

        I also added null checks in WKWebView's _diagnosticLoggingDelegate /
        _setDiagnosticLoggingDelegate. Even though the WKWebView sets itself as the diagnostic
        logging client, WebPageProxy::diagnosticLoggingClient() can still return null after
        calling WebPageProxy::close(). Previously, we would have done a bad cast if the WKWebView's
        client would have used this API after calling 'close' as well.

        * UIProcess/API/APIDiagnosticLoggingClient.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _diagnosticLoggingDelegate]):
        (-[WKWebView _setDiagnosticLoggingDelegate:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setDiagnosticLoggingClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::effectiveDiagnosticLoggingClient):
        (WebKit::WebPageProxy::logDiagnosticMessage):
        (WebKit::WebPageProxy::logDiagnosticMessageWithResult):
        (WebKit::WebPageProxy::logDiagnosticMessageWithValue):
        (WebKit::WebPageProxy::logDiagnosticMessageWithEnhancedPrivacy):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::diagnosticLoggingClient):

2017-07-05  Daniel Bates  <dabates@apple.com>

        Do not pass API::FrameInfo for source frame or clear out page of target frame on
        API navigation
        https://bugs.webkit.org/show_bug.cgi?id=174170
        <rdar://problem/33140328>

        Reviewed by Brady Eidson.

        As a step towards making it straightforward for an embedding client to determine whether
        a WebPageProxy::decidePolicyForNavigationAction() callback was initiated from API we
        should not pass frame info for the source frame and should not nullify the page pointer
        in the target frame info.

        Currently we always pass frame info for the source frame and nullify the page pointer
        in both the source frame info and target frame info if the navigation was initiated from
        API. This seems subtle and error prone. Instead we should not pass frame info for
        the source frame and not nullify the page pointer in the target frame info as a step
        towards making using this API less error-prone.

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

2017-07-05  Chris Dumez  <cdumez@apple.com>

        Add a few more WebKit2 owners
        https://bugs.webkit.org/show_bug.cgi?id=174169

        Reviewed by Brady Eidson.

        * Owners:

2017-07-05  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Prevent ResourceLoadStatistics from triggering a cascade of read/write events
        https://bugs.webkit.org/show_bug.cgi?id=174062\
        <rdar://problem/33086744>

        Reviewed by Chris Dumez.

        ResourceLoadStatistics was triggering periods of high CPU use due to a cascade of read/write
        operations:
        (1) The 'makeRefPtr' call in FileMonitor::startMonitoring was capturing a reference to itself, preventing
            the FileMonitor from being destroyed. This caused the file modification handler to fire in response
            to our own write events, creating a ridiculous read/write cycle. This problem was addressed in
            the short term by stopping the file monitor in WebResourceLoadStatisticsStore::stopMonitoringStatisticsStorage,
            rather than relying on the destructor to shut things down. This will be improved in a
            subsequent patch.
        (2) 'syncWithExistingStatisticsStorageIfNeeded' was creating a FileMonitor during the write operation,
            which exacerbated the chain of read/writes already present due to the self-reference described above.
        (3) Because VNODE dispatch sources are low level, they do not offer a means of filtering out operations
            triggered by the current process. To avoid this, I added code to track the file modification time, so
            that we don't bother reading a file that holds data that is older than the in-memory data, even though
            we receive a file modification dispatch. Writes seem to trigger a chain of notification events in rapid
            succession. Once we've responded to the first of these events, we don't need to to further reads until
            the data on disk changes again.    

        We also shouldn't allow the ResourceLoadStatistics worker thread to consume high CPU resources. Run it
        as utility QoS, avoiding using the CPU when other work is going on.

        Drive-by fix: The closure in setWritePersistentStoreCallback() should stop monitoring before writing
        data, and should start monitoring after the write completes.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): Run our worker queue
        as a utility-level process.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Stop checking for
        updates before writing, and begin checking again once the write is complete.
        (WebKit::WebResourceLoadStatisticsStore::statisticsFileModificationTime): Added.
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Avoid reading the file if it
        was last modified on (or before) the time we last read the file.
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::stopMonitoringStatisticsStorage): Explicitly stop file
        monitoring so that the active file modification handler will terminate.
        (WebKit::WebResourceLoadStatisticsStore::syncWithExistingStatisticsStorageIfNeeded): Do not begin
        monitoring the file after syncing, since this is only used as part of an ongoing write operation.

2017-07-05  Jonathan Bedard  <jbedard@apple.com>

        Add WebKitPrivateFrameworkStubs for iOS 11
        https://bugs.webkit.org/show_bug.cgi?id=173988

        Reviewed by David Kilzer.

        * Configurations/BaseTarget.xcconfig: iphoneos and iphonesimulator should use the
        same directory for private framework stubs.

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

        [iOS] WKActionSheetAssistants can outlive their host views
        https://bugs.webkit.org/show_bug.cgi?id=174160
        <rdar://problem/20638607>

        Reviewed by Tim Horton.

        WKActionSheetAssistant keeps a raw pointer to its host UIView, and nothing clears it when
        the host view is deallocated. If the assistant outlives the view, we can end up accessing a
        pointer to a deallocated UIView and crashing.

        I don't know how to reproduce such a crash, but this patch guards against it by doing the
        following:

        1. Make _view a WeakObjCPtr in WKActionSheetAssistant to ensure it gets set to nil when the
           UIView is deallocated.
        2. Call -[WKActionSheetAssistant cleanupSheet] when a WKContentView or WKPDFView is
           deallocated, or when the Web process crashes. This will ensure the action sheet is
           dismissed and prevent the user from tapping on an action that's no longer valid.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant superviewForSheet]):
        (-[WKActionSheetAssistant _presentationRectForSheetGivenPoint:inHostView:]):
        (-[WKActionSheetAssistant presentationRectForElementUsingClosestIndicatedRect]):
        (-[WKActionSheetAssistant presentationRectForIndicatedElement]):
        (-[WKActionSheetAssistant _shouldPresentAtTouchLocationForElementRect:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView dealloc]):

2017-07-05  Frederic Wang  <fwang@igalia.com>

        Move ScrolledContentsLayer property to ScrollingStateScrollingNode
        https://bugs.webkit.org/show_bug.cgi?id=174134

        Reviewed by Simon Fraser.

        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateScrollingNode>::encode): Add encoding for scrolled contents
        layer.
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode): Remove encoding for scrolled
        contents layer.
        (ArgumentCoder<ScrollingStateOverflowScrollingNode>::encode): Ditto.
        (ArgumentCoder<ScrollingStateScrollingNode>::decode): Add decoding for scrolled contents
        layer.
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode): Remove decoding for scrolled
        contents layer.
        (ArgumentCoder<ScrollingStateOverflowScrollingNode>::decode): Ditto.
        (WebKit::dump): Move dumping of scrolled contents layer from overflow/frame nodes to
        scrolling node.
        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): Adjust enum value to use
        ScrollingStateScrollingNode::ScrolledContentsLayer.
        * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren): Ditto.
        * UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): Ditto.

2017-07-05  Ada Chan  <adachan@apple.com>

        Fix crash in UIKit: +[UIViewController _viewControllerForFullScreenPresentationFromView:]
        https://bugs.webkit.org/show_bug.cgi?id=174143
        <rdar://problem/28384582>

        Reviewed by Wenson Hsieh.

        In -[WKActionSheet willRotate], we can't guarantee that the action sheet belongs
        in a window, and passing nil to +[UIViewController _viewControllerForFullScreenPresentationFromView:]
        throws an exception. To fix this, bail early if the result from -hostViewForSheet is nil.

        * UIProcess/ios/WKActionSheet.mm:
        (-[WKActionSheet willRotate]):

2017-07-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Protect request and web view during gUM client callback
        https://bugs.webkit.org/show_bug.cgi?id=174096
        <rdar://problem/32833102>

        Reviewed by Youenn Fablet.

        Retain the message and WebView during asynchronous calls so they won't be 
        released if a navigation happens during a call to the UA for getUserMedia 
        or enumerateMediaDevices.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):

2017-07-05  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219128.

        Spoke with engineer who originally submitted, Patch for APi
        test to follow.

        Reverted changeset:

        "Unreviewed, rolling out r219070."
        https://bugs.webkit.org/show_bug.cgi?id=174082
        http://trac.webkit.org/changeset/219128

2017-07-05  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219070.

        This revision caused consistent failures of the API test
        UIPasteboardTests.DoNotPastePlainTextAsURL on iOS.

        Reverted changeset:

        "Pasting single words copied to UIPasteboard inserts URLs in
        editable areas"
        https://bugs.webkit.org/show_bug.cgi?id=174082
        http://trac.webkit.org/changeset/219070

2017-07-05  Zan Dobersek  <zdobersek@igalia.com>

        [GLib] Incorrect <glib/gi18n.h> include in WebKitWebsiteData
        https://bugs.webkit.org/show_bug.cgi?id=174093

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitWebsiteData.cpp: Include <glib/gi18n-lib.h>
        rather than <glib/gi18n.h>, since the former has to be included in a
        library while the latter should only be included in a standalone application.

2017-07-04  Joseph Pecoraro  <pecoraro@apple.com>

        Cleanup some StringBuilder use
        https://bugs.webkit.org/show_bug.cgi?id=174118

        Reviewed by Andreas Kling.

        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        (WebKit::NetworkCapture::Manager::hashToPath):
        * UIProcess/WebPageProxy.cpp:

2017-07-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Callout bar should reappear after dragging ends for a text selection
        https://bugs.webkit.org/show_bug.cgi?id=174116
        <rdar://problem/33017845>

        Reviewed by Ryosuke Niwa.

        -willStartScrollingOverflow -didEndScrollingOverflow are helper methods on both the UIWKTextInteractionAssistant
        and UIWebSelectionAssistant that handle hiding selection and callout bar UI during overflow scrolling and making
        it reappear after scrolling ends. However, these hooks do not contain logic specific to scrolling, and simply
        tell the inner UIWebSelectionView to either show or hide and are safe to invoke outside of the context of
        scrolling.

        This patch invokes these hooks when beginning a drag on a selection, and when a dragging ends, if it called
        -willStartScrollingOverflow to begin with. We should rename these in the future to be something along the lines
        of -hideSelectionViewAndControls and -showSelectionViewAndControls, respectively, and adopt these new names in
        WebKit. We also move logic to hide the callout out of -itemsForBeginningSession: and into
        -willAnimateLiftWithAnimator:, when the lift actually begins.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanUpDragSourceSessionState]):
        (-[WKContentView _restoreCalloutBarIfNeeded]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):

2017-07-03  Matt Rajca  <mrajca@apple.com>

        Add/remove appropriate media element behavior restrictions when updateWebsitePolicies is called
        https://bugs.webkit.org/show_bug.cgi?id=174103

        Reviewed by Alex Christensen.

        Currently, when -[WKWebView evaluateJavaScript:completionHandler:] is invoked, we end up simulating
        a user gesture unconditionally. This is not desireable for some tests, so I added a private variant
        of this method that takes a boolean that is ultimately passed to `executeScript` for the
        `forceUserGesture` parameter (instead of unconditionally passing `true`).

        * UIProcess/API/C/WKPage.cpp:
        (WKPageRunJavaScriptInMainFrame):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView evaluateJavaScript:completionHandler:]):
        (-[WKWebView _evaluateJavaScript:forceUserGesture:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::runJavaScriptInMainFrame):
        (WebKit::WebPage::updateWebsitePolicies): Update behavior restrictions on any existing media elements.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2017-07-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219103.

        Caused multiple build failures.

        Reverted changeset:

        "Remove copy of ICU headers from WebKit"
        https://bugs.webkit.org/show_bug.cgi?id=116407
        http://trac.webkit.org/changeset/219103

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        Use WTF's copy of ICU headers.

        * Configurations/BaseTarget.xcconfig:

2017-07-03  Brady Eidson  <beidson@apple.com>

        Switch all WebKit API related to favicons from WebIconDatabase over to new WebCore::IconLoader mechanism.
        https://bugs.webkit.org/show_bug.cgi?id=174073

        Reviewed by Andy Estes.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::getLoadDecisionForIcons):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveIcon): Deleted.
        (WebKit::WebFrameLoaderClient::registerForIconNotification): Deleted.
        (WebKit::WebFrameLoaderClient::getLoadDecisionForIcon): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-07-03  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove more unnecessary uses of the preprocessor in idl files
        https://bugs.webkit.org/show_bug.cgi?id=174083

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:
        Add ENABLE_NAVIGATOR_STANDALONE.

2017-07-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219083.

        The revision caused an API failure on all testing platforms.

        Reverted changeset:

        "[MediaStream] Protect request and web view during gUM client
        callback"
        https://bugs.webkit.org/show_bug.cgi?id=174096
        http://trac.webkit.org/changeset/219083

2017-07-03  Ryosuke Niwa  <rniwa@webkit.org>

        WebContent processes crash when the network process crashes with pending connection requests
        https://bugs.webkit.org/show_bug.cgi?id=174065
        <rdar://problem/30359835>

        Reviewed by Tim Horton.

        The bug was caused by the UI process clearing away pending network connection requests whenever the existing
        network process crashed. This resulted in WebContent process killing itself inside ensureNetworkProcessConnection.

        Fixed the bug by re-launching a new network process when this happens. We don't try to re-launch a new process
        if the previous attempt to launch a network process had failed.

        This patch splits NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch into networkProcessFailedToLaunch
        and networkProcessCrashed to differentiate those two cases, and invoke the respective callbacks in WebProcessPool.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _networkProcessIdentifier]): Added.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashed): Added.
        (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch): Split into the two following functions.
        (WebKit::NetworkProcessProxy::networkProcessFailedToLaunch): Extracted from networkProcessCrashedOrFailedToLaunch.
        (WebKit::NetworkProcessProxy::clearCallbackStates): Extracted from networkProcessCrashedOrFailedToLaunch
        (WebKit::NetworkProcessProxy::didClose): Call networkProcessCrashed.
        (WebKit::NetworkProcessProxy::didFinishLaunching): Call networkProcessFailedToLaunch.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessCrashed): Start a new network process when there are pending connection
        requests the crached network failed to fullfil.
        (WebKit::WebProcessPool::networkProcessFailedToLaunch):
        * UIProcess/WebProcessPool.h:

2017-07-03  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Protect request and web view during gUM client callback
        https://bugs.webkit.org/show_bug.cgi?id=174096
        <rdar://problem/32833102>

        Reviewed by Youenn Fablet.

        Retain the message and WebView during asynchronous calls so they won't be 
        released if a navigation happens during a call to the UA for getUserMedia 
        or enumerateMediaDevices.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):

2017-07-03  Andy Estes  <aestes@apple.com>

        [Xcode] Add an experimental setting to build with ccache
        https://bugs.webkit.org/show_bug.cgi?id=173875

        Reviewed by Tim Horton.

        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

2017-07-03  Chris Dumez  <cdumez@apple.com>

        Drop ResourceLoadStatisticsStore's statisticsLock
        https://bugs.webkit.org/show_bug.cgi?id=174080

        Reviewed by Brent Fulgham.

        Drop ResourceLoadStatisticsStore's statisticsLock. It added complexity and was only needed
        do that the SPI exposed to WebKitTestRunner would query the store synchronously from the
        main thread. Instead, I made the SPI asynchronous and make sure we always access the store
        from the same background thread. As a result, there is no longer any need for locking.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _resourceLoadStatisticsIsPrevalentResource:completionHandler:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsHadUserInteraction:completionHandler:]):
        (-[WKWebsiteDataStore _resourceLoadStatisticsIsGrandfathered:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::ResourceLoadStatisticsStore::isGrandFathered):
        (WebKit::ResourceLoadStatisticsStore::ensureResourceStatisticsForPrimaryDomain):
        (WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
        (WebKit::ResourceLoadStatisticsStore::readDataFromDecoder):
        (WebKit::ResourceLoadStatisticsStore::clearInMemory):
        (WebKit::ResourceLoadStatisticsStore::mergeStatistics):
        (WebKit::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler):
        (WebKit::ResourceLoadStatisticsStore::processStatistics):
        (WebKit::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        (WebKit::ResourceLoadStatisticsStore::sortedPrevalentResourceTelemetry):
        (WebKit::ResourceLoadStatisticsStore::updateStatisticsForRemovedDataRecords):
        (WebKit::ResourceLoadStatisticsStore::handleFreshStartWithEmptyOrNoStore):
        * UIProcess/Storage/ResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemoryData):
        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-07-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Pasting single words copied to UIPasteboard inserts URLs in editable areas
        https://bugs.webkit.org/show_bug.cgi?id=174082
        <rdar://problem/33046992>

        Reviewed by Tim Horton.

        Add a hook to WKPreferences to allow programatic pasting.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setDOMPasteAllowed:]):
        (-[WKPreferences _domPasteAllowed]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-07-03  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ and WPE build fix when building with GCC 4.9.

        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::renderNextFrame): Don't use brace-list
        initialization to override the m_forceRepaintAsync struct. Instead, manually
        assign the OptionalCallbackID() value to the m_forceRepaintAsync.callbackID
        member variable, and override the m_forceRepaintAsync.needsFreshFlush member
        variable with `false`.

2017-07-03  Zan Dobersek  <zdobersek@igalia.com>

        [ThreadedCompositor] Update and retrieve scene attributes under a Lock
        https://bugs.webkit.org/show_bug.cgi?id=173762

        Reviewed by Carlos Garcia Campos.

        Instead of dispatching separate tasks on the composition run loop, update
        various scene attributes by locking a common lock object and updating the
        appropriate attribute.

        In ThreadedCompositor::renderLayerTree(), where these attributes are used
        in scene composition, the lock is again obtained and the attributes copied
        into local variables, releasing the lock afterwards. The attribute values
        in local copies are then used for that renderLayerTree() invocation.

        This approach is more efficient than dispatching separate tasks that can
        race against renderLayerTree() dispatches.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::ThreadedCompositor):
        (WebKit::m_displayRefreshMonitor):
        (WebKit::ThreadedCompositor::setScaleFactor):
        (WebKit::ThreadedCompositor::setScrollPosition):
        (WebKit::ThreadedCompositor::setViewportSize):
        (WebKit::ThreadedCompositor::setDrawsBackground):
        (WebKit::ThreadedCompositor::renderLayerTree):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [iOS] Remove code only needed when building for iOS 9.x
        https://bugs.webkit.org/show_bug.cgi?id=174068

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Configurations/WebKit.xcconfig:
        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView dealloc]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFormInputSession setSuggestions:]):
        (-[WKFormInputSession invalidate]):
        (-[WKContentView insertTextSuggestion:]):
        (contentTypeFromFieldName):
        (-[WKContentView textInputTraits]):
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):
        * config.h:

2017-07-01  Brady Eidson  <beidson@apple.com>

        When setting a custom cookie storage location on a WKWebsiteDataStore, cookies aren't actually removed.
        <rdar://problem/32410662> and https://bugs.webkit.org/show_bug.cgi?id=174035

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateNetworkProcess]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess): Take an optional WebsiteDataStore. If one is passed in,
          send it to either the existing or new network process.
        * UIProcess/WebProcessPool.h:
        
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters): Resolve paths first.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):

2017-07-01  Ryosuke Niwa  <rniwa@webkit.org>

        Frame.h doesn't need to include FrameLoader.h, IntRect.h, and NavigationScheduler.h
        https://bugs.webkit.org/show_bug.cgi?id=174004

        Reviewed by Simon Fraser.

        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        * WebProcess/WebPage/WebInspector.cpp:

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [macOS] Remove code only needed when building for OS X Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=174067

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/BaseTarget.xcconfig:
        * Configurations/BaseXPCService.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/NetworkService.xcconfig:
        * Configurations/PluginService.32.xcconfig:
        * Configurations/PluginService.64.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebContentService.xcconfig:
        * Configurations/WebKit.xcconfig:
        * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX-10.9-10.10.plist: Removed.
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::platformInvalidate):
        (IPC::Connection::platformInitialize):
        (IPC::Connection::open):
        (IPC::Connection::exceptionSourceEventHandler): Deleted.
        (IPC::Connection::setShouldCloseConnectionOnMachExceptions): Deleted.
        * Platform/mac/LayerHostingContext.h:
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createFencePort):
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64-10.9-10.10.Info.plist: Removed.
        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::updateLayerHostingContext):
        * PluginProcess/mac/PluginProcessShim.mm:
        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * Shared/ChildProcess.h:
        * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
        (WebKit::getPluginInfoFromPropertyLists):
        (WebKit::NetscapePluginModule::getPluginInfo):
        (WebKit::contentsOfPropertyListAtURL): Deleted.
        (WebKit::getMIMETypesFromPluginBundle): Deleted.
        * Shared/Plugins/PluginProcessCreationParameters.cpp:
        (WebKit::PluginProcessCreationParameters::encode):
        (WebKit::PluginProcessCreationParameters::decode):
        * Shared/Plugins/PluginProcessCreationParameters.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setSharedHTTPCookieStorage):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        (fixUpBotchedPageUIClient): Deleted.
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::didFinishLaunching):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::resetHSTSHostsAddedAfterDate):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateLayer):
        (WebKit::WebViewImpl::startWindowDrag):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate): Deleted.
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::didFinishLaunching):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformInitializePluginProcess):
        (WebKit::PluginProcessProxy::createPropertyListFile): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setTopContentInset):
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::rootViewToWindow):
        (WebKit::PageClientImpl::startWindowDrag):
        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformStartWindowDrag):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate): Deleted.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::createFrontendWindow):
        (WebKit::WebInspectorProxy::platformStartWindowDrag):
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX-10.9-10.10.plist: Removed.
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
        (WebKit::addAnimationToLayer):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        * WebProcess/com.apple.WebProcess.sb.in:

2017-07-01  Chris Dumez  <cdumez@apple.com>

        Replace ResourceLoadStatisticsStore C API with Cocoa SPI
        https://bugs.webkit.org/show_bug.cgi?id=174060

        Reviewed by Brent Fulgham.

        Replace ResourceLoadStatisticsStore C API by Cocoa SPI. The new Cocoa SPI is on
        WKWebsiteDataStore, which allows us to get rid of the WebResourceLoadStatisticsManager
        singleton as the SPI can now interact directly with the WebResourceLoadStatisticsStore.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp: Removed.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h: Removed.
        Drop old C API.

        * UIProcess/WebResourceLoadStatisticsManager.cpp: Removed.
        * UIProcess/WebResourceLoadStatisticsManager.h: Removed.
        Drop WebResourceLoadStatisticsManager singleton which was only required by the
        C API. This is because the C API was global, rather than working on a specific
        store.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        Add new Cocoa SPI on WKWebsiteDataStore. This is only used for testing.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        Stop registering the store with the WebResourceLoadStatisticsManager singleton,
        as this singleton is gone.

        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resourceLoadStatistics):
        Add new getter to retrieve the WebResourceLoadStatisticsStore from the
        WebsiteDataStore. This is needed by the new Cocoa SPI.

        * WebKit2.xcodeproj/project.pbxproj:
        Drop some files.

2017-06-30  Megan Gardner  <megan_gardner@apple.com>

        Unreviewed mac build fix.

        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:

2017-06-30  Megan Gardner  <megan_gardner@apple.com>

        Add API to get WKActivatedElementInfo
        https://bugs.webkit.org/show_bug.cgi?id=174001
        <rdar://problem/29165518>
        
        Adding a way to get a WKActivatedElementInfo for a point on a WKWebView.

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView requestActivatedElementAtPosition:completionBlock:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
        (+[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):
        (-[_WKActivatedElementInfo infoWithType:withInteractionInformationAtPosition:]):
        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:

2017-06-30  Tim Horton  <timothy_horton@apple.com>

        Use API instead of SPI for content inset adjustment behavior
        https://bugs.webkit.org/show_bug.cgi?id=174050

        Reviewed by Sam Weinig.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKScrollView.mm:
        (-[WKScrollView initWithFrame:]):
        (-[WKScrollView setContentInsetAdjustmentBehavior:]):
        (-[WKScrollView _setContentInsetAdjustmentBehaviorInternal:]):
        (-[WKScrollView _setContentInsetAdjustmentBehavior:]): Deleted.
        Switch over to the API. The old SPI calls the API internally, so our
        override will now cover all callers.

2017-06-30  Chris Dumez  <cdumez@apple.com>

        Move store logic from WebResourceLoadStatisticsManager to WebResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174038

        Reviewed by Brent Fulgham.

        Move store logic from WebResourceLoadStatisticsManager to WebResourceLoadStatisticsStore.
        WebResourceLoadStatisticsManager is now essentially a proxy to the
        WebResourceLoadStatisticsStore to support the current C API.

        In a follow-up, I plan to to replace the C API with a Cocoa SPI which works on a
        WebResourceLoadStatisticsStore directly instead of requiring a
        WebResourceLoadStatisticsManager singleton.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetMinimumTimeBetweenDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerResetToConsistentState):
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm: Removed.
        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
        (WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::WebResourceLoadStatisticsManager):
        (WebKit::WebResourceLoadStatisticsManager::~WebResourceLoadStatisticsManager):
        (WebKit::WebResourceLoadStatisticsManager::setStatisticsStore):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryStore):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
        (WebKit::WebResourceLoadStatisticsManager::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsManager::fireDataModificationHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireTelemetryHandler):
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::primaryDomain):
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::fireDataModificationHandler):
        (WebKit::WebResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadStatisticsStore::fireTelemetryHandler):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::clearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-30  John Wilander  <wilander@apple.com>

        [WK2] Resource load statistics code is spamming the WebProcess with a test-only message 
        https://bugs.webkit.org/show_bug.cgi?id=174048
        <rdar://problem/33062376>

        Reviewed by Brent Fulgham.

        Fix the telemetry data message send so that it is not generated during normal operations.
        This is only meant to be used by WebKitTestRunner.

        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit): 

2017-06-30  Daniel Bates  <dabates@apple.com>

        Attempt to fix the WPE build following <https://trac.webkit.org/changeset/219013>
        (https://bugs.webkit.org/show_bug.cgi?id=165160)

        Update the prototype of UIClient::createNewPage() to take a API::FrameInfo& instead of
        a WebFrameProxy* and a const WebCore::SecurityOriginData&.

        * UIProcess/API/glib/WebKitUIClient.cpp:

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

        Stop soft linking with CFNetwork
        https://bugs.webkit.org/show_bug.cgi?id=174029

        Reviewed by Jer Noble.

        * Shared/mac/CookieStorageShim.mm:

2017-06-30  Daniel Bates  <dabates@apple.com>

        API::FrameInfo should know the web page that contains the frame; add API property webView to WKFrameInfo
        https://bugs.webkit.org/show_bug.cgi?id=165160
        <rdar://problem/29451999>

        Reviewed by Brady Eidson.

        Expose a property on WKFrameInfo to retrieve the WKWebView of the web page that contains the
        frame. This will allow an embedding client to know the web view that initiated the navigation
        request as well as differentiate between a navigation initiated by web content from one
        initiated via API.

        The majority of this change is passing the document D that initiated the targeted navigation
        or called window.open() through the loading machinery to the FrameLoaderClient. The changes
        to pass this information to the FrameLoaderClient when creating a new window are straightforward.
        For targeted navigation, the WebKit2 FrameLoaderClient implementation now computes the info
        for the originating frame regardless of the navigation type (NavigationAction::type()).
        (Currently we only compute the originating frame for hyperlink activated navigations,
        form submissions, and form resubmissions). The WebProcess computes the page ID of the page
        that contains the originating frame and sends that to the UIProcess so that it can create
        an API::FrameInfo for the originating frame and associate the page that contains the frame,
        if the navigation was triggered by web content. If the navigation was triggered by API
        (e.g. -[WKWebView goBack]) then the created API::FrameInfo does not have an associated page
        so that an embedding client can distinguish between a navigation initiated by web content
        from a navigation that it initiated via API depending on whether API::FrameInfo::page() is
        nullptr. We expose property webView on the Mac and iOS API class WKFrameInfo to return the
        WKWebView corresponding to API::FrameInfo::page().

        A small change that this patch makes is to have the WebProcess compute the originating frame
        info (call WebFrame::info()) and send it over to the UIProcess as opposed to sending the frame
        ID of the originating frame and having the UIProcess compute the frame info from it. We do this
        because the UIProcess may not be able to compute the frame info for the originating frame if
        the window that it was contained in was closed between the time the WebProcess sent the frame
        ID to the UIProcess and the UIProcess received it.

        * UIProcess/API/APIFrameInfo.cpp:
        (API::FrameInfo::create):
        (API::FrameInfo::FrameInfo):
        (API::FrameInfo::clearPage):
        * UIProcess/API/APIFrameInfo.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        (API::UIClient::createNewPageAsync):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKFrameInfo.h:
        * UIProcess/API/Cocoa/WKFrameInfo.mm:
        (-[WKFrameInfo description]):
        (-[WKFrameInfo webView]):
        * UIProcess/API/Cocoa/WKUserContentController.mm:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPageCommon):
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::createNewPageAsync):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::loadURL):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchCreatePage):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab):

2017-06-29  Jer Noble  <jer.noble@apple.com>

        Make Legacy EME API controlled by RuntimeEnabled setting.
        https://bugs.webkit.org/show_bug.cgi?id=173994

        Reviewed by Sam Weinig.

        Add a new WKWebViewConfiguration property, as well as a new WKPreferences function, both able to control
        WebCore's new RuntimeEnabledFeature setting for the Legacy EME API.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesGetLegacyEncryptedMediaAPIEnabled):
        (WKPreferencesSetLegacyEncryptedMediaAPIEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setLegacyEncryptedMediaAPIEnabled:]):
        (-[WKWebViewConfiguration _legacyEncryptedMediaAPIEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-06-30  Jer Noble  <jer.noble@apple.com>

        REGRESSION (r218757): Touch Bar's media scrubber timeline runs from 00:00 to 00:00 and has no playhead
        https://bugs.webkit.org/show_bug.cgi?id=174032

        Reviewed by Eric Carlson.

        Fix a copypasta error where durationChange notifications were changing the value of muted.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionManagerProxy::durationChanged):

2017-06-30  Chris Dumez  <cdumez@apple.com>

        Move ResourceLoadStatisticsStore to WebKit2/UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=174033

        Reviewed by Brent Fulgham.

        Move ResourceLoadStatisticsStore to WebKit2/UIProcess since it is only
        used in the WebKit2 UIProcess.

        * CMakeLists.txt:
        * UIProcess/Storage/ResourceLoadStatisticsStore.cpp: Renamed from Source/WebCore/loader/ResourceLoadStatisticsStore.cpp.
        (WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
        (WebKit::ResourceLoadStatisticsStore::readDataFromDecoder):
        (WebKit::ResourceLoadStatisticsStore::clearInMemory):
        (WebKit::ResourceLoadStatisticsStore::clearInMemoryAndPersistent):
        (WebKit::ResourceLoadStatisticsStore::mergeStatistics):
        (WebKit::ResourceLoadStatisticsStore::fireDataModificationHandler):
        (WebKit::ResourceLoadStatisticsStore::fireTelemetryHandler):
        (WebKit::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler):
        (WebKit::ResourceLoadStatisticsStore::processStatistics):
        (WebKit::ResourceLoadStatisticsStore::sortedPrevalentResourceTelemetry):
        (WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords):
        (WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved):
        (WebKit::ResourceLoadStatisticsStore::dataRecordsWereRemoved):
        (WebKit::ResourceLoadStatisticsStore::statisticsLock):
        * UIProcess/Storage/ResourceLoadStatisticsStore.h: Renamed from Source/WebCore/loader/ResourceLoadStatisticsStore.h.
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::primaryDomain):
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        * UIProcess/WebResourceLoadStatisticsTelemetry.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-30  Ryosuke Niwa  <rniwa@webkit.org>

        Ran sort-Xcode-project-file.

        * WebKit2.xcodeproj/project.pbxproj:

2017-06-30  Chris Dumez  <cdumez@apple.com>

        ResourceLoadObserver does not need a ResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174013

        Reviewed by Brent Fulgham.

        ResourceLoadObserver does not need a ResourceLoadStatisticsStore. ResourceLoadStatisticsStore is too complicated for its needs.
        ResourceLoadStatisticsStore can then be moved to WebKit2/UIProcess in a follow-up.

        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::WebProcess::statisticsChangedTimerFired):
        * WebProcess/WebProcess.h:

2017-06-30  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS][macOS] Update XPC services process launch dictionary
        https://bugs.webkit.org/show_bug.cgi?id=173995
        <rdar://problem/32797264>

        Reviewed by Alex Christensen.

        Update the WebProcess and Plugin Process XPC launch dictionaries to activate
        improved ALSR features when launching.

        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

2017-06-30  Chris Dumez  <cdumez@apple.com>

        Merge WebResourceLoadStatisticsManager and WebResourceLoadObserver
        https://bugs.webkit.org/show_bug.cgi?id=174008

        Reviewed by Brent Fulgham.

        Merge WebResourceLoadStatisticsManager and WebResourceLoadObserver. One was basically
        a proxy to the other.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetPrevalentResource):
        (WKResourceLoadStatisticsManagerIsPrevalentResource):
        (WKResourceLoadStatisticsManagerSetHasHadUserInteraction):
        (WKResourceLoadStatisticsManagerIsHasHadUserInteraction):
        (WKResourceLoadStatisticsManagerSetGrandfathered):
        (WKResourceLoadStatisticsManagerIsGrandfathered):
        (WKResourceLoadStatisticsManagerSetSubframeUnderTopFrameOrigin):
        (WKResourceLoadStatisticsManagerSetSubresourceUnderTopFrameOrigin):
        (WKResourceLoadStatisticsManagerSetSubresourceUniqueRedirectTo):
        (WKResourceLoadStatisticsManagerSetTimeToLiveUserInteraction):
        (WKResourceLoadStatisticsManagerSetTimeToLiveCookiePartitionFree):
        (WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerSetGrandfatheringTime):
        (WKResourceLoadStatisticsManagerFireDataModificationHandler):
        (WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandler):
        (WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandlerForOneDomain):
        (WKResourceLoadStatisticsManagerFireTelemetryHandler):
        (WKResourceLoadStatisticsManagerSetNotifyPagesWhenDataRecordsWereScanned):
        (WKResourceLoadStatisticsManagerSetShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerSetNotifyPagesWhenTelemetryWasCaptured):
        (WKResourceLoadStatisticsManagerSetShouldSubmitTelemetry):
        (WKResourceLoadStatisticsManagerClearInMemoryAndPersistentStore):
        (WKResourceLoadStatisticsManagerClearInMemoryAndPersistentStoreModifiedSinceHours):
        (WKResourceLoadStatisticsManagerResetToConsistentState):
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
        (WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
        * UIProcess/WebResourceLoadObserver.cpp: Removed.
        * UIProcess/WebResourceLoadObserver.h: Removed.
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::primaryDomain):
        (WebKit::WebResourceLoadStatisticsManager::shared):
        (WebKit::WebResourceLoadStatisticsManager::setStatisticsStore):
        (WebKit::WebResourceLoadStatisticsManager::setStatisticsQueue):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryStore):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
        (WebKit::WebResourceLoadStatisticsManager::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsManager::fireDataModificationHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireTelemetryHandler):
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Drag caret rect is incorrectly computed when dropping in editable content in iframes
        https://bugs.webkit.org/show_bug.cgi?id=174017
        <rdar://problem/32959782>

        Reviewed by Simon Fraser.

        Send the drag caret rect in root view coordinates over to the UI process.

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

        Add basic test plumbing to fetch the current drag caret rect.

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

2017-06-30  Youenn Fablet  <youenn@apple.com>

        Support PeerConnectionStates::BundlePolicy::MaxBundle when setting rtc configuration
        https://bugs.webkit.org/show_bug.cgi?id=169389

        Reviewed by Alex Christensen.

        * fast/mediastream/RTCPeerConnection-getConfiguration-expected.txt:

2017-06-29  Ryosuke Niwa  <rniwa@webkit.org>

        Assert that callback ID is not 0 or -1 during encoding and decoding
        https://bugs.webkit.org/show_bug.cgi?id=173803

        Reviewed by Brady Eidson.

        To diagnosing the hang inside Safari (<rdar://problem/32841256>), add assertions for the callback ID
        to be not 0 or -1 during encoding and decoding of IPC messages since the latest analysis seems to
        indicate the hang is caused by the hash map getting corrupted by the insertion of 0 (empty value).

        Wrapped the uint64_t in CallbackID and OptionalCallbackID to add assertions.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        * Shared/CallbackID.h: Added.
        (WebKit::CallbackID::CallbackID):
        (WebKit::CallbackID::operator==):
        (WebKit::CallbackID::toInteger):
        (WebKit::CallbackID::isValid):
        (WebKit::CallbackID::isValidCallbackID): A callback ID is valid when it's neither 0 nor -1.
        (WebKit::CallbackID::fromInteger): Create a CallbackID object from potentially unsafe value.
        (WebKit::CallbackID::generateID): Generates the next callback ID. Moved from CallbackBase.
        (WebKit::CallbackID::encode): Added. Assert that it's neither 0 nor -1.
        (WebKit::CallbackID::decode): Ditto.
        (WTF::CallbackIDHash::hash):
        (WTF::CallbackIDHash::equal):
        (WTF::HashTraits<WebKit::CallbackID>::emptyValue):
        (WTF::HashTraits<WebKit::CallbackID>::constructDeletedValue):
        (WTF::HashTraits<WebKit::CallbackID>::isDeletedValue):
        * Shared/OptionalCallbackID.h: Added. Unlike CallbackID, callback ID here can be 0.
        (WebKit::OptionalCallbackID::OptionalCallbackID):
        (WebKit::OptionalCallbackID::toInteger):
        (WebKit::OptionalCallbackID::callbackID): Returns a valid CallbackID object. The caller of
        this function must have verified that the ID is neither 0 or -1 before calling this function.
        (WebKit::OptionalCallbackID::operator bool):
        (WebKit::OptionalCallbackID::isValid):
        (WebKit::OptionalCallbackID::isValidCallbackID):
        (WebKit::OptionalCallbackID::encode): Since OptionalCallbackID can be 0, only assert that it's not -1.
        (WebKit::OptionalCallbackID::decode): Ditto.
        * Shared/mac/RemoteLayerTreeTransaction.h:
        * Shared/mac/RemoteLayerTreeTransaction.h:
        * UIProcess/GenericCallback.h:
        (WebKit::CallbackBase::callbackID): Returns a CallbackID object instead of uint64_t.
        (WebKit::CallbackBase::CallbackBase):
        (WebKit::CallbackBase::generateCallbackID): Deleted.
        (WebKit::CallbackMap::put): Returns a callback ID. Also added a version that doesn't take activity token
        as used in WebCookieManagerProxy
        (WebKit::CallbackMap::take): Takes a callback ID.
        * UIProcess/WebCookieManagerProxy.cpp: Updated the code as callback maps are merged.
        (WebKit::WebCookieManagerProxy::processPoolDestroyed):
        (WebKit::WebCookieManagerProxy::processDidClose):
        (WebKit::WebCookieManagerProxy::getHostnamesWithCookies):
        (WebKit::WebCookieManagerProxy::didGetHostnamesWithCookies):
        (WebKit::WebCookieManagerProxy::deleteCookie):
        (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManagerProxy::setCookie):
        (WebKit::WebCookieManagerProxy::setCookies):
        (WebKit::WebCookieManagerProxy::getAllCookies):
        (WebKit::WebCookieManagerProxy::getCookies):
        (WebKit::WebCookieManagerProxy::didSetCookies):
        (WebKit::WebCookieManagerProxy::didGetCookies):
        (WebKit::WebCookieManagerProxy::didDeleteCookies):
        (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManagerProxy::didGetHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManagerProxy::didSetHTTPCookieAcceptPolicy):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebCookieManagerProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setInitialFocus):
        (WebKit::WebPageProxy::validateCommand):
        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
        (WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
        (WebKit::WebPageProxy::getSourceForFrame):
        (WebKit::WebPageProxy::getContentsAsString):
        (WebKit::WebPageProxy::getBytecodeProfile):
        (WebKit::WebPageProxy::getSamplingProfilerOutput):
        (WebKit::WebPageProxy::getContentsAsMHTMLData):
        (WebKit::WebPageProxy::getSelectionOrContentsAsString):
        (WebKit::WebPageProxy::getSelectionAsWebArchiveData):
        (WebKit::WebPageProxy::getMainResourceDataOfFrame):
        (WebKit::WebPageProxy::getResourceDataFromFrame):
        (WebKit::WebPageProxy::getWebArchiveOfFrame):
        (WebKit::WebPageProxy::forceRepaint):
        (WebKit::WebPageProxy::clearLoadDependentCallbacks):
        (WebKit::WebPageProxy::voidCallback):
        (WebKit::WebPageProxy::dataCallback):
        (WebKit::WebPageProxy::imageCallback):
        (WebKit::WebPageProxy::stringCallback):
        (WebKit::WebPageProxy::invalidateStringCallback):
        (WebKit::WebPageProxy::scriptValueCallback):
        (WebKit::WebPageProxy::computedPagesCallback):
        (WebKit::WebPageProxy::validateCommandCallback):
        (WebKit::WebPageProxy::unsignedCallback):
        (WebKit::WebPageProxy::editingRangeCallback):
        (WebKit::WebPageProxy::machSendRightCallback):
        (WebKit::WebPageProxy::rectForCharacterRangeCallback):
        (WebKit::WebPageProxy::printFinishedCallback):
        (WebKit::WebPageProxy::computePagesForPrinting):
        (WebKit::WebPageProxy::drawRectToImage):
        (WebKit::WebPageProxy::drawPagesToPDF):
        (WebKit::WebPageProxy::drawPagesForPrinting):
        (WebKit::WebPageProxy::getMarkedRangeAsync):
        (WebKit::WebPageProxy::getSelectedRangeAsync):
        (WebKit::WebPageProxy::characterIndexForPointAsync):
        (WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
        (WebKit::WebPageProxy::takeSnapshot):
        (WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
        (WebKit::WebPageProxy::getLoadDecisionForIcon):
        (WebKit::WebPageProxy::finishedLoadingIcon):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::gestureCallback):
        (WebKit::WebPageProxy::touchesCallback):
        (WebKit::WebPageProxy::autocorrectionDataCallback):
        (WebKit::WebPageProxy::selectionContextCallback):
        (WebKit::WebPageProxy::autocorrectionContextCallback):
        (WebKit::WebPageProxy::selectionRectsCallback):
        (WebKit::WebPageProxy::selectWithGesture):
        (WebKit::WebPageProxy::updateSelectionWithTouches):
        (WebKit::WebPageProxy::requestAutocorrectionData):
        (WebKit::WebPageProxy::applyAutocorrection):
        (WebKit::WebPageProxy::executeEditCommand):
        (WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
        (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::selectPositionAtPoint):
        (WebKit::WebPageProxy::beginSelectionInDirection):
        (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPageProxy::requestDictationContext):
        (WebKit::WebPageProxy::requestAutocorrectionContext):
        (WebKit::WebPageProxy::getSelectionContext):
        (WebKit::WebPageProxy::selectWithTwoTouches):
        (WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
        (WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
        (WebKit::WebPageProxy::moveSelectionByOffset):
        (WebKit::WebPageProxy::focusNextAssistedNode):
        (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):
        (WebKit::WebPageProxy::drawToPDFCallback):
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
        (-[WKPrintingView _askPageToComputePageRects]):
        (-[WKPrintingView _drawPreview:]):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
        (WebKit::WebPageProxy::attributedStringForCharacterRangeCallback):
        (WebKit::WebPageProxy::fontAtSelection):
        (WebKit::WebPageProxy::fontAtSelectionCallback):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        (WebKit::WebCookieManager::deleteCookie):
        (WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManager::getAllCookies):
        (WebKit::WebCookieManager::getCookies):
        (WebKit::WebCookieManager::setCookie):
        (WebKit::WebCookieManager::setCookies):
        (WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):
        * WebProcess/Cookies/WebCookieManager.h:
        * WebProcess/Cookies/WebCookieManager.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::getLoadDecisionForIcon):
        (WebKit::WebFrameLoaderClient::finishedLoadingIcon):
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::forceRepaintAsync):
        (WebKit::AcceleratedDrawingArea::activityStateDidChange):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::forceRepaintAsync):
        (WebKit::CoordinatedLayerTreeHost::renderNextFrame):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::forceRepaintAsync):
        (WebKit::DrawingArea::activityStateDidChange):
        (WebKit::DrawingArea::addTransactionCallbackID):
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/LayerTreeHost.h:
        (WebKit::LayerTreeHost::forceRepaintAsync):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::takeSnapshot):
        (WebKit::WebPage::validateCommand):
        (WebKit::WebPage::setInitialFocus):
        (WebKit::WebPage::setActivityState):
        (WebKit::WebPage::runJavaScriptInMainFrame):
        (WebKit::WebPage::getContentsAsString):
        (WebKit::WebPage::getContentsAsMHTMLData):
        (WebKit::WebPage::getRenderTreeExternalRepresentation):
        (WebKit::WebPage::getSelectionAsWebArchiveData):
        (WebKit::WebPage::getSelectionOrContentsAsString):
        (WebKit::WebPage::getSourceForFrame):
        (WebKit::WebPage::getMainResourceDataOfFrame):
        (WebKit::WebPage::getResourceDataFromFrame):
        (WebKit::WebPage::getWebArchiveOfFrame):
        (WebKit::WebPage::forceRepaint):
        (WebKit::WebPage::computePagesForPrinting):
        (WebKit::WebPage::drawRectToImage):
        (WebKit::WebPage::drawPagesToPDF):
        (WebKit::WebPage::drawPagesForPrinting):
        (WebKit::WebPage::didFinishPrintOperation):
        (WebKit::WebPage::getMarkedRangeAsync):
        (WebKit::WebPage::getSelectedRangeAsync):
        (WebKit::WebPage::characterIndexForPointAsync):
        (WebKit::WebPage::firstRectForCharacterRangeAsync):
        (WebKit::WebPage::getBytecodeProfile):
        (WebKit::WebPage::getSamplingProfilerOutput):
        (WebKit::WebPage::didGetLoadDecisionForIcon):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::WebPrintOperationGtk::WebPrintOperationGtk):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getSelectionContext):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::WebPage::selectWithTwoTouches):
        (WebKit::WebPage::moveSelectionByOffset):
        (WebKit::WebPage::getRectsForGranularityWithSelectionOffset):
        (WebKit::WebPage::getRectsAtSelectionOffsetWithText):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::beginSelectionInDirection):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):
        (WebKit::WebPage::requestDictationContext):
        (WebKit::WebPage::requestAutocorrectionData):
        (WebKit::WebPage::applyAutocorrection):
        (WebKit::WebPage::executeEditCommandWithCallback):
        (WebKit::WebPage::requestAutocorrectionContext):
        (WebKit::WebPage::focusNextAssistedNode):
        (WebKit::WebPage::computePagesForPrintingAndDrawToPDF):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
        (WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync):
        (WebKit::TiledCoreAnimationDrawingArea::activityStateDidChange):
        (WebKit::TiledCoreAnimationDrawingArea::didUpdateActivityStateTimerFired):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
        (WebKit::WebPage::fontAtSelection):

2017-06-29  Andy Estes  <aestes@apple.com>

        [iOS] Don't confuse coordinate spaces when computing the size of PDF snapshots
        https://bugs.webkit.org/show_bug.cgi?id=173996
        <rdar://problem/32961028>

        Reviewed by Tim Horton.

        When computing the printing rect for PDF snapshots, we were getting the width the
        WKContentView's bounds and the height from the WKScrollView's contentSize. These sizes are
        in different coordinate spaces, leading to incorrect clipping on sites that have a non-1
        scale factor.

        Fix this by using the WKContentView's bounds for both width and height.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _wk_pageCountForPrintFormatter:]):

2017-06-29  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r218903.

        This patch and its fix cause immediate flakiness on all WK2
        testers

        Reverted changeset:

        "Support PeerConnectionStates::BundlePolicy::MaxBundle when
        setting rtc configuration"
        https://bugs.webkit.org/show_bug.cgi?id=169389
        http://trac.webkit.org/changeset/218903

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

        Split ResourceLoadObserver into 2 classes: one for WebCore and one for the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=173990

        Reviewed by Brent Fulgham.

        Split ResourceLoadObserver into 2 classes: one for WebCore and one for the UIProcess.
        They really have different API and there is therefore close to no code duplication.

        * CMakeLists.txt:
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
        (WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
        * UIProcess/WebResourceLoadObserver.cpp: Added.
        (WebKit::primaryDomain):
        (WebKit::WebResourceLoadObserver::sharedObserver):
        (WebKit::WebResourceLoadObserver::setStatisticsStore):
        (WebKit::WebResourceLoadObserver::setStatisticsQueue):
        (WebKit::WebResourceLoadObserver::clearInMemoryStore):
        (WebKit::WebResourceLoadObserver::clearInMemoryAndPersistentStore):
        (WebKit::WebResourceLoadObserver::logUserInteraction):
        (WebKit::WebResourceLoadObserver::clearUserInteraction):
        (WebKit::WebResourceLoadObserver::hasHadUserInteraction):
        (WebKit::WebResourceLoadObserver::setPrevalentResource):
        (WebKit::WebResourceLoadObserver::isPrevalentResource):
        (WebKit::WebResourceLoadObserver::clearPrevalentResource):
        (WebKit::WebResourceLoadObserver::setGrandfathered):
        (WebKit::WebResourceLoadObserver::isGrandfathered):
        (WebKit::WebResourceLoadObserver::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadObserver::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadObserver::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadObserver::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadObserver::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadObserver::setGrandfatheringTime):
        (WebKit::WebResourceLoadObserver::fireDataModificationHandler):
        (WebKit::WebResourceLoadObserver::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadObserver::fireTelemetryHandler):
        * UIProcess/WebResourceLoadObserver.h: Added.
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsManager::setHasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsManager::fireDataModificationHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandlerForOneDomain):
        (WebKit::WebResourceLoadStatisticsManager::fireTelemetryHandler):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStoreModifiedSinceHours):
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-29  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove custom binding for UserMessageHandlersNamespace
        https://bugs.webkit.org/show_bug.cgi?id=173956

        Reviewed by Darin Adler.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
        (webkit_dom_dom_window_webkit_message_handlers_post_message):
        Update for name change.

2017-06-29  John Wilander  <wilander@apple.com>

        Fix for intermittent Layout Test fail http/tests/loading/resourceLoadStatistics/telemetry-generation.html
        https://bugs.webkit.org/show_bug.cgi?id=173940
        <rdar://problem/33018125>

        Reviewed by Brent Fulgham.

        This change allows the TestController to turn off
        regular resource load statistics telemetry submission
        and to manually control when telemetry is calculated
        and submitted.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetShouldSubmitTelemetry):
            New test infrastructure.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setShouldSubmitTelemetry):
            New test infrastructure.
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setShouldSubmitTelemetry):
            New test infrastructure.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            The test function now calls
            WebResourceLoadStatisticsStore::submitTelemetry() directly
            instead of firing the timer.
        (WebKit::WebResourceLoadStatisticsStore::telemetryTimerFired):
            Now checks whether it should submit telemetry or not.
        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
            Split out so that the test code doesn't have to fire the timer.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
            Now doesn't submit if it's executed by test code.

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

        Slight clean up of WebResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=173976

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::dataTypesToRemove):
        (WebKit::WebResourceLoadStatisticsStore::classifyResource):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::stopMonitoringStatisticsStorage):
        (WebKit::initializeDataTypesToRemove): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        (WebKit::WebResourceLoadStatisticsStore::coreStore): Deleted.

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

        WKContentRuleLists with if-top-url or unless-top-url should run regex against entire top URL
        https://bugs.webkit.org/show_bug.cgi?id=173980

        Reviewed by Tim Horton.

        if-top-url and unless-top-url were broken inside WebKit2 apps.  This fixes them and adds a test.
        ContentExtension::populateConditionCacheIfNeeded was calling WebCompiledContentRuleList::conditionsApplyOnlyToDomain
        but m_data.conditionsApplyOnlyToDomainOffset was always 0 instead of ConditionsApplyOnlyToDomainOffset because 
        it wasn't being encoded and decoded when telling the WebProcess about the content rule list.  This was causing us
        to use whatever was at offset 0 in the file instead of the correct value stored in the file to determine
        whether to run regular expressions against the entire top URL for if-top-url or unless-top-url or against
        just the domain for if-top-domain or unless-top-domain.  Luckily, offset 0 in the file is always 
        ContentRuleListStore::CurrentContentRuleListFileVersion, so it was deterministic and easy to debug.

        I should have added a LayoutTest with r213669 to verify correct behavior in an actual WKWebView,
        but I didn't because it wouldn't have caught regressions since the contentextension tests are
        marked as flaky since r206914, but once that is fixed the new test http/tests/contentextensions/top-url.html
        will verify that this feature is behaving correctly.  It failed before this change and passes after.

        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::encode):
        (WebKit::WebCompiledContentRuleListData::decode):

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

        statistics.mostRecentUserInteraction should be of type WallTime
        https://bugs.webkit.org/show_bug.cgi?id=173974

        Reviewed by Brent Fulgham.

        statistics.mostRecentUserInteraction should be of type WallTime for clarity.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):

2017-06-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        Replace staging-prefixed UIKit drag and drop delegate methods with their public SDK versions
        https://bugs.webkit.org/show_bug.cgi?id=173959

        Reviewed by Sam Weinig.

        Remove references to _api_-prefixed UIDragInteractionDelegate and UIDropInteractionDelegate methods,
        and replace them with their counterparts in the public SDK.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dragInteraction:previewForLiftingItem:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:sessionDidEnter:]):
        (-[WKContentView dropInteraction:sessionDidUpdate:]):
        (-[WKContentView _simulateDataInteractionEntered:]):
        (-[WKContentView _simulateDataInteractionUpdated:]):
        (-[WKContentView _simulateDataInteractionSessionDidEnd:]):
        (-[WKContentView _api_dragInteraction:previewForLiftingItem:session:]): Deleted.
        (-[WKContentView _api_dragInteraction:session:didEndWithOperation:]): Deleted.
        (-[WKContentView _api_dragInteraction:item:willAnimateCancelWithAnimator:]): Deleted.
        (-[WKContentView _api_dropInteraction:sessionDidEnter:]): Deleted.
        (-[WKContentView _api_dropInteraction:sessionDidUpdate:]): Deleted.

2017-06-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ unit tests crashing after r218922.

        We need to check if icon database exists and is open now on dispose and API entry points.

        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (webkitFaviconDatabaseDispose):
        (webkit_favicon_database_get_favicon_uri):
        (webkit_favicon_database_clear):

2017-06-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Implement API::IconLoadingClient and rework WebKitFaviconDatabase to use IconDatabase directly
        https://bugs.webkit.org/show_bug.cgi?id=173877

        Reviewed by Brady Eidson.

        This way IconDatabase and its related classes can be removed from WebCore, as well as the WebKit2 implementation
        and C API. For now I've copied IconDatabase from WebCore to WebKit2 under the glib API directory, adding the
        related classes as private inside IconDatabase, and removing some methods that are not used by the GLib API.

        * PlatformGTK.cmake:
        * UIProcess/API/glib/IconDatabase.cpp: Added.
        (WebKit::urlForLogging):
        (WebKit::defaultClient):
        (WebKit::IconDatabase::IconRecord::IconRecord):
        (WebKit::IconDatabase::IconRecord::~IconRecord):
        (WebKit::IconDatabase::IconRecord::image):
        (WebKit::IconDatabase::IconRecord::setImageData):
        (WebKit::IconDatabase::IconRecord::loadImageFromResource):
        (WebKit::IconDatabase::IconRecord::imageDataStatus):
        (WebKit::IconDatabase::IconRecord::snapshot):
        (WebKit::IconDatabase::PageURLRecord::PageURLRecord):
        (WebKit::IconDatabase::PageURLRecord::~PageURLRecord):
        (WebKit::IconDatabase::PageURLRecord::setIconRecord):
        (WebKit::IconDatabase::PageURLRecord::snapshot):
        (WebKit::IconDatabase::setClient):
        (WebKit::IconDatabase::open):
        (WebKit::IconDatabase::close):
        (WebKit::IconDatabase::removeAllIcons):
        (WebKit::documentCanHaveIcon):
        (WebKit::IconDatabase::synchronousIconForPageURL):
        (WebKit::IconDatabase::synchronousIconURLForPageURL):
        (WebKit::IconDatabase::retainIconForPageURL):
        (WebKit::IconDatabase::performRetainIconForPageURL):
        (WebKit::IconDatabase::releaseIconForPageURL):
        (WebKit::IconDatabase::performReleaseIconForPageURL):
        (WebKit::IconDatabase::setIconDataForIconURL):
        (WebKit::IconDatabase::setIconURLForPageURL):
        (WebKit::IconDatabase::synchronousLoadDecisionForIconURL):
        (WebKit::IconDatabase::synchronousIconDataKnownForIconURL):
        (WebKit::IconDatabase::setEnabled):
        (WebKit::IconDatabase::isEnabled):
        (WebKit::IconDatabase::setPrivateBrowsingEnabled):
        (WebKit::IconDatabase::isPrivateBrowsingEnabled):
        (WebKit::IconDatabase::delayDatabaseCleanup):
        (WebKit::IconDatabase::allowDatabaseCleanup):
        (WebKit::IconDatabase::checkIntegrityBeforeOpening):
        (WebKit::IconDatabase::IconDatabase):
        (WebKit::IconDatabase::~IconDatabase):
        (WebKit::IconDatabase::wakeSyncThread):
        (WebKit::IconDatabase::scheduleOrDeferSyncTimer):
        (WebKit::IconDatabase::syncTimerFired):
        (WebKit::IconDatabase::isOpen):
        (WebKit::IconDatabase::isOpenBesidesMainThreadCallbacks):
        (WebKit::IconDatabase::databasePath):
        (WebKit::IconDatabase::defaultDatabaseFilename):
        (WebKit::IconDatabase::getOrCreateIconRecord):
        (WebKit::IconDatabase::getOrCreatePageURLRecord):
        (WebKit::IconDatabase::shouldStopThreadActivity):
        (WebKit::IconDatabase::iconDatabaseSyncThread):
        (WebKit::databaseVersionNumber):
        (WebKit::isValidDatabase):
        (WebKit::createDatabaseTables):
        (WebKit::IconDatabase::performOpenInitialization):
        (WebKit::IconDatabase::checkIntegrity):
        (WebKit::IconDatabase::performURLImport):
        (WebKit::IconDatabase::syncThreadMainLoop):
        (WebKit::IconDatabase::performPendingRetainAndReleaseOperations):
        (WebKit::IconDatabase::readFromDatabase):
        (WebKit::IconDatabase::writeToDatabase):
        (WebKit::IconDatabase::pruneUnretainedIcons):
        (WebKit::IconDatabase::checkForDanglingPageURLs):
        (WebKit::IconDatabase::removeAllIconsOnThread):
        (WebKit::IconDatabase::deleteAllPreparedStatements):
        (WebKit::IconDatabase::cleanupSyncThread):
        (WebKit::readySQLiteStatement):
        (WebKit::IconDatabase::setIconURLForPageURLInSQLDatabase):
        (WebKit::IconDatabase::setIconIDForPageURLInSQLDatabase):
        (WebKit::IconDatabase::removePageURLFromSQLDatabase):
        (WebKit::IconDatabase::getIconIDForIconURLFromSQLDatabase):
        (WebKit::IconDatabase::addIconURLToSQLDatabase):
        (WebKit::IconDatabase::getImageDataForIconURLFromSQLDatabase):
        (WebKit::IconDatabase::removeIconFromSQLDatabase):
        (WebKit::IconDatabase::writeIconSnapshotToSQLDatabase):
        (WebKit::IconDatabase::checkClosedAfterMainThreadCallback):
        (WebKit::IconDatabase::dispatchDidImportIconURLForPageURLOnMainThread):
        (WebKit::IconDatabase::dispatchDidImportIconDataForPageURLOnMainThread):
        (WebKit::IconDatabase::dispatchDidRemoveAllIconsOnMainThread):
        (WebKit::IconDatabase::dispatchDidFinishURLImportOnMainThread):
        * UIProcess/API/glib/IconDatabase.h: Added.
        (WebKit::IconDatabaseClient::didImportIconURLForPageURL):
        (WebKit::IconDatabaseClient::didImportIconDataForPageURL):
        (WebKit::IconDatabaseClient::didChangeIconForPageURL):
        (WebKit::IconDatabaseClient::didRemoveAllIcons):
        (WebKit::IconDatabaseClient::didFinishURLImport):
        (WebKit::IconDatabaseClient::didClose):
        (WebKit::IconDatabase::IconSnapshot::IconSnapshot):
        (WebKit::IconDatabase::IconSnapshot::iconURL):
        (WebKit::IconDatabase::IconSnapshot::timestamp):
        (WebKit::IconDatabase::IconSnapshot::data):
        (WebKit::IconDatabase::IconRecord::create):
        (WebKit::IconDatabase::IconRecord::getTimestamp):
        (WebKit::IconDatabase::IconRecord::setTimestamp):
        (WebKit::IconDatabase::IconRecord::iconURL):
        (WebKit::IconDatabase::IconRecord::retainingPageURLs):
        (WebKit::IconDatabase::PageURLSnapshot::PageURLSnapshot):
        (WebKit::IconDatabase::PageURLSnapshot::pageURL):
        (WebKit::IconDatabase::PageURLSnapshot::iconURL):
        (WebKit::IconDatabase::PageURLRecord::url):
        (WebKit::IconDatabase::PageURLRecord::iconRecord):
        (WebKit::IconDatabase::PageURLRecord::retain):
        (WebKit::IconDatabase::PageURLRecord::release):
        (WebKit::IconDatabase::PageURLRecord::retainCount):
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (_WebKitFaviconDatabasePrivate::~_WebKitFaviconDatabasePrivate):
        (getIconSurfaceSynchronously):
        (webkitFaviconDatabaseSetIconURLForPageURL):
        (webkitFaviconDatabaseCreate):
        (webkitFaviconDatabaseOpen):
        (webkitFaviconDatabaseIsOpen):
        (webkitFaviconDatabaseSetPrivateBrowsingEnabled):
        (webkitFaviconDatabaseGetLoadDecisionForIcon):
        (webkitFaviconDatabaseSetIconForPageURL):
        (webkit_favicon_database_get_favicon):
        (webkit_favicon_database_get_favicon_uri):
        * UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:
        * UIProcess/API/glib/WebKitIconLoadingClient.cpp: Added.
        (IconLoadingClient::IconLoadingClient):
        (attachIconLoadingClientToView):
        * UIProcess/API/glib/WebKitIconLoadingClient.h: Copied from Source/WebKit2/UIProcess/API/glib/WebKitFaviconDatabasePrivate.h.
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (ensureFaviconDatabase):
        (webkitWebContextEnableIconDatabasePrivateBrowsingIfNeeded):
        (webkitWebContextDisableIconDatabasePrivateBrowsingIfNeeded):
        (webkit_web_context_set_favicon_database_directory):
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        (webkitWebViewGetLoadDecisionForIcon):
        (webkitWebViewSetIcon):
        * UIProcess/API/glib/WebKitWebViewPrivate.h:

2017-06-28  Tim Horton  <timothy_horton@apple.com>

        MobileSafari was constantly using 10-15% CPU viewing a PDF
        https://bugs.webkit.org/show_bug.cgi?id=173944
        <rdar://problem/33039910>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _doAfterNextStablePresentationUpdate:]):
        (-[WKWebView _doAfterNextPresentationUpdate:]):
        (-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForPainting:]):
        Bail early and just dispatch_async the completion block if we are using a custom
        content view; these methods are very specific to the implementation of WKContentView
        and don't make sense with custom content views.

        doAfterNextStablePresentationUpdate is particularly egregious because, since
        we will never call the stable update callbacks (because we bail from didCommitLayerTree
        if we aren't using WKContentView), it will keep calling doAfterNextPresentationUpdate
        over and over again.

2017-06-28  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS][iOS] Don't request microphone access for clients that don't need it.
        https://bugs.webkit.org/show_bug.cgi?id=173948
        <rdar://problem/32103275>

        Reviewed by Eric Carlson.

        Don't bother requesting a sandbox extension to access the microphone for any clients
        on the Cocoa platform that are not Safari. Other clients don't have the necessary
        system entitlements, and always fail leading to annoying SandboxViolation reports.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess): 

2017-06-29  Zalan Bujtas  <zalan@apple.com>

        Move RenderEmbeddedObject::isReplacementObscured to HTMLPlugInElement
        https://bugs.webkit.org/show_bug.cgi?id=173802
        <rdar://problem/32884389>

        Reviewed by Simon Fraser.

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

2017-06-28  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION (r218842): com.apple.WebKit crash in WebKit::ProcessLauncher::launchProcess
        https://bugs.webkit.org/show_bug.cgi?id=173950

        Reviewed by Chris Dumez.

        Added a null check as m_xpcConnection could be nullptr here in the case platformInvalidate had been called.

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):

2017-06-28  Youenn Fablet  <youenn@apple.com>

        Support PeerConnectionStates::BundlePolicy::MaxBundle when setting rtc configuration
        https://bugs.webkit.org/show_bug.cgi?id=169389

        Reviewed by Alex Christensen.

        Updating according new WebCore LIbWebRTCProvider API.

        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCProvider::createPeerConnection):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:

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

        [iOS] Allow WKWebView clients to play audio in the background
        https://bugs.webkit.org/show_bug.cgi?id=173932
        <rdar://problem/32851547>

        Reviewed by Ryosuke Niwa.

        Allow WKWebView clients (such as MobileSafari) to play audio in the background
        by taking a process assertion whenever a WebPage is audible.

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

2017-06-28  Brent Fulgham  <bfulgham@apple.com>

        Teach ResourceLoadStatistics to recognize changes in the file system
        https://bugs.webkit.org/show_bug.cgi?id=173800
        <rdar://problem/32937842>

        Reviewed by Chris Dumez.

        We want to support the case where multiple UI processes choose to share the same
        statistics file. To support this, update the ResourceLoadStatistics logic to be aware
        that the statistics data file might change underneath it, and to take appropriate
        action when it does.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsEnabled): When we enable
        the statistics, read in the data and then watch for changes.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Add a
        'delete data' handler to remove the file on disk, not just write an empty store.
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Use ASCIILiteral.
        (WebKit::WebResourceLoadStatisticsStore::refreshFromDisk): Convenience function.
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk): Sync with any on-disk
        storage before writing out.
        (WebKit::openAndLockFile): Convenience function.
        (WebKit::closeAndUnlockFile): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk): Revise to lock file (on
        platforms that support it) before writing to disk.
        (WebKit::WebResourceLoadStatisticsStore::deleteStoreFromDisk): Added convenience function.
        (WebKit::WebResourceLoadStatisticsStore::clearInMemoryData): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage): Create a
        file system monitor to watch for file changes.
        (WebKit::WebResourceLoadStatisticsStore::syncWithExistingStatisticsStorageIfNeeded): Added
        convenience function.
        (WebKit::WebResourceLoadStatisticsStore::createDecoderFromDisk): Revise to read data
        directly so we can control file locking.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        Followup to r218885: adjust for further UIKit SPI changes
        https://bugs.webkit.org/show_bug.cgi?id=173927
        <rdar://problem/33020792>

        Reviewed by Tim Horton.

        On ToT, UIKit now invokes -_dragInteraction:item:shouldDelaySetDownAnimationWithCompletion: before the
        completion block of -dragInteraction:willAnimateLiftWithAnimator:session: is called. This means we now need to
        store the completion block in -shouldDelaySetDownAnimationWithCompletion: and wait until the UIDragAnimating
        completion block in -willAnimateCancelWithAnimator: before invoking it.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanUpDragSourceSessionState]):

        Ensure that the set-down completion block is invoked when a drag session ends (e.g., if the web content process
        crashes).

        (-[WKContentView _dragInteraction:item:shouldDelaySetDownAnimationWithCompletion:]):
        (-[WKContentView _api_dragInteraction:item:willAnimateCancelWithAnimator:]):

2017-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        dropInteraction:sessionDidEnd: invokes dragEnded with a UIDragOperation rather than a WebCore::DragOperation
        https://bugs.webkit.org/show_bug.cgi?id=173935

        Reviewed by Tim Horton.

        Replaces a use of UIDragOperationNone with DragOperationNone.
        Currently, there is no change in behavior since these are currently the same value (0).

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidEnd:]):

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

        WebsitePolicies given with navigation policy for redirects should apply to the provisional document
        https://bugs.webkit.org/show_bug.cgi?id=173886
        <rdar://problem/32543191>

        Reviewed by Andy Estes.
        
        If, for example, we deny video autoplay for the initial request but allow it for the redirect destination
        location, the document should allow video autoplay.  We were putting these settings onto the wrong DocumentLoader.
        When a navigation policy is given to a response of a redirect location, we currently have the DocumentLoader
        for the loading document in the FrameLoader's provisionalDocumentLoader, not the documentLoader.
        
        Covered by a new API test.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2017-06-28  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Improve configuration tests for librt and libatomic
        https://bugs.webkit.org/show_bug.cgi?id=173921

        Reviewed by Michael Catanzaro.

        1. Both tests are converted to use specialized CMake modules
        2. Both libraries are now linked only if they are really needed and usable
           by compiler
        3. librt is no more required to be detected by find_library(), which may fail
           in case of cross-compilation
        4. libatomic test moved to port-independent CMakeLists.txt

        * CMakeLists.txt:
        * PlatformGTK.cmake:

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

        Fix CMake build.

        * PlatformMac.cmake:

2017-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Dragged content flashes after the preview sets down when cancelling a drag
        https://bugs.webkit.org/show_bug.cgi?id=173927
        <rdar://problem/33020792>

        Reviewed by Tim Horton.

        When a drag is cancelled, UIKit normally animates fly-back and set-down animations back-to-back. However, for
        WebKit2, we need to call out to the web process in order to trigger a repaint of the dragged content at normal
        opacity when the drag cancel animation completes. Thus, we can hook into UIKit SPI to split the cancellation
        animation into two discrete phases: the fly-back and the set-down (the latter of which may be deferred using a
        completion block).

        To do this, we implement a new SPI hook, _dragInteraction:item:shouldDelaySetDownAnimationWithCompletion:, to
        indicate that the set-down should be deferred, and call the completion block after the next layer tree commit.
        Since -shouldDelaySetDownAnimationWithCompletion: is invoked after the UIDragAnimating completion block in
        -willAnimateCancelWithAnimator:, this layer tree commit is guaranteed to come after we've told the web process
        to repaint at full opacity.

        This patch also accounts for additional changes in UIKit. Once -shouldDelaySetDownAnimationWithCompletion:
        becomes available, -sessionDidEnd: will no longer be invoked after a cancelled drag lift if the user did not
        begin moving. This means that our cleanup logic in -sessionDidEnd: will no longer be executed in this case,
        leaving the view with an inconsistent dragging state. To fix this, we need to implement
        -dragInteraction:willAnimateLiftWithAnimator:session: to perform drag session cleanup following a cancelled drag
        lift, for which the drag animator's final position will be UIViewAnimatingPositionStart.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView _dragInteraction:item:shouldDelaySetDownAnimationWithCompletion:]):

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

        Avoid double thread dispatch in WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains()
        https://bugs.webkit.org/show_bug.cgi?id=173904

        Reviewed by Brent Fulgham.

        Avoid double thread dispatch in WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains().
        It calls fetchData() which dispatches to the main queue, then fetchDataForTopPrivatelyControlledDomains()
        dispatches to the background queue. It should be possible to get fetchData() to dispatch directly
        on the right queue.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchData):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-06-27  Chris Dumez  <cdumez@apple.com>

        [ResourceLoadStatistics] Update minimumTimeBetweeenDataRecordsRemoval to 1 hour instead of 1 minute
        https://bugs.webkit.org/show_bug.cgi?id=173895
        <rdar://problem/32984366>

        Reviewed by Brent Fulgham.

        Update minimumTimeBetweeenDataRecordsRemoval to 1 hour instead of 1 minute to save battery.
        Also port code to modern time types.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetTimeToLiveUserInteraction):
        (WKResourceLoadStatisticsManagerSetTimeToLiveCookiePartitionFree):
        (WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerSetGrandfatheringTime):
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.h:

2017-06-27  Chris Dumez  <cdumez@apple.com>

        Port HysteresisActivity to Seconds type
        https://bugs.webkit.org/show_bug.cgi?id=173902

        Reviewed by Simon Fraser.

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

2017-06-27  Chris Dumez  <cdumez@apple.com>

        Move WebsiteDataRecord processing off-thread in WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains()
        https://bugs.webkit.org/show_bug.cgi?id=173882
        <rdar://problem/32984366>

        Reviewed by Darin Adler.

        Move WebsiteDataRecord processing off-thread in WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains()
        as we have data showing it is slow and hangs the UIProcess' main thread.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):

2017-06-27  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Expand sandbox to allow access to the CoreMedia volume control endpoint
        https://bugs.webkit.org/show_bug.cgi?id=173898
        <rdar://problem/32930754>

        Reviewed by Ryosuke Niwa.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Support dragging out of contenteditable areas without a prior selection
        https://bugs.webkit.org/show_bug.cgi?id=173854
        <rdar://problem/32236827>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Instead of allowing a drag to occur only if a position information request discovers a clickable node, remove
        the position information request entirely and just call into WebCore to try and begin the drag. Currently, the
        position information request serves two purposes:
        1. To adjust the hit-test location to account for nearby clickable nodes.
        2. To obtain information about the content being dragged.

        The first requirement is fulfilled by performing the drag location adjustment in WebCore instead (see
        ChangeLogs for more detail). The second requirement is fulfilled by refactoring in
        https://bugs.webkit.org/show_bug.cgi?id=173832 to fold all information relevant to starting a drag into the
        DragItem struct, and then propagating the DragItem struct. The relevant information from the position
        information update is now populated when the UI process receives the drag start response.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView computeClientAndGlobalPointsForDropSession:outClientPoint:outGlobalPoint:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView _api_dropInteraction:sessionDidEnter:]):
        (-[WKContentView _api_dropInteraction:sessionDidUpdate:]):
        (positionInformationMayStartDataInteraction): Deleted.

2017-06-27  Chris Dumez  <cdumez@apple.com>

        [iOS] Avoid taking / releasing process assertions too quickly due to database activity
        https://bugs.webkit.org/show_bug.cgi?id=173879
        <rdar://problem/32412701>

        Reviewed by Antti Koivisto.

        Specify an activity name when taking the process assertion to facilitate
        debugging in the future. It took me a while to figure out this assertion
        was the one that was too aggressive because it was anonymous.

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

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

        [PAL] Add symbol export macros for PAL
        https://bugs.webkit.org/show_bug.cgi?id=171519

        Reviewed by Konstantin Tokarev.

        * config.h:

2017-06-27  Ryosuke Niwa  <rniwa@webkit.org>

        ProcessLauncherMac could leak a xpc connection when the process had failed to launch
        https://bugs.webkit.org/show_bug.cgi?id=173865

        Reviewed by Antti Koivisto.

        Explicitly cancel the XPC connection even When the process launch had failed to avoid a leak.

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):

2017-06-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add telemetry
        https://bugs.webkit.org/show_bug.cgi?id=173499
        <rdar://problem/32826094>

        Reviewed by Brent Fulgham.

        * PlatformGTK.cmake:
            Added UIProcess/WebResourceLoadStatisticsTelemetry.cpp
        * PlatformMac.cmake:
            Added UIProcess/WebResourceLoadStatisticsTelemetry.cpp
        * PlatformWPE.cmake:
            Added UIProcess/WebResourceLoadStatisticsTelemetry.cpp
        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerFireTelemetryHandler):
        (WKResourceLoadStatisticsManagerSetNotifyPagesWhenTelemetryWasCaptured):
            Test infrastructure.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::notifyPageStatisticsTelemetryFinished):
            Test infrastructure.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::fireTelemetryHandler):
        (WebKit::WebResourceLoadStatisticsManager::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
            Test infrastructure.
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
            Configures a timer for telemetry capture. Fires 5 seconds after launch
            and then every 24 hours.
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
            Variable renamed notifyPages -> notifyPagesWhenDataRecordsWereScanned.
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
            Variable renamed notifyPages -> notifyPagesWhenDataRecordsWereScanned.
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
            Variable renamed notifyPages -> notifyPagesWhenDataRecordsWereScanned.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            Variable renamed notifyPages -> notifyPagesWhenDataRecordsWereScanned.
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
            Variable renamed notifyPages -> notifyPagesWhenDataRecordsWereScanned.
        (WebKit::WebResourceLoadStatisticsStore::telemetryTimerFired):
             Calls WebResourceLoadStatisticsTelemetry::calculateAndSubmit().
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp: Added.
        (WebKit::numberOfResourcesWithUserInteraction):
        (WebKit::median):
        (WebKit::nonEphemeralWebPageProxy):
        (WebKit::submitTopList):
        (WebKit::submitTopLists):
        (WebKit::notifyPages):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        (WebKit::WebResourceLoadStatisticsTelemetry::setNotifyPagesWhenTelemetryWasCaptured):
        * UIProcess/WebResourceLoadStatisticsTelemetry.h: Added.
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-27  Ting-Wei Lan  <lantw44@gmail.com>

        Add missing includes to fix compilation error on FreeBSD
        https://bugs.webkit.org/show_bug.cgi?id=172919

        Reviewed by Mark Lam.

        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/ProcessAssertion.h:

2017-06-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor drag start codepaths to plumb a DragItem to client layers
        https://bugs.webkit.org/show_bug.cgi?id=173832
        Work towards <rdar://problem/32236827>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Add support for serializing a DragItem over IPC. This encodes and decodes all members of DragItem except for the
        PasteboardWriterData and the DragImage's image. The DragItem is sent over to the UI process in
        WebDragClient::startDrag via the WebPageProxy::startDrag IPC message (renamed from WebPageProxy::setDragImage)
        which now takes a DragItem.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::setDragImage): Deleted.
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Rename SetDragImage to StartDrag and refactor to receive only a DragItem and shareable bitmap handle.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::startDrag):
        (WebKit::PageClientImpl::startDataInteractionWithImage): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]): Deleted.

        Rename startDataInteractionWithImage to startDrag.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::setDragImage): Deleted.
        * WebProcess/WebCoreSupport/WebDragClient.cpp:
        (WebKit::WebDragClient::startDrag):
        * WebProcess/WebCoreSupport/WebDragClient.h:
        * WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
        (WebKit::WebDragClient::startDrag):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::startDrag):

2017-06-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] WKWebView does not handle drag sessions that exit and re-enter
        https://bugs.webkit.org/show_bug.cgi?id=173856
        <rdar://problem/32957100>

        Reviewed by Ryosuke Niwa.

        Upon exiting a WKContentView, the dropSession tracked by _dataInteractionState is not cleared out. If the drag
        session re-enters the WKWebView, a _different_ UIDropSession is sent to the drop delegate, causing us to bail
        from handling the session altogether in -dropInteraction:canHandleSession:. To fix this, we need to clear out
        the dropSession when the drag session exits the view.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidExit:]):

2017-06-26  Chris Dumez  <cdumez@apple.com>

        WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains() is inefficient
        https://bugs.webkit.org/show_bug.cgi?id=173850

        Reviewed by Ryosuke Niwa.

        Update WebsiteDataRecord::matchesTopPrivatelyControlledDomain() to rely on
        SecurityOriginData::host rather than SecurityOriginData::securityOrigin()->host().
        SecurityOriginData::securityOrigin() is expensive and it seems unnecessary to call
        it here since we already have the host.

        Also update WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains() to return
        domains as a HashSet rather than a Vector to avoid having duplicate domains.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-06-26  Jeremy Jones  <jeremyj@apple.com>

        Invalidate WebVideoFullscreenManager when WebPage is destroyed.
        https://bugs.webkit.org/show_bug.cgi?id=173835
        rdar://problem/32969161

        Reviewed by Jer Noble.

        WebVideoFullscreenManager has a pointer to WebPage, and even null checks it in a few places,
        but the only place it is nulled out is in the destructor. This allows a dangling reference.

        This changes invalidates that reference when WebPage is destructed and adds nullchecks
        or asserts throughout WebVideoFullscreenManager as appropriate.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::~WebPage):
        * WebProcess/cocoa/WebVideoFullscreenManager.h:
        (WebKit::WebVideoFullscreenManager::invalidate):
        * WebProcess/cocoa/WebVideoFullscreenManager.mm:
        (WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager):
        (WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
        (WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement):
        (WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):
        (WebKit::WebVideoFullscreenManager::hasVideoChanged):
        (WebKit::WebVideoFullscreenManager::videoDimensionsChanged):
        (WebKit::WebVideoFullscreenManager::didSetupFullscreen):
        (WebKit::WebVideoFullscreenManager::didEnterFullscreen):
        (WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
        (WebKit::WebVideoFullscreenManager::fullscreenMayReturnToInline):

2017-06-26  Chris Dumez  <cdumez@apple.com>

        Disable diagnostic logging in ephemeral sessions
        https://bugs.webkit.org/show_bug.cgi?id=173849
        <rdar://problem/32987341>

        Reviewed by Geoffrey Garen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setDiagnosticLoggingClient):
        Construct a dummy logging client if the page's session is ephemeral.

        (WebKit::WebPageProxy::logDiagnosticMessage):
        (WebKit::WebPageProxy::logDiagnosticMessageWithResult):
        (WebKit::WebPageProxy::logDiagnosticMessageWithValue):
        (WebKit::WebPageProxy::logDiagnosticMessageWithEnhancedPrivacy):
        Slight cleanup to make the code look a bit safer.

2017-06-26  Zan Dobersek  <zdobersek@igalia.com>

        [GCrypt] Properly initialize libgcrypt before using it
        https://bugs.webkit.org/show_bug.cgi?id=173589

        Reviewed by Michael Catanzaro.

        Initialize libgcrypt in the Unix-specific main() entrypoint. This is early enough
        to ensure no other libgcrypt API function is invoked and to also ensure this is
        done in a thread-safe manner.

        Initialization is initiated through the gcry_check_version() call. 16 kilobytes of
        secure memory is pre-allocated before we mark the initialization as complete, as
        recommended by the libgcrypt documentation.

        * WebProcess/EntryPoint/unix/WebProcessMain.cpp:
        (main):

2017-06-26  Jeremy Jones  <jeremyj@apple.com>

        When Mission Control closes fullscreen window, allow media element to update its state.
        https://bugs.webkit.org/show_bug.cgi?id=173671
        rdar://problem/32892671

        Reviewed by Eric Carlson.

        When Mission Control closes element fullscreen without an animation, we need to notify the
        media element that fullscreen has exited.

        Without this change, the page still behaves like the element is in fullscreen.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):

2017-06-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Beginning a drag session should prevent clicking via long press
        https://bugs.webkit.org/show_bug.cgi?id=173838

        Reviewed by Tim Horton.

        After r218579, WebKit no longer attempts to replace out-of-the-box UIKit long-press/drag lift disambiguation by
        firing events immediately. However, this means that dragging will defer the highlight long press gesture
        recognizer until dragging ends rather than cancel it immediately, which causes WKContentView to dispatch a
        synthetic click immediately upon lift. To fix this, we should bail out of the highlight long press gesture when
        beginning a drag.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):

2017-06-26  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed, add missing header icncludes

        * WebProcess/soup/WebKitSoupRequestInputStream.cpp:

2017-06-26  Konstantin Tokarev  <annulen@yandex.ru>

        [GTK] Unreviewed, added missing includes to fix debug build

        * NetworkProcess/NetworkSession.cpp:

2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive headers from WebCore/platform
        https://bugs.webkit.org/show_bug.cgi?id=173822

        Reviewed by Tim Horton.

        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:

2017-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r215190.

        Broke product select element on GNOME Bugzilla

        Reverted changeset:

        "[GTK] Misplaced right click menu on web page due to
        deprecated gtk_menu_popup()"
        https://bugs.webkit.org/show_bug.cgi?id=170553
        http://trac.webkit.org/changeset/215190

2017-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][WPE] Unreviewed, fix typo in translatable string

        Thanks to Yuri Chornoivan for reporting this typo.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init):

2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive headers from JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=173812

        Reviewed by Darin Adler.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:

2017-06-24  Chris Dumez  <cdumez@apple.com>

        [WK2] Make sure encodeClientTypesAndData() / decodeClientTypesAndData() match exactly
        https://bugs.webkit.org/show_bug.cgi?id=173813

        Reviewed by Ryosuke Niwa.

        Make sure encodeClientTypesAndData() / decodeClientTypesAndData() match exactly. The previous
        IPC encoder code would assume types and data vector have the same length. It would first encode
        the length of data using |data.size()| but then would encode types.size() values from the
        data vector. While there are debug assertions to ensure both vectors have the same size, this
        seems unnecessarily fragile in release builds. If both vectors happen to have different sizes,
        this will lead to weird IPC bugs.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::encodeClientTypesAndData):
        (IPC::decodeClientTypesAndData):

2017-06-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Introspection: webkit_web_view_new_with_related_view needs to be marked as a constructor
        https://bugs.webkit.org/show_bug.cgi?id=173765

        Reviewed by Carlos Garcia Campos.

        Because the first parameter to this WebKitWebView constructor is itself a WebKitWebView,
        the gi-scanner's heuristics decide that it's probably an object method rather than a
        constructor, resulting in improper introspection generation. Annotate it with (constructor)
        to override this behavior.

        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        * UIProcess/API/wpe/WebKitWebViewWPE.cpp:

2017-06-24  Commit Queue  <commit-queue@webkit.org>

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

        This change broke the macOS Sierra build (Requested by
        annulen|home on #webkit).

        Reverted changeset:

        "Removed unused lambda captures from WebKit2"
        https://bugs.webkit.org/show_bug.cgi?id=173555
        http://trac.webkit.org/changeset/218785

2017-06-24  Konstantin Tokarev  <annulen@yandex.ru>

        Removed unused lambda captures from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=173555

        Reviewed by Alex Christensen.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::fetchWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::fetchWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Add release assertion to make sure callbackIdentifier is not 0 in DocumentLoader::finishedLoadingIcon()
        https://bugs.webkit.org/show_bug.cgi?id=173792

        Reviewed by Ryosuke Niwa.

        Add release assertion to make sure callbackIdentifier is not 0 in DocumentLoader::finishedLoadingIcon()
        as this could cause HashTable corruption on WebPageProxy side.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::finishedLoadingIcon):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Stop passing Vector by value in WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores()
        https://bugs.webkit.org/show_bug.cgi?id=173782

        Reviewed by Brent Fulgham.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Avoid copying HashSet to Vector in WebPageProxy::clearLoadDependentCallbacks()
        https://bugs.webkit.org/show_bug.cgi?id=173786

        Reviewed by Geoffrey Garen.

        Avoid copying HashSet to Vector in WebPageProxy::clearLoadDependentCallbacks().
        Instead, just move the HashSet and iterate on that. This is OK since we were
        clearing the HashSet right after copying it to the vector anyway.

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

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix Debug build after r218763

        * NetworkProcess/NetworkDataTask.cpp:

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Add more release logging for process assertions
        https://bugs.webkit.org/show_bug.cgi?id=173624
        <rdar://problem/32412701>

        Reviewed by Geoffrey Garen.

        Add more release logging for process assertions to help debug issues such
        as <rdar://problem/32412701>.

        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::didConnectToProcess):
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion):
        (WebKit::ProcessAssertion::~ProcessAssertion):
        (WebKit::ProcessAssertion::setState):

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Consistently use RunLoop::isMain() in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=173745
        <rdar://problem/32936527>

        Reviewed by Brent Fulgham.

        Consistently use RunLoop:isMain() on WebKit2 instead of WTF::isMainThread().
        WTF::isMainThread() returns true for the WebThread instead of the UIThread
        in WebKit1. Therefore WTF::isMainThread() is unsafe to use in the UIProcess
        as the application may be using WebKit1 as well and have a WebThread.

        Technically, we only *need* to move from WTF::isMainThread() to
        RunLoop::isMain() in the UIProcess code but I ported all of WebKit2 for
        consistency. RunLoop::isMain() is always safe in WebKit2.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::NetworkDataTask):
        (WebKit::NetworkDataTask::~NetworkDataTask):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::getSizeForNext):
        (WebKit::NetworkDataTaskBlob::didGetSize):
        (WebKit::NetworkDataTaskBlob::seek):
        (WebKit::NetworkDataTaskBlob::read):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::didReceiveResponseNetworkSession):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::defaultSession):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::resourceType):
        (WebKit::NetworkCache::Cache::initialize):
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::readSyncInThread):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
        (WebKit::NetworkSessionCocoa::defaultSession):
        (WebKit::NetworkSessionCocoa::dataTaskForIdentifier):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::dispatchOnMainThread):
        (WebKit::CoordinatedGraphicsScene::syncRemoteContent):
        (WebKit::CoordinatedGraphicsScene::detach):
        (WebKit::CoordinatedGraphicsScene::appendUpdate):
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::WorkQueuePool::singleton):
        (WebKit::WorkQueuePool::dispatch):
        (WebKit::CompositingRunLoop::~CompositingRunLoop):
        (WebKit::CompositingRunLoop::performTask):
        (WebKit::CompositingRunLoop::performTaskSync):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::createGLContext):
        (WebKit::ThreadedCompositor::renderNextFrame):
        (WebKit::ThreadedCompositor::commitScrollOffset):
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::releaseUpdateAtlases):
        (WebKit::ThreadedCompositor::frameComplete):
        * Shared/Plugins/NPObjectProxy.cpp:
        (WebKit::NPObjectProxy::NP_Deallocate):
        * UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _highlightLinkAnnotation:forDuration:completionHandler:]):
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _uploadItemForImageData:imageName:successBlock:failureBlock:]):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebProcess/soup/WebKitSoupRequestInputStream.cpp:
        (webkitSoupRequestInputStreamReadAsync):

2017-06-23  David Kilzer  <ddkilzer@apple.com>

        v3: REGRESSION (r218419): 3 NSMutableDictionary leaks calling -[WKProcessPool _pluginLoadClientPolicies]
        <https://webkit.org/b/173689>

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (policiesHashMapToDictionary): Use adoptNS().get() to avoid
        dumping objects into autoreleasepools unnecessarily.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        (-[WKProcessPool _pluginLoadClientPolicies]): Add back 'copy'
        attribute to document that we're returning a new object on each
        invocation.  I shouldn't have removed it in the v2 patch.

2017-06-23  Youenn Fablet  <youenn@apple.com>

        LibWebRTCSocketClient should not destroy its socket within signalClose callback
        https://bugs.webkit.org/show_bug.cgi?id=173739

        Reviewed by Brent Fulgham.

        * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
        (WebKit::LibWebRTCSocketClient::signalClose): Destroy 'this' asynchronously to make the caller of signalClose valid until it is not used.

2017-06-23  Chris Dumez  <cdumez@apple.com>

        Fix typo in WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData() naming
        https://bugs.webkit.org/show_bug.cgi?id=173781

        Reviewed by Brent Fulgham.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData):
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):

2017-06-23  Jer Noble  <jer.noble@apple.com>

        [WK2] Support -[WebAVPlayerController setMuted:]
        https://bugs.webkit.org/show_bug.cgi?id=173777

        Reviewed by Eric Carlson.

        Add a SetMuted message to WebPlaybackSessionManager.

        Drive-by refactoring: Because the new setMuted() method conflicts with the existing setMuted()
        notification, do a giant rename of the notificiation methods from set(Value) -> (value)Changed.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setMuted):
        (WebKit::WebPlaybackSessionModelContext::playbackStartedTimeChanged):
        (WebKit::WebPlaybackSessionModelContext::durationChanged):
        (WebKit::WebPlaybackSessionModelContext::currentTimeChanged):
        (WebKit::WebPlaybackSessionModelContext::bufferedTimeChanged):
        (WebKit::WebPlaybackSessionModelContext::rateChanged):
        (WebKit::WebPlaybackSessionModelContext::seekableRangesChanged):
        (WebKit::WebPlaybackSessionModelContext::canPlayFastReverseChanged):
        (WebKit::WebPlaybackSessionModelContext::audioMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionModelContext::legibleMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionModelContext::audioMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionModelContext::legibleMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionModelContext::externalPlaybackChanged):
        (WebKit::WebPlaybackSessionModelContext::wirelessVideoPlaybackDisabledChanged):
        (WebKit::WebPlaybackSessionModelContext::mutedChanged):
        (WebKit::WebPlaybackSessionManagerProxy::currentTimeChanged):
        (WebKit::WebPlaybackSessionManagerProxy::bufferedTimeChanged):
        (WebKit::WebPlaybackSessionManagerProxy::seekableRangesVectorChanged):
        (WebKit::WebPlaybackSessionManagerProxy::canPlayFastReverseChanged):
        (WebKit::WebPlaybackSessionManagerProxy::audioMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManagerProxy::legibleMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManagerProxy::audioMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionManagerProxy::legibleMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionManagerProxy::externalPlaybackPropertiesChanged):
        (WebKit::WebPlaybackSessionManagerProxy::wirelessVideoPlaybackDisabledChanged):
        (WebKit::WebPlaybackSessionManagerProxy::mutedChanged):
        (WebKit::WebPlaybackSessionManagerProxy::durationChanged):
        (WebKit::WebPlaybackSessionManagerProxy::playbackStartedTimeChanged):
        (WebKit::WebPlaybackSessionManagerProxy::rateChanged):
        (WebKit::WebPlaybackSessionManagerProxy::setMuted):
        (WebKit::WebPlaybackSessionManagerProxy::controlsManagerInterface):
        (WebKit::WebPlaybackSessionModelContext::setPlaybackStartedTime): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setDuration): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setCurrentTime): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setBufferedTime): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setRate): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setSeekableRanges): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setCanPlayFastReverse): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionOptions): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionOptions): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionIndex): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setExternalPlayback): Deleted.
        (WebKit::WebPlaybackSessionModelContext::setWirelessVideoPlaybackDisabled): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setCurrentTime): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setBufferedTime): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setCanPlayFastReverse): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionIndex): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionIndex): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setExternalPlaybackProperties): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setWirelessVideoPlaybackDisabled): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setDuration): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setPlaybackStartedTime): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setRate): Deleted.
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionManager::durationChanged):
        (WebKit::WebPlaybackSessionManager::currentTimeChanged):
        (WebKit::WebPlaybackSessionManager::bufferedTimeChanged):
        (WebKit::WebPlaybackSessionManager::playbackStartedTimeChanged):
        (WebKit::WebPlaybackSessionManager::rateChanged):
        (WebKit::WebPlaybackSessionManager::seekableRangesChanged):
        (WebKit::WebPlaybackSessionManager::canPlayFastReverseChanged):
        (WebKit::WebPlaybackSessionManager::audioMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManager::legibleMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManager::externalPlaybackChanged):
        (WebKit::WebPlaybackSessionManager::audioMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionManager::legibleMediaSelectionIndexChanged):
        (WebKit::WebPlaybackSessionManager::wirelessVideoPlaybackDisabledChanged):
        (WebKit::WebPlaybackSessionManager::mutedChanged):
        (WebKit::WebPlaybackSessionManager::setMuted):

2017-06-23  Frederic Wang  <fwang@igalia.com>

        Use window.internals instead of overridePreference to set WebCore settings in tests
        https://bugs.webkit.org/show_bug.cgi?id=173714

        Reviewed by Simon Fraser.

        This commit remove preference to settings mapping in overrideBoolPreferenceForTestRunner that
        are no longer necessary after the changes done in LayoutTests.

        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Remove mapping for preferences
        that no longer require testRunner.overridePreference calls in tests.

2017-06-23  Brent Fulgham  <bfulgham@apple.com>

        Avoid moving the same vector multiple times
        https://bugs.webkit.org/show_bug.cgi?id=173748
        <rdar://problem/32936804>

        Reviewed by Chris Dumez.

        We discovered that a Vector<String> was being moved inside a loop, causing it to be moved more than once.
        We should never do this!

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        Do not perform a move at each step of the iteration.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains): Receive vector of top privately
        controlled domains as a const reference. Copy this vector into the completion handler. Do not move
        origins out of the vector in the inner loop.
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains): Receive vector of top privately
        controlled domains as a const reference.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Add SPI to WKURLSchemeTask for redirection
        https://bugs.webkit.org/show_bug.cgi?id=173730

        Reviewed by Brady Eidson.

        This is needed for testing an upcoming fix for redirect callbacks, and it might be
        necessary for loading with custom schemes in general. Right now just responding with
         an HTTP 301/302/307/308 response code doesn't work because there is nothing that
        synthesizes an NSURLRequest from the Location header like we do in 
        SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest et al. for HSTS, 
        and that would require using an NSHTTPURLResponse for non-HTTP responses, which is 
        conceptually wrong.  Instead of waiting for a completion handler in the API, we are
        following the pattern of WKNavigationDelegate.didReceiveServerRedirectForProvisionalNavigation
        and allowing the SPI to indicate that a redirect has happened to update the state of
        WebKit, but not allowing the SPI to wait for a processed request and slow down loading.

        This adds WKURLSchemeTaskPrivate._didPerformRedirection which is covered by new API tests.

        * UIProcess/API/Cocoa/WKURLSchemeTask.mm:
        (raiseExceptionIfNecessary):
        (-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:completionHandler:]):
        * UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
        * UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h: Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::stopURLSchemeTask):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        (WebKit::WebURLSchemeHandler::stopTask):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::didReceiveResponse): Deleted.
        (WebKit::WebURLSchemeTask::didReceiveData): Deleted.
        (WebKit::WebURLSchemeTask::didComplete): Deleted.
        * UIProcess/WebURLSchemeTask.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::urlSchemeTaskDidPerformRedirection):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
        (WebKit::WebURLSchemeHandlerProxy::taskDidPerformRedirection):
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
        * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
        (WebKit::WebURLSchemeTaskProxy::didPerformRedirection):
        * WebProcess/WebPage/WebURLSchemeTaskProxy.h:

2017-06-23  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Support Mac Mini Flash Player Features
        https://bugs.webkit.org/show_bug.cgi?id=173581
        <rdar://problem/32804073>

        Reviewed by Dean Jackson.

        Revise the sandboxes for additional IOKit properties identified during Flash video player
        testing.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-23  Zan Dobersek  <zdobersek@igalia.com>

        [CoordinatedGraphics] Clean up type aliases in CoordinatedGraphicsScene
        https://bugs.webkit.org/show_bug.cgi?id=173764

        Reviewed by Carlos Garcia Campos.

        Drop the various type aliases created in the CoordinatedGraphicsScene
        class. We can leave without these by leveraging `auto` where necessary.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded):
        (WebKit::CoordinatedGraphicsScene::updateImageBacking):
        (WebKit::CoordinatedGraphicsScene::clearImageBackingContents):
        (WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:

2017-06-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Crash in wpe_view_backend_get_renderer_host_fd
        https://bugs.webkit.org/show_bug.cgi?id=173760

        Reviewed by Žan Doberšek.

        This can happen if views are created and destroyed quickly. The problem is that CompositingManagerProxy adds a
        message receiver but never removes it, so it's possible that the message arrives right after the view has been
        destroyed. This is happening most of the times running /wpe/WebKitAutomationSession/request-session that creates
        3 web views in a row that are deleted when the test finishes.

        Fixes /wpe/WebKitAutomationSession/request-session.

        * UIProcess/API/wpe/CompositingManagerProxy.cpp:
        (WebKit::CompositingManagerProxy::finalize): Remove the message handler.
        * UIProcess/API/wpe/CompositingManagerProxy.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::~View): Call CompositingManagerProxy::finalize().

2017-06-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] User script messages don't work
        https://bugs.webkit.org/show_bug.cgi?id=173712

        Reviewed by Žan Doberšek.

        When a user script message is received we need to create a WebKitJavascriptResult to deserialize the script
        value. WebKitJavascriptResult is created with a WebKitWebView for two reasons: to get its JavaScript global
        context and to take a reference that ensures the JavaScript context will be alive while the results is
        alive. However, we could create the WebKitJavascriptResult with the JavaScript global context and take a
        reference of the context itself. This way we don't need to access the WebKitWebView from the
        WebScriptMessageHandler client. But we still need access to the JavaScript context, so I've added a
        javascriptGlobalContext() method to WebPageProxy for GTK+ and WPE that is implemented from the page client.

        Fixes /wpe/WebKitUserContentManager/script-message-received.

        * UIProcess/API/glib/WebKitJavascriptResult.cpp:
        (_WebKitJavascriptResult::_WebKitJavascriptResult): Create the WebKitJavascriptResult with a JSGlobalContextRef
        instead of a WEbKitWebView.
        (webkitJavascriptResultCreate): Pass the js context to the constructor.
        (webkit_javascript_result_get_global_context): Return the js context.
        * UIProcess/API/glib/WebKitJavascriptResultPrivate.h:
        * UIProcess/API/glib/WebKitUserContentManager.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (_WebKitWebViewPrivate::~_WebKitWebViewPrivate): Use JSRetainPtr
        (webkit_web_view_get_javascript_global_context):
        (webkitWebViewRunJavaScriptCallback):
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::javascriptGlobalContext):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/wpe/APIViewClient.h:
        (API::ViewClient::javascriptGlobalContext):
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::javascriptGlobalContext):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::javascriptGlobalContext):
        * UIProcess/API/wpe/WPEView.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::javascriptGlobalContext):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::javascriptGlobalContext):
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::javascriptGlobalContext):

2017-06-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Enable in-app dragging from WKWebView on the phone
        https://bugs.webkit.org/show_bug.cgi?id=173736
        <rdar://problem/32873545>

        Reviewed by Tim Horton.

        Flip the drag interaction enabled switch on when initializing WKContentView's UIDragInteraction.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupDataInteractionDelegates]):

2017-06-22  Chris Dumez  <cdumez@apple.com>

        isMainThread() assertions in CallbackMap are incorrectly failing on some iOS apps
        https://bugs.webkit.org/show_bug.cgi?id=173738
        <rdar://problem/32923933>

        Reviewed by Brady Eidson.

        The assertions hit on certain iOS apps even though the crash traces clearly
        show them on the main thread. We have verified locally that RunLoop::isMain()
        propertly return true in this case (while WTF::isMainThread() returns false).
        Update the assertions to use RunLoop::isMain() instead.

        * UIProcess/GenericCallback.h:
        (WebKit::CallbackMap::put):
        (WebKit::CallbackMap::take):
        (WebKit::CallbackMap::invalidate):

2017-06-22  Daniel Bates  <dabates@apple.com>

        Make FrameLoadRequest a move-only type
        https://bugs.webkit.org/show_bug.cgi?id=173682

        Reviewed by Alex Christensen and Darin Adler.

        A FrameLoadRequest groups together the information to perform a load into a single object
        that is more manageable to pass around than its constituent parts. Code that receives a
        FrameLoadRequest is expected to extract out the information it needs to complete its task.
        And it does not make sense to re-use the same FrameLoadRequest object for more than one
        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::URLRequest::create):
        (WebKit::PluginView::URLRequest::URLRequest):
        (WebKit::PluginView::performFrameLoadURLRequest):
        (WebKit::PluginView::loadURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchCreatePage):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):

2017-06-22  Chris Dumez  <cdumez@apple.com>

        Add release assertion in CallbackMap::invalidate()
        https://bugs.webkit.org/show_bug.cgi?id=173722

        Reviewed by Brady Eidson.

        Add release assertion in CallbackMap::invalidate() to make sure it is called on the main thread.

        * UIProcess/GenericCallback.h:
        (WebKit::CallbackMap::invalidate):

2017-06-22  Brady Eidson  <beidson@apple.com>

        Add some thread safety guards to GenericCallback.
        https://bugs.webkit.org/show_bug.cgi?id=173693

        Reviewed by Sam Weinig.

        A callback should be created, performed, invalidated, and/or destroyed all on the same thread.
        Let's write code to notify us if that doesn't happen.

        * UIProcess/GenericCallback.h:
        (WebKit::GenericCallback::~GenericCallback):
        (WebKit::GenericCallback::performCallbackWithReturnValue):
        (WebKit::GenericCallback::invalidate):

2017-06-22  David Kilzer  <ddkilzer@apple.com>

        v2: REGRESSION (r218419): 3 NSMutableDictionary leaks calling -[WKProcessPool _pluginLoadClientPolicies]
        <https://webkit.org/b/173689>

        Reviewed by Chris Dumez.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (policiesHashMapToDictionary): Use -dictionaryWithCapacity:
        instead of -new since the former returns an autoreleased object
        while the latter does not.  This has the added benefit of tuning
        the size of each NSMutableDictionary.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        (-[WKProcessPool _pluginLoadClientPolicies]): Remove 'copy'
        attribute from @property declaration since it is read-only.

2017-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Downloads never have a web view associated in WPE
        https://bugs.webkit.org/show_bug.cgi?id=173709

        Reviewed by Žan Doberšek.

        Convert the WPE view client into an API client and add handleDownloadRequest(). WebKitWebView now uses it to
        associate itself to the download like the GTK+ port does.

        * PlatformWPE.cmake:
        * UIProcess/API/C/wpe/WKView.cpp:
        (WKViewSetViewClient): Add C API client implementation here.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewConstructed): Set the view client in WPE.
        * UIProcess/API/wpe/APIViewClient.h: Renamed from Source/WebKit2/UIProcess/API/wpe/WPEViewClient.h.
        (API::ViewClient::frameDisplayed):
        (API::ViewClient::handleDownloadRequest):
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::handleDownloadRequest): Call WKWPE::View::handleDownloadRequest().
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::View): Initialize the view client.
        (WKWPE::View::setClient): Set or reset the client.
        (WKWPE::View::handleDownloadRequest): Notify the client.
        * UIProcess/API/wpe/WPEView.h:
        * UIProcess/API/wpe/WPEViewClient.cpp: Removed.

2017-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Page should be closed on WebKitWebView dispose
        https://bugs.webkit.org/show_bug.cgi?id=173707

        Reviewed by Žan Doberšek.

        In the GTK+ port it's done in the WebKitWebViewBase dispose implementation. It fixes TestMultiprocess.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewDispose): Call WKWPE::View::close().
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::close): Close the WebPageProxy.
        * UIProcess/API/wpe/WPEView.h:

2017-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Remove unused coordinated graphics C API
        https://bugs.webkit.org/show_bug.cgi?id=173706

        Reviewed by Žan Doberšek.

        * UIProcess/API/C/CoordinatedGraphics/WKView.cpp: Removed.
        * UIProcess/API/C/CoordinatedGraphics/WKView.h: Removed.
        * UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.cpp: Removed.
        * UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h: Removed.

2017-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add initial web extensions API
        https://bugs.webkit.org/show_bug.cgi?id=173640

        Reviewed by Žan Doberšek.

        Build the glib web extensions API files and the builtin injected bundle library for WPE.

        * PlatformWPE.cmake:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextConstructed): Use a different injected bundle filename in WPE and GTK+.
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        (webkit_web_page_class_init): Do not expose DOM bindings in WPE.
        (webkitWebPageCreate): Ditto.
        * WebProcess/InjectedBundle/API/wpe/WebKitConsoleMessage.h: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitFrame.h: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitScriptWorld.h: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitWebEditor.h: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitWebExtension.h: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitWebPage.h: Added.
        * WebProcess/InjectedBundle/API/wpe/webkit-web-extension.h: Added.

2017-06-21  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r218419): 3 NSMutableDictionary leaks calling -[WKProcessPool _pluginLoadClientPolicies]
        <https://webkit.org/b/173689>

        Reviewed by Chris Dumez.

        Caught by the clang static analyzer.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (policiesHashMapToDictionary): Switch from using
        [[NSMutableDictionary alloc] init] which returns a +1 retained
        object in MRR to [NSMutableDictionary new] which returns an
        autoreleased object under MRR.  This bug caused 3 leaks when
        calling -[WKProcessPool _pluginLoadClientPolicies], which should
        return an autoreleased object based on its signature.

2017-06-21  Ryosuke Niwa  <rniwa@webkit.org>

        Add release assertions help diagnose a hang in CallbackMap
        https://bugs.webkit.org/show_bug.cgi?id=173680
        <rdar://problem/32911286>

        Reviewed by Chris Dumez.

        Assert that these functions are only called in the main thread and the empty value is never used as a key.

        * UIProcess/GenericCallback.h:
        (WebKit::CallbackMap::put):
        (WebKit::CallbackMap::take):

2017-06-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Cancelling a drag interaction using the ObjC SPI causes subsequent dragging to fail
        https://bugs.webkit.org/show_bug.cgi?id=173659
        <rdar://problem/32879788>

        Reviewed by Tim Horton.

        Currently, a drag session that failed to begin is cleaned up either when the web process responds in
        -[WKContentView _didHandleStartDataInteractionRequest:] with started = NO, or if started is YES, in
        -dragInteraction:session:didEndWithOperation: instead. However, it is possible that even when the pasteboard has
        items and the drag has started in the web process, something in the UI process may then cause the drag to be
        cancelled (for instance, an SPI client returning empty arrays for all adjusted item providers, or UIKit not even
        calling into -dragInteraction:itemsForBeginningSession: when we invoke their completion block).

        In any case, if the drag session is drag-item-less after calling the drag start completion block, clean up and
        cancel the drag.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):

2017-06-21  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r218606): 3D Touch action menu for links is missing items
        https://bugs.webkit.org/show_bug.cgi?id=173669
        <rdar://problem/32905541>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
        defaultActionsForLinkSheet is used outside the usual action sheet flow,
        by 3D Touch code. Therefore, we're not guaranteed to have a _positionInformation.
        We don't need one, though -- we can get the URL from the passed-in
        _WKActivatedElementInfo, exactly like defaultActionsForImageSheet already did.

        (-[WKActionSheetAssistant defaultActionsForImageSheet:]):
        Remove the delegate null check, which isn't used after r218606.

2017-06-21  Daniel Bates  <dabates@apple.com>

        Cleanup FrameLoadRequest
        https://bugs.webkit.org/show_bug.cgi?id=173564
        <rdar://problem/32903570>

        Reviewed by Brent Fulgham.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::loadURL): Explicitly pass the null-string for the target frame
        name as we do not have one. Use C++11 brace initialization syntax.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchCreatePage): Ditto.
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab): It is no longer necessary to pass ReplaceDocumentIfJavaScriptURL
        when instantiating the FrameLoadRequest as it defaults to this policy. Use C++11 brace initialization syntax.

2017-06-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Add drag-and-drop release logging around WKContentView
        https://bugs.webkit.org/show_bug.cgi?id=173636

        Reviewed by Tim Horton.

        Add logging at key points in the drag-and-drop lifecycle in the UI process, so that sysdiagnoses will contain
        sufficient information to debug sparse failures.

        * Platform/Logging.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (-[WKContentView cleanUpDragSourceSessionState]):
        (-[WKContentView _didPerformDataInteractionControllerOperation:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:sessionWillBegin:]):
        (-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dropInteraction:canHandleSession:]):
        (-[WKContentView _api_dropInteraction:sessionDidEnter:]):
        (-[WKContentView dropInteraction:sessionDidExit:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):

2017-06-21  Jeremy Jones  <jeremyj@apple.com>

        Don't clear audio mute when muting capture.
        https://bugs.webkit.org/show_bug.cgi?id=173639
        rdar://problem/32749737

        Reviewed by Eric Carlson.

        Setting capture mute was clearing audio mute.
        Added setMediaStreamCaptureMuted to set just the capture mute bit.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _muteMediaCapture]):
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setMediaStreamCaptureMuted):
        * UIProcess/WebPageProxy.h:

2017-06-21  Miguel Gomez  <magomez@igalia.com>

        [GTK][WAYLAND] Create WaylandCompositorDisplay unconditionally when initializing the WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=173598

        Reviewed by Carlos Garcia Campos.

        Move WaylandCompositorDisplay code to its own files so it can be used from other classes. Then, instead of
        storing the waylandCompositorDisplayName in the WebProcess, keep a WaylandCompositorDisplay instance that
        is created during the initialization. This way the appropriate sharedDisplayForCompositing will be set
        since the creation of the WebProcess.

        * PlatformGTK.cmake:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
        (WebKit::AcceleratedSurfaceWayland::create):
        (WebKit::AcceleratedSurfaceWayland::AcceleratedSurfaceWayland):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::waylandCompositorDisplay):
        * WebProcess/gtk/WaylandCompositorDisplay.cpp: Added.
        (WebKit::WaylandCompositorDisplay::create):
        (WebKit::WaylandCompositorDisplay::bindSurfaceToPage):
        (WebKit::WaylandCompositorDisplay::WaylandCompositorDisplay):
        (WebKit::WaylandCompositorDisplay::registryGlobal):
        * WebProcess/gtk/WaylandCompositorDisplay.h: Added.
        * WebProcess/soup/WebProcessSoup.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):

2017-06-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move WebGtkExtensionManager and WebGtkInjectedBundleMain to glib API dir
        https://bugs.webkit.org/show_bug.cgi?id=173606

        Reviewed by Žan Doberšek.

        And rename them to use WebKit prefix instead of WebGtk.

        * PlatformGTK.cmake:
        * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp: Renamed from Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.cpp.
        (WebKit::WebKitExtensionManager::singleton):
        (WebKit::WebKitExtensionManager::WebKitExtensionManager):
        (WebKit::WebKitExtensionManager::scanModules):
        (WebKit::WebKitExtensionManager::initializeWebExtension):
        (WebKit::WebKitExtensionManager::initialize):
        * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h: Renamed from Source/WebKit2/WebProcess/gtk/WebGtkExtensionManager.h.
        * WebProcess/InjectedBundle/API/glib/WebKitInjectedBundleMain.cpp: Renamed from Source/WebKit2/WebProcess/gtk/WebGtkInjectedBundleMain.cpp.
        (WKBundleInitialize):

2017-06-20  Frederic Wang  <fwang@igalia.com>

        Pass the argument of DrawingArea::shouldUseTiledBackingForFrameView by reference
        https://bugs.webkit.org/show_bug.cgi?id=173605

        DrawingArea::shouldUseTiledBackingForFrameView is only called from
        WebChromeClient::shouldUseTiledBackingForFrameView where the frame view is already available
        as a reference. This patch makes the argument of
        DrawingArea::shouldUseTiledBackingForFrameView a reference, so it does not need to be
        converted to a pointer or to perform nullchecks.

        Reviewed by Simon Fraser.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::shouldUseTiledBackingForFrameView): Just pass the reference.
        * WebProcess/WebPage/DrawingArea.h: Make the parameter a reference.
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Ditto.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: Ditto.
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::shouldUseTiledBackingForFrameView): Use the reference
        to frame view and remove the nullcheck.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::shouldUseTiledBackingForFrameView): Ditto.

2017-06-20  Myles C. Maxfield  <mmaxfield@apple.com>

        Disable font variations on macOS Sierra and iOS 10
        https://bugs.webkit.org/show_bug.cgi?id=173618
        <rdar://problem/32879164>

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:

2017-06-20  Daniel Bates  <dabates@apple.com>

        Have FrameLoadRequest takes a Frame& instead of a Frame*
        https://bugs.webkit.org/show_bug.cgi?id=173614
        <rdar://problem/32884890>

        Reviewed by Brent Fulgham.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performFrameLoadURLRequest):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame):
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::loadDataImpl):

2017-06-20  Tim Horton  <timothy_horton@apple.com>

        Occasional deadlocks under ensurePositionInformationIsUpToDate (incoming sync message with waitForAndDispatchImmediately)
        https://bugs.webkit.org/show_bug.cgi?id=173570
        <rdar://problem/32720928>

        Reviewed by Wenson Hsieh.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::getPositionInformation): Deleted.
        Get rid of getPositionInformation; it only has one caller, and it's easier
        to reason about the code if it's all in one place. Also, we shouldn't
        add more callers...

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView ensurePositionInformationIsUpToDate:]):
        Add a return value to ensurePositionInformationIsUpToDate that indicates
        whether we succeeded in that effort.

        Add the flag to our waitForAndDispatchImmediately that causes the wait
        to be interrupted if a sync message arrives.

        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        If anything happens to interrupt our position information update, fail
        in the most graceful possible way at each callsite (generally by bailing
        from doing whatever action required position information).

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView positionInformationForActionSheetAssistant:]):
        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant synchronouslyRetrievePositionInformation]):
        (-[WKActionSheetAssistant presentationRectForElementUsingClosestIndicatedRect]):
        (-[WKActionSheetAssistant presentationRectForIndicatedElement]):
        (-[WKActionSheetAssistant initialPresentationRectInHostViewForSheet]):
        (-[WKActionSheetAssistant presentationRectInHostViewForSheet]):
        (-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]):
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
        (-[WKActionSheetAssistant showLinkSheet]):
        (-[WKActionSheetAssistant showDataDetectorsSheet]):
        (-[WKActionSheetAssistant cleanupSheet]):
        Instead of constantly re-querying the position information, save it aside
        when presenting an action sheet, and use it to respond to all of the
        subsequent questions. Also, bail from presenting the action sheet if we fail
        to retrieve correct position information.

2017-06-20  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r218530.

        This revision caused multiple media stream test crashes on
        Debug builds.

        Reverted changeset:

        "Merge MediaDevicesRequest and MediaDevicesEnumerationRequest
        to tighten up code and object lifetime"
        https://bugs.webkit.org/show_bug.cgi?id=173527
        http://trac.webkit.org/changeset/218530

2017-06-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Remove custom logic for disambiguating long press action sheet gestures and drag lift
        https://bugs.webkit.org/show_bug.cgi?id=173578
        <rdar://problem/32825028>

        Reviewed by Tim Horton.

        Custom logic to cancel the long press action gesture recognizer in WebKit2 was added months ago to achieve
        spec'ed behavior when initiating a drag on an element with an action sheet to show on long press. Now that UIKit
        defers firing long-press gesture recognizers while a drag lift is recognizing, no extra work in WebKit is needed
        to achieve expected behavior.

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

        Add testing SPI for showing an action sheet popover at a given location in content view coordinates.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:sessionWillBegin:]):
        (-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (longPressActionDelayAfterLift): Deleted.
        (-[WKContentView performDeferredActionAtDragOrigin]): Deleted.
        (-[WKContentView cancelDeferredActionAtDragOrigin]): Deleted.

2017-06-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add initial implementation of glib API
        https://bugs.webkit.org/show_bug.cgi?id=173546

        Reviewed by Žan Doberšek.

        Make current API files under glib directories build in WPE, and add the minimum implementation to make it
        work. For now it doesn't have web extensions API, and there are a few FIXMEs that will be fixed in follow up
        commits. It doesn't include install rules yet, since it's still not ready to be installed.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * Shared/API/glib/WebKitContextMenuActions.cpp:
        (webkitContextMenuActionGetActionTag):
        (webkitContextMenuActionGetForContextMenuItem):
        (webkitContextMenuActionGetLabel):
        * Shared/API/glib/WebKitContextMenuItem.cpp:
        * UIProcess/API/glib/WebKitEditorState.cpp:
        (webkitEditorStateChanged):
        * UIProcess/API/glib/WebKitError.cpp:
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp:
        (webkitFileChooserRequestGetProperty):
        (webkit_file_chooser_request_class_init):
        * UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:
        (createGstInstallPluginsContext):
        (webkitInstallMissingMediaPluginsPermissionRequestAllow):
        * UIProcess/API/glib/WebKitNavigationAction.cpp:
        * UIProcess/API/glib/WebKitNavigationActionPrivate.h:
        (_WebKitNavigationAction::_WebKitNavigationAction):
        * UIProcess/API/glib/WebKitNotificationPrivate.h:
        * UIProcess/API/glib/WebKitNotificationProvider.cpp:
        (WebKitNotificationProvider::show):
        * UIProcess/API/glib/WebKitPrivate.cpp:
        (toPlatformModifiers):
        (toWebKitError):
        (toWebCoreError):
        * UIProcess/API/glib/WebKitPrivate.h:
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_set_user_agent):
        (webkit_settings_set_user_agent_with_application_details):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        (webkit_uri_scheme_request_get_web_view):
        * UIProcess/API/glib/WebKitUserContentManager.cpp:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewCreate):
        (webkit_web_view_class_init):
        (webkitWebViewCreatePage):
        (webkitWebViewRunAsModal):
        (webkitWebViewMouseTargetChanged):
        (webkitWebViewEnterFullScreen):
        (webkitWebViewExitFullScreen):
        (webkitWebViewPopulateContextMenu):
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/glib/WebKitWindowProperties.cpp:
        (webkitWindowPropertiesGetProperty):
        (webkitWindowPropertiesSetProperty):
        (webkit_window_properties_class_init):
        (webkitWindowPropertiesUpdateFromWebWindowFeatures):
        * UIProcess/API/glib/WebKitWindowPropertiesPrivate.h:
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp: Added.
        (webkitWebViewAuthenticate):
        (webkitWebViewCreateJavaScriptDialog):
        (webkitWebViewScriptDialog):
        (fileChooserDialogResponseCallback):
        (webkitWebViewRunFileChooser):
        (webkit_web_view_new):
        (webkit_web_view_new_with_context):
        (webkit_web_view_new_with_related_view):
        (webkit_web_view_new_with_settings):
        (webkit_web_view_new_with_user_content_manager):
        * UIProcess/API/wpe/WPEView.h:
        * UIProcess/API/wpe/WebKitAuthenticationRequest.h: Added.
        * UIProcess/API/wpe/WebKitAutomationSession.h: Added.
        * UIProcess/API/wpe/WebKitBackForwardList.h: Added.
        * UIProcess/API/wpe/WebKitBackForwardListItem.h: Added.
        * UIProcess/API/wpe/WebKitContextMenu.h: Added.
        * UIProcess/API/wpe/WebKitContextMenuActions.h: Added.
        * UIProcess/API/wpe/WebKitContextMenuItem.h: Added.
        * UIProcess/API/wpe/WebKitCookieManager.h: Added.
        * UIProcess/API/wpe/WebKitCredential.h: Added.
        * UIProcess/API/wpe/WebKitDefines.h: Copied from Source/WebKit2/UIProcess/API/glib/WebKitPrivate.h.
        * UIProcess/API/wpe/WebKitDownload.h: Added.
        * UIProcess/API/wpe/WebKitEditingCommands.h: Added.
        * UIProcess/API/wpe/WebKitEditorState.h: Added.
        * UIProcess/API/wpe/WebKitEnumTypes.cpp.template: Added.
        * UIProcess/API/wpe/WebKitEnumTypes.h.template: Copied from Source/WebKit2/UIProcess/API/glib/WebKitNotificationPrivate.h.
        * UIProcess/API/wpe/WebKitError.h: Added.
        * UIProcess/API/wpe/WebKitFaviconDatabase.h: Added.
        * UIProcess/API/wpe/WebKitFileChooserRequest.h: Added.
        * UIProcess/API/wpe/WebKitFindController.h: Added.
        * UIProcess/API/wpe/WebKitFormSubmissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitGeolocationPermissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitHitTestResult.h: Added.
        * UIProcess/API/wpe/WebKitInstallMissingMediaPluginsPermissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitJavascriptResult.h: Added.
        * UIProcess/API/wpe/WebKitMimeInfo.h: Added.
        * UIProcess/API/wpe/WebKitNavigationAction.h: Added.
        * UIProcess/API/wpe/WebKitNavigationPolicyDecision.h: Added.
        * UIProcess/API/wpe/WebKitNetworkProxySettings.h: Added.
        * UIProcess/API/wpe/WebKitNotification.h: Added.
        * UIProcess/API/wpe/WebKitNotificationPermissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitPermissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitPlugin.h: Added.
        * UIProcess/API/wpe/WebKitPolicyDecision.h: Added.
        * UIProcess/API/wpe/WebKitResponsePolicyDecision.h: Added.
        * UIProcess/API/wpe/WebKitScriptDialog.h: Added.
        * UIProcess/API/wpe/WebKitSecurityManager.h: Added.
        * UIProcess/API/wpe/WebKitSecurityOrigin.h: Added.
        * UIProcess/API/wpe/WebKitSettings.h: Added.
        * UIProcess/API/wpe/WebKitURIRequest.h: Added.
        * UIProcess/API/wpe/WebKitURIResponse.h: Added.
        * UIProcess/API/wpe/WebKitURISchemeRequest.h: Added.
        * UIProcess/API/wpe/WebKitUserContent.h: Added.
        * UIProcess/API/wpe/WebKitUserContentManager.h: Added.
        * UIProcess/API/wpe/WebKitUserMediaPermissionRequest.h: Added.
        * UIProcess/API/wpe/WebKitWebContext.h: Added.
        * UIProcess/API/wpe/WebKitWebResource.h: Added.
        * UIProcess/API/wpe/WebKitWebView.h: Added.
        * UIProcess/API/wpe/WebKitWebViewSessionState.h: Added.
        * UIProcess/API/wpe/WebKitWebViewWPE.cpp: Added.
        (webkitWebViewAuthenticate):
        (webkitWebViewScriptDialog):
        (webkitWebViewRunFileChooser):
        (webkit_web_view_new):
        (webkit_web_view_new_with_context):
        (webkit_web_view_new_with_related_view):
        (webkit_web_view_new_with_settings):
        (webkit_web_view_new_with_user_content_manager):
        * UIProcess/API/wpe/WebKitWebsiteData.h: Added.
        * UIProcess/API/wpe/WebKitWebsiteDataManager.h: Added.
        * UIProcess/API/wpe/WebKitWindowProperties.h: Added.
        * UIProcess/API/wpe/webkit.h: Added.

2017-06-19  Frederic Wang  <fwang@igalia.com>

        [iOS] Always include frames in the scrolling tree when async frame scrolling is enabled
        https://bugs.webkit.org/show_bug.cgi?id=173405

        Reviewed by Simon Fraser.

        * WebProcess/WebCoreSupport/WebChromeClient.h: Set the ScrollableNonMainFrameTrigger bit by
        default on iOS too. RenderLayerCompositor::requiresCompositingForScrollableFrame will ignore
        this change when async frame scrolling is disabled.

2017-06-19  Frederic Wang  <fred.wang@free.fr>

        [Mac] Add an experimental feature setting for async frame scrolling
        https://bugs.webkit.org/show_bug.cgi?id=173359

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesDefinitions.h: Add experimental feature "async frame scrolling".
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetAsyncFrameScrollingEnabled): Add setter for async frame scrolling.
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Declare setter.
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setAsyncFrameScrollingEnabled): Add setter for async frame scrolling.
        * WebProcess/InjectedBundle/InjectedBundle.h: Declare setter.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Take into account preference update for async frame
        scrolling.

2017-06-19  Darin Adler  <darin@apple.com>

        Merge MediaDevicesRequest and MediaDevicesEnumerationRequest to tighten up code and object lifetime
        https://bugs.webkit.org/show_bug.cgi?id=173527

        Reviewed by Sam Weinig.

        * UIProcess/API/C/WKUserMediaPermissionCheck.h: Fixed incorrect file name in comment.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices): Use the new frame
        function from MediaDevicesEnumerationRequest rather than finding the frame with our
        own code.

        * WebProcess/WebCoreSupport/WebUserMediaClient.cpp: Removed unneeded include of UserMediaController.h.

2017-06-19  Chris Dumez  <cdumez@apple.com>

        Regression(r217570): com.apple.WebKit.Networking crash at com.apple.WebKit: WebKit::ChildProcess::didReceiveInvalidMessage (Breaks 32-bit apps)
        https://bugs.webkit.org/show_bug.cgi?id=173576
        <rdar://problem/32416291>

        Reviewed by Tim Horton.

        The IPC encoding / decoding code cannot be architecture-specific because a 32bit UIProcess
        talks to a 64bit NetworkProcess. The WEB_RTC build time flag is enabled on 64bit only.
        Therefore, we should not use #if ENABLE(WEB_RTC) in IPC encoding / decoding code.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:

2017-06-19  Chris Dumez  <cdumez@apple.com>

        Unreviewed, partial rollout of r218501 to address crashes on iOS.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryAppLink):

2017-06-19  Darin Adler  <darin@apple.com>

        [Cocoa] implement URLSession:task:needNewBodyStream: delegate method
        https://bugs.webkit.org/show_bug.cgi?id=173551
        rdar://problem/32250512

        Reviewed by Alex Christensen.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate existingTask:]): Added helper method.
        (-[WKNetworkSessionDelegate URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]):
        Updated to use existingTask: method.
        (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]): Added.
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        Updated to use existingTask: method.
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Ditto.
        (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): Ditto.
        (WebKit::globalAllowsCellularAccess): Deleted. Just use a normal global.
        (WebKit::globalLegacyCustomProtocolManager): Deleted. Just use a normal global.
        (WebKit::NetworkSessionCocoa::setLegacyCustomProtocolManager): Updated for normal global.
        (WebKit::NetworkSessionCocoa::setAllowsCellularAccess): Ditto.
        (WebKit::NetworkSessionCocoa::defaultSession): Ditto.
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ditto.

2017-06-19  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r218503.

        This change broke the macOS Sierra build.

        Reverted changeset:

        "Removed unused lambda captures from WebKit2"
        https://bugs.webkit.org/show_bug.cgi?id=173555
        http://trac.webkit.org/changeset/218503

2017-06-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK2] Add an internal hook to change the drag lift delay
        https://bugs.webkit.org/show_bug.cgi?id=173523
        <rdar://problem/32224510>

        Reviewed by Tim Horton.

        Add a new private property on WKWebViewConfiguration, _dragLiftDelay, for changing the UIDragInteraction's lift
        delay to one of three values: short, medium or long. The short setting simply uses UIKit's default drag lift
        delay (at the time of writing, this is 325ms); medium and long are 500ms and 650ms, respectively.

        In combination with an internal switch to toggle between lift delays, the purpose of this change is to make it
        easier to choose a drag lift delay for web content that doesn't easily cause unintended dragging while panning.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (toDragLiftDelay):

        Converts an integer (e.g. retrieved from user defaults) to a drag lift delay type.

        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration encodeWithCoder:]):
        (-[WKWebViewConfiguration initWithCoder:]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _dragLiftDelay]):

        Add boilerplate plumbing for the _dragLiftDelay setting.

        (-[WKWebViewConfiguration _setDragLiftDelay:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

        Add _dragLiftDelay to as a private property of WKWebViewConiguration.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dragLiftDelay]):

        Convert the web view configuration's _WKDragLiftDelay to an actual time interval.

        (-[WKContentView setupDataInteractionDelegates]):

2017-06-19  Konstantin Tokarev  <annulen@yandex.ru>

        Removed unused lambda captures from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=173555

        Reviewed by Alex Christensen.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::fetchWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::fetchWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):

2017-06-19  Chris Dumez  <cdumez@apple.com>

        Use WTF::Function instead of std::function in more places in WebCore/
        https://bugs.webkit.org/show_bug.cgi?id=173535

        Reviewed by Antti Koivisto.

        Use WTF::Function instead of std::function in more places in WebCore/ to avoid copying.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setUpPolicyListener):
        (WebKit::WebFrame::invalidatePolicyListener):
        * WebProcess/WebPage/WebFrame.h:

2017-06-19  Chris Dumez  <cdumez@apple.com>

        [WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies
        https://bugs.webkit.org/show_bug.cgi?id=173472
        <rdar://problem/28858817>

        Reviewed by Antti Koivisto.

        Follow-up to r218419 to avoid copying the HashMap unnecessarily.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::resetPluginLoadClientPolicies):
        * UIProcess/WebProcessPool.h:

2017-06-19  Youenn Fablet  <youenn@apple.com>

        A cloned MediaStreamTrack should mute independently other tracks using the same source
        https://bugs.webkit.org/show_bug.cgi?id=172831
        <rdar://problem/32518527>

        Reviewed by Eric Carlson.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setStorage):

2017-06-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move GTK+ API files that could be shared to glib dirs
        https://bugs.webkit.org/show_bug.cgi?id=173545

        Reviewed by Žan Doberšek.

        Most of the files don't use GTK+ at all, or only for a few things that could be ifdefed. Public headers can
        never be shared, so move only private headers and cpp files. This patch moves the files without any
        modification to make everything easier, in follow up commits we will add the required ifdefs and refactorings to
        ensure the code can actually be shared.

        * PlatformGTK.cmake:
        * Shared/API/glib/WebKitContextMenu.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp.
        * Shared/API/glib/WebKitContextMenuActions.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp.
        * Shared/API/glib/WebKitContextMenuActionsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h.
        * Shared/API/glib/WebKitContextMenuItem.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp.
        * Shared/API/glib/WebKitContextMenuItemPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItemPrivate.h.
        * Shared/API/glib/WebKitContextMenuPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuPrivate.h.
        * Shared/API/glib/WebKitHitTestResult.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp.
        * Shared/API/glib/WebKitHitTestResultPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResultPrivate.h.
        * Shared/API/glib/WebKitURIRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp.
        * Shared/API/glib/WebKitURIRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIRequestPrivate.h.
        * Shared/API/glib/WebKitURIResponse.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp.
        * Shared/API/glib/WebKitURIResponsePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIResponsePrivate.h.
        * UIProcess/API/glib/WebKitAuthenticationRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp.
        * UIProcess/API/glib/WebKitAuthenticationRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequestPrivate.h.
        * UIProcess/API/glib/WebKitAutomationSession.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp.
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAutomationSessionPrivate.h.
        * UIProcess/API/glib/WebKitBackForwardList.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp.
        * UIProcess/API/glib/WebKitBackForwardListItem.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp.
        * UIProcess/API/glib/WebKitBackForwardListPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h.
        * UIProcess/API/glib/WebKitContextMenuClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.cpp.
        * UIProcess/API/glib/WebKitContextMenuClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.h.
        * UIProcess/API/glib/WebKitCookieManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp.
        * UIProcess/API/glib/WebKitCookieManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCookieManagerPrivate.h.
        * UIProcess/API/glib/WebKitCredential.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp.
        * UIProcess/API/glib/WebKitCredentialPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCredentialPrivate.h.
        * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp.
        * UIProcess/API/glib/WebKitCustomProtocolManagerClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCustomProtocolManagerClient.h.
        * UIProcess/API/glib/WebKitDownload.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp.
        * UIProcess/API/glib/WebKitDownloadClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp.
        * UIProcess/API/glib/WebKitDownloadClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.h.
        * UIProcess/API/glib/WebKitDownloadPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadPrivate.h.
        * UIProcess/API/glib/WebKitEditorState.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp.
        * UIProcess/API/glib/WebKitEditorStatePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitEditorStatePrivate.h.
        * UIProcess/API/glib/WebKitError.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp.
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp.
        * UIProcess/API/glib/WebKitFaviconDatabasePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h.
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp.
        * UIProcess/API/glib/WebKitFileChooserRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h.
        * UIProcess/API/glib/WebKitFindController.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp.
        * UIProcess/API/glib/WebKitFormClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.cpp.
        * UIProcess/API/glib/WebKitFormClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.h.
        * UIProcess/API/glib/WebKitFormSubmissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp.
        * UIProcess/API/glib/WebKitFormSubmissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h.
        * UIProcess/API/glib/WebKitGeolocationPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp.
        * UIProcess/API/glib/WebKitGeolocationPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h.
        * UIProcess/API/glib/WebKitGeolocationProvider.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp.
        * UIProcess/API/glib/WebKitGeolocationProvider.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h.
        * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp.
        * UIProcess/API/glib/WebKitInjectedBundleClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.h.
        * UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp.
        * UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h.
        * UIProcess/API/glib/WebKitJavascriptResult.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp.
        * UIProcess/API/glib/WebKitJavascriptResultPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h.
        * UIProcess/API/glib/WebKitLoaderClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp.
        * UIProcess/API/glib/WebKitLoaderClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.h.
        * UIProcess/API/glib/WebKitMimeInfo.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp.
        * UIProcess/API/glib/WebKitMimeInfoPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfoPrivate.h.
        * UIProcess/API/glib/WebKitNavigationAction.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp.
        * UIProcess/API/glib/WebKitNavigationActionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationActionPrivate.h.
        * UIProcess/API/glib/WebKitNavigationPolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp.
        * UIProcess/API/glib/WebKitNavigationPolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h.
        * UIProcess/API/glib/WebKitNetworkProxySettings.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNetworkProxySettings.cpp.
        * UIProcess/API/glib/WebKitNetworkProxySettingsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h.
        * UIProcess/API/glib/WebKitNotification.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotification.cpp.
        * UIProcess/API/glib/WebKitNotificationPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPermissionRequest.cpp.
        * UIProcess/API/glib/WebKitNotificationPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPermissionRequestPrivate.h.
        * UIProcess/API/glib/WebKitNotificationPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPrivate.h.
        * UIProcess/API/glib/WebKitNotificationProvider.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationProvider.cpp.
        * UIProcess/API/glib/WebKitNotificationProvider.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationProvider.h.
        * UIProcess/API/glib/WebKitPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp.
        * UIProcess/API/glib/WebKitPlugin.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp.
        * UIProcess/API/glib/WebKitPluginPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPluginPrivate.h.
        * UIProcess/API/glib/WebKitPolicyClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp.
        * UIProcess/API/glib/WebKitPolicyClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.h.
        * UIProcess/API/glib/WebKitPolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp.
        * UIProcess/API/glib/WebKitPolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h.
        * UIProcess/API/glib/WebKitPrivate.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.cpp.
        * UIProcess/API/glib/WebKitPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h.
        * UIProcess/API/glib/WebKitResponsePolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp.
        * UIProcess/API/glib/WebKitResponsePolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h.
        * UIProcess/API/glib/WebKitScriptDialog.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp.
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialogPrivate.h.
        * UIProcess/API/glib/WebKitSecurityManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp.
        * UIProcess/API/glib/WebKitSecurityManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManagerPrivate.h.
        * UIProcess/API/glib/WebKitSecurityOrigin.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp.
        * UIProcess/API/glib/WebKitSecurityOriginPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOriginPrivate.h.
        * UIProcess/API/glib/WebKitSettings.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp.
        * UIProcess/API/glib/WebKitSettingsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h.
        * UIProcess/API/glib/WebKitUIClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp.
        * UIProcess/API/glib/WebKitUIClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h.
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp.
        * UIProcess/API/glib/WebKitURISchemeRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h.
        * UIProcess/API/glib/WebKitUserContent.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp.
        * UIProcess/API/glib/WebKitUserContentManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp.
        * UIProcess/API/glib/WebKitUserContentManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManagerPrivate.h.
        * UIProcess/API/glib/WebKitUserContentPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentPrivate.h.
        * UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp.
        * UIProcess/API/glib/WebKitUserMediaPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h.
        * UIProcess/API/glib/WebKitWebContext.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp.
        * UIProcess/API/glib/WebKitWebContextPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h.
        * UIProcess/API/glib/WebKitWebResource.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp.
        * UIProcess/API/glib/WebKitWebResourcePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebResourcePrivate.h.
        * UIProcess/API/glib/WebKitWebView.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp.
        * UIProcess/API/glib/WebKitWebViewPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h.
        * UIProcess/API/glib/WebKitWebViewSessionState.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewSessionState.cpp.
        * UIProcess/API/glib/WebKitWebViewSessionStatePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewSessionStatePrivate.h.
        * UIProcess/API/glib/WebKitWebsiteData.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteData.cpp.
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp.
        * UIProcess/API/glib/WebKitWebsiteDataManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManagerPrivate.h.
        * UIProcess/API/glib/WebKitWebsiteDataPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataPrivate.h.
        * UIProcess/API/glib/WebKitWindowProperties.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp.
        * UIProcess/API/glib/WebKitWindowPropertiesPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWindowPropertiesPrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitConsoleMessage.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitConsoleMessagePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessagePrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitFramePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitFramePrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitScriptWorld.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitScriptWorldPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorldPrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitWebEditorPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditorPrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtensionPrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResult.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResultPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResultPrivate.h.
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp.
        * WebProcess/InjectedBundle/API/glib/WebKitWebPagePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h.

2017-05-14 Frederic Wang  <fwang@igalia.com>

        Add heuristic to avoid flattening "fullscreen" iframes
        https://bugs.webkit.org/show_bug.cgi?id=171914

        Reviewed by Simon Fraser.

        This commit ajusts the preference API to internally treat frame flattening as an enum.
        However, the "partial frame flattening" value is not exposed to GTK, C or InjectedBundle APIs yet.

        * Shared/WebPreferencesDefinitions.h: Define frame flattening as an enum.
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetFrameFlatteningEnabled): Treat frame flattening as an enum.
        (WKPreferencesGetFrameFlatteningEnabled): Ditto.
        * UIProcess/API/gtk/WebKitSettings.cpp:
        (webkit_settings_get_enable_frame_flattening): Ditto.
        (webkit_settings_set_enable_frame_flattening): Ditto.
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Do not handle frame flattening since it is an enum.
        For now, this breaks one test checking preference overriding because of bug 128594.
        (WebKit::InjectedBundle::setFrameFlatteningEnabled): Treat frame flattening as an enum.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged): Use enum value.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Ditto.

2017-06-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.4 release.

        * gtk/NEWS: Add release notes for 2.17.4.

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

        Drop redundant IPC in WebPage::tryClose()
        https://bugs.webkit.org/show_bug.cgi?id=173533

        Reviewed by Sam Weinig.

        Drop redundant IPC to stop the responsiveness timer in WebPage::tryClose(). The
        destructor for the SendStopResponsivenessTimer already takes care of sending the
        IPC.

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

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

        Drop unused UserMediaPermissionRequestManager::cancelPendingRequests()
        https://bugs.webkit.org/show_bug.cgi?id=173529
        <rdar://problem/32836986>

        Reviewed by Sam Weinig.

        Drop UserMediaPermissionRequestManager::cancelPendingRequests() as it is unused
        and its implementation is wrong (modifies the hash maps it is iterating on).

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): Deleted.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

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

        Unreviewed, follow-up build fix after r218457.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

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

        Unreviewed, follow-up build fix after r218457.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

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

        Use WTF::Function instead of std::function in WebKit2/
        https://bugs.webkit.org/show_bug.cgi?id=173504

        Reviewed by Darin Adler.

        Use WTF::Function instead of std::function in WebKit2/ to avoid
        unnecessary copying.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::getSandboxExtensionsForBlobFiles):
        * DatabaseProcess/DatabaseProcess.h:
        * NetworkProcess/cache/NetworkCacheData.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::installIncomingSyncMessageCallback):
        * Platform/IPC/Connection.h:
        * Platform/IPC/glib/GSocketMonitor.h:
        * Platform/Logging.h:
        * Shared/API/APIObject.h:
        * Shared/AsyncRequest.cpp:
        (WebKit::AsyncRequest::AsyncRequest):
        (WebKit::AsyncRequest::setAbortHandler):
        * Shared/AsyncRequest.h:
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::CompositingRunLoop):
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        * Shared/WebContextMenuItemData.h:
        * UIProcess/API/APIDownloadClient.h:
        (API::DownloadClient::willSendRequest):
        * UIProcess/API/APIIconLoadingClient.h:
        (API::IconLoadingClient::getLoadDecisionForIcon):
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPageAsync):
        * UIProcess/API/C/WKPage.cpp:
        (toGenericCallbackFunction):
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView maybeInstallIconLoadingClient]):
        * UIProcess/AcceleratedDrawingAreaProxy.cpp:
        (WebKit::AcceleratedDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/AcceleratedDrawingAreaProxy.h:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        * UIProcess/Cocoa/IconLoadingDelegate.h:
        * UIProcess/Cocoa/IconLoadingDelegate.mm:
        (WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryAppLink):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPageCommon):
        (WebKit::UIDelegate::UIClient::createNewPageAsync):
        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::start):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::prepareForMoveToWindow):
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        (WebKit::DatabaseProcessProxy::fetchWebsiteData):
        (WebKit::DatabaseProcessProxy::deleteWebsiteData):
        (WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/Databases/DatabaseProcessProxy.h:
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
        (WebKit::DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing):
        * UIProcess/DrawingAreaProxyImpl.h:
        * UIProcess/GenericCallback.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::fetchWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteData):
        (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/PageClient.h:
        * UIProcess/Plugins/PlugInAutoStartProvider.cpp:
        (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
        * UIProcess/Plugins/PlugInAutoStartProvider.h:
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::fetchWebsiteData):
        (WebKit::PluginProcessManager::deleteWebsiteData):
        (WebKit::PluginProcessManager::deleteWebsiteDataForHostNames):
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::fetchWebsiteData):
        (WebKit::PluginProcessProxy::deleteWebsiteData):
        (WebKit::PluginProcessProxy::deleteWebsiteDataForHostNames):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::backForwardListState):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::setCookieObserverCallback):
        (WebKit::WebCookieManagerProxy::cookiesDidChange):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setInitialFocus):
        (WebKit::WebPageProxy::validateCommand):
        (WebKit::WebPageProxy::sessionState):
        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
        (WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
        (WebKit::WebPageProxy::getSourceForFrame):
        (WebKit::WebPageProxy::getContentsAsString):
        (WebKit::WebPageProxy::getBytecodeProfile):
        (WebKit::WebPageProxy::getSamplingProfilerOutput):
        (WebKit::WebPageProxy::isWebProcessResponsive):
        (WebKit::WebPageProxy::getSelectionOrContentsAsString):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::getMarkedRangeAsync):
        (WebKit::WebPageProxy::getSelectedRangeAsync):
        (WebKit::WebPageProxy::characterIndexForPointAsync):
        (WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
        (WebKit::WebPageProxy::takeSnapshot):
        (WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
        (WebKit::WebPageProxy::callAfterNextPresentationUpdate):
        (WebKit::WebPageProxy::getLoadDecisionForIcon):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::isResponsive):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
        (WebKit::XDamageNotifier::add):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::selectWithGesture):
        (WebKit::WebPageProxy::updateSelectionWithTouches):
        (WebKit::WebPageProxy::requestAutocorrectionData):
        (WebKit::WebPageProxy::applyAutocorrection):
        (WebKit::WebPageProxy::executeEditCommand):
        (WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
        (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::selectPositionAtPoint):
        (WebKit::WebPageProxy::beginSelectionInDirection):
        (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPageProxy::requestDictationContext):
        (WebKit::WebPageProxy::requestAutocorrectionContext):
        (WebKit::WebPageProxy::getSelectionContext):
        (WebKit::WebPageProxy::selectWithTwoTouches):
        (WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
        (WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
        (WebKit::WebPageProxy::moveSelectionByOffset):
        (WebKit::WebPageProxy::focusNextAssistedNode):
        (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/mac/WKTextFinderClient.mm:
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (-[WKSelectionHandlerWrapper initWithSelectionHandler:]):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
        (WebKit::WebPageProxy::fontAtSelection):
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinator::openPaymentSetup):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::Stream::willSendRequest):
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::markLayersVolatile):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::markLayersVolatile):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::markAllLayersVolatile):
        * WebProcess/WebProcess.h:

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

        Fix CMake build

        * CMakeLists.txt:
        * NetworkProcess/capture/NetworkCaptureEvent.cpp:
        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2017-06-17  Dan Bernstein  <mitz@apple.com>

        Tried to fix non-iOS builds.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

2017-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Rename WebContextMenuItemGtk as WebContextMenuItemGlib
        https://bugs.webkit.org/show_bug.cgi?id=173469

        Reviewed by Michael Catanzaro.

        Now that we switched to GAction this is actually a glib implementation, we keep the GtkAction support only for
        backwards compatibility. We could rename the file and make the GtkAction action conditional to the GTK+ port.

        * PlatformGTK.cmake:
        * Shared/glib/WebContextMenuItemGlib.cpp: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.cpp.
        (WebKit::gtkStockIDFromContextMenuAction):
        (WebKit::WebContextMenuItemGlib::WebContextMenuItemGlib):
        (WebKit::WebContextMenuItemGlib::~WebContextMenuItemGlib):
        (WebKit::WebContextMenuItemGlib::buildActionName):
        (WebKit::WebContextMenuItemGlib::createActionIfNeeded):
        * Shared/glib/WebContextMenuItemGlib.h: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.h.
        * UIProcess/API/gtk/WebKitContextMenu.cpp:
        (webkitContextMenuPopulate):
        * UIProcess/API/gtk/WebKitContextMenuActions.cpp:
        (webkitContextMenuActionGetForContextMenuItem):
        * UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h:
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        (webkitContextMenuItemCreate):
        (webkitContextMenuItemToWebContextMenuItemGlib):
        (webkit_context_menu_item_new):
        (webkit_context_menu_item_new_from_gaction):
        (webkit_context_menu_item_new_from_stock_action):
        (webkit_context_menu_item_new_from_stock_action_with_label):
        (webkit_context_menu_item_new_with_submenu):
        (webkit_context_menu_item_new_separator):
        * UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
        * UIProcess/API/gtk/WebKitContextMenuPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewPopulateContextMenu):
        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
        (WebKit::WebContextMenuProxyGtk::append):
        (WebKit::WebContextMenuProxyGtk::buildMenu):
        (WebKit::WebContextMenuProxyGtk::populate):
        * UIProcess/gtk/WebContextMenuProxyGtk.h:

2017-06-16  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Some declarations have missing or incorrect availability attributes
        https://bugs.webkit.org/show_bug.cgi?id=173508

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: Removed a redundant attribute.

        In all of the below files, added missing availability attributes for declarations that have
        not appeared yet in any GM SDK, and fixed availability attributes for declarations that
        have already appeared in the macOS 10.12.3 and iOS 10.3 SDKs.

        * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.h: Also fixed capitalization in a comment.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Also removed unnecessary conditionals.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _draggableElementAtPosition:]): Prepended an underscore to this private method’s name.
        (-[WKWebView _requestDraggableElementAtPosition:completionBlock:]): Ditto.
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Also updated for renames.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
        * UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
        * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/_WKWebViewPrintFormatter.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:

2017-06-16  Youenn Fablet  <youenn@apple.com>

        [WebRTC] CrashTracer: Regression : com.apple.WebKit.Networking at WebKit: WebKit::LibWebRTCSocketClient::sendTo
        https://bugs.webkit.org/show_bug.cgi?id=173501

        Reviewed by Eric Carlson.

        When a libwebrtc socket fails to be created in the network process,
        the network process sends back a close message, but it keeps it in a map.
        If the web process sends a message dedicated to this socket, we will try
        processing it and calling the socket which is null, hence the cache.
        This patch makes it so that if the socket is null, it is not added to the map.

        * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
        (WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::createSocket):
        (WebKit::NetworkRTCProvider::createUDPSocket):
        (WebKit::NetworkRTCProvider::createServerTCPSocket):
        (WebKit::NetworkRTCProvider::createClientTCPSocket):
        * NetworkProcess/webrtc/NetworkRTCProvider.h:

2017-06-16  Antoine Quint  <graouts@apple.com>

        Add a WebKit2 setting to control whether media documents should automatically enter fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=173503

        Reviewed by Tim Horton.

        New WebKit2 setting to specify whether a media document should automatically enter fullscreen.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setMediaDocumentEntersFullscreenAutomatically:]):
        (-[WKPreferences _mediaDocumentEntersFullscreenAutomatically]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-06-16  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove custom bindings for HTMLDocument
        https://bugs.webkit.org/show_bug.cgi?id=173444

        Reviewed by Darin Adler.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
        (webkit_dom_html_document_get_link_color):
        (webkit_dom_html_document_set_link_color):
        Update for rename of linkColor to linkColorForBindings.

2017-06-16  Daniel Bates  <dabates@apple.com>

        Cleanup: WebContextMenuClient::searchWithGoogle() should parse URL using URL { URL { }, ... }
        instead of URL { ParsedURLString, ... }
        https://bugs.webkit.org/show_bug.cgi?id=173495
        <rdar://problem/32827445>

        Reviewed by Alex Christensen.

        URL(ParsedURLString, ...) should only be used with a string that was the result of URL::string().
        Otherwise, it will cause an assertion failure if the canonicalized URL differs from the string.
        Although it is unlikely that the hardcoded string in WebContextMenuClient::searchWithGoogle()
        would differ from the canonicalized URL it is best practice to use URL(URL(), ...) to
        parse an arbitrary string that looks like a URL.

        Also modernize the code using C++14 idioms.

        * WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
        (WebKit::WebContextMenuClient::searchWithGoogle):

2017-06-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
        https://bugs.webkit.org/show_bug.cgi?id=173366
        <rdar://problem/32767014>

        Reviewed by Tim Horton.

        Move pieces of iOS WebKit2 drag and drop implementation into OpenSource. No change in behavior.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::setDragImage):
        (WebKit::WebPageProxy::setPromisedDataForImage):
        (WebKit::WebPageProxy::setPromisedDataForAttachment):
        (WebKit::WebPageProxy::setDragCaretRect):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (longPressActionDelayAfterLift):
        (-[WKContentView webViewUIDelegate]):
        (-[WKContentView setupDataInteractionDelegates]):
        (-[WKContentView teardownDataInteractionDelegates]):
        (-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (uiImageForImage):
        (shouldUseTextIndicatorToCreatePreviewForDragAction):
        (-[WKContentView dragPreviewForImage:frameInRootViewCoordinates:clippingRectsInFrameCoordinates:backgroundColor:]):
        (-[WKContentView dragPreviewForCurrentDataInteractionState]):
        (-[WKContentView performDeferredActionAtDragOrigin]):
        (-[WKContentView cancelDeferredActionAtDragOrigin]):
        (-[WKContentView computeClientAndGlobalPointsForDropSession:outClientPoint:outGlobalPoint:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView cleanUpDragSourceSessionState]):
        (extractItemProvidersFromDragItems):
        (extractItemProvidersFromDropSession):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDataInteractionControllerOperation:]):
        (-[WKContentView _transitionDragPreviewToImageIfNecessary:]):
        (-[WKContentView _didChangeDataInteractionCaretRect:currentRect:]):
        (-[WKContentView _dragDestinationActionForDropSession:]):
        (positionInformationMayStartDataInteraction):
        (-[WKContentView currentDragOrDropSession]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView _api_dragInteraction:previewForLiftingItem:session:]):
        (-[WKContentView dragInteraction:sessionWillBegin:]):
        (-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:previewForCancellingItem:withDefault:]):
        (-[WKContentView _api_dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:canHandleSession:]):
        (-[WKContentView _api_dropInteraction:sessionDidEnter:]):
        (-[WKContentView _api_dropInteraction:sessionDidUpdate:]):
        (-[WKContentView dropInteraction:sessionDidExit:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView _simulateDataInteractionEntered:]):
        (-[WKContentView _simulateDataInteractionUpdated:]):
        (-[WKContentView _simulateDataInteractionEnded:]):
        (-[WKContentView _simulateDataInteractionPerformOperation:]):
        (-[WKContentView _simulateDataInteractionSessionDidEnd:]):
        (-[WKContentView _simulateWillBeginDataInteractionWithSession:]):
        (-[WKContentView _simulatedItemsForSession:]):
        (-[WKContentView _simulatePrepareForDataInteractionSession:completion:]):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertCGImageToBitmap):
        (WebKit::WebDragClient::startDrag):
        (WebKit::WebDragClient::declareAndWriteDragImage):
        (WebKit::WebDragClient::didConcludeEditDrag):
        (WebKit::WebDragClient::declareAndWriteAttachment):

2017-06-16  Youenn Fablet  <youenn@apple.com>

        WebRTC sockets should be closed at destruction time if not closed explicitly
        https://bugs.webkit.org/show_bug.cgi?id=173479

        Reviewed by Eric Carlson.

        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::~LibWebRTCSocket):
        (WebKit::LibWebRTCSocket::Close):

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

        [WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies
        https://bugs.webkit.org/show_bug.cgi?id=173472
        <rdar://problem/28858817>

        Reviewed by Brady Eidson.

        Add WKProcessPool SPI to efficiently reset all plugin load client policies:
        [WKProcessPool _resetPluginLoadClientPolicies]. This new SPI clears all
        existing policies and then sets all of them with new values, with a
        minimal amount of IPC.

        To achieve this, clients would previously have to call
        1. WKContextClearPluginClientPolicies() which would cause a broadcast IPC to
           every WebContent process.
        2. WKContextSetPluginLoadClientPolicy() repeatedly to add each policy one by
           one. Each call to WKContextSetPluginLoadClientPolicy() would cause a broadcast
           IPC to every WebContent process.

        The new SPI does the same job with a single broadcast IPC to every WebContent
        process.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (isPluginLoadClientPolicyAcceptable):
        (toPluginLoadClientPoliciesHashMap):
        (policiesHashMapToDictionary):
        (-[WKProcessPool _resetPluginLoadClientPolicies:]):
        (-[WKProcessPool _pluginLoadClientPolicies]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setPluginLoadClientPolicy):
        (WebKit::WebProcessPool::resetPluginLoadClientPolicies):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::resetPluginLoadClientPolicies):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2017-06-16  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Expand sandbox to better support video playback on mac mini
        https://bugs.webkit.org/show_bug.cgi?id=173492
        <rdar://problem/32804073>

        Reviewed by Alex Christensen.

        Hardware differences in Mac Mini's require some different IOKit preferences to be accessible.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-16  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS][macOS] Extend the sandbox to allow reading of AVFoundation's VideoPerformanceHUD preference
        https://bugs.webkit.org/show_bug.cgi?id=173476
        <rdar://problem/31594568>

        Reviewed by Alex Christensen.

        Update the sandbox to permit WebContent process to read the AVFoundation preferences for the performance HUD.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-16  Daniel Bates  <dabates@apple.com>

        Use the term icon instead of favicon
        https://bugs.webkit.org/show_bug.cgi?id=173400

        Reviewed by Alex Christensen.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):

2017-06-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Remove WKCookieManagerSoup
        https://bugs.webkit.org/show_bug.cgi?id=173467

        Reviewed by Michael Catanzaro.

        It's unused.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * UIProcess/API/C/soup/WKCookieManagerSoup.cpp: Removed.
        * UIProcess/API/C/soup/WKCookieManagerSoup.h: Removed.

2017-06-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Remove wrong headers check from some GTK+ API files.

        Remove the __WEBKIT_WEB_EXTENSION_H_INSIDE__ check since these are not actually shared.

        * UIProcess/API/gtk/WebKitEditorState.h:
        * UIProcess/API/gtk/WebKitOptionMenu.h:
        * UIProcess/API/gtk/WebKitPrintCustomWidget.h:

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r218325): [GTK] Runtime critical warnings running layout tests that show a popup menu
        https://bugs.webkit.org/show_bug.cgi?id=173421

        Reviewed by Carlos Alberto Lopez Perez.

        In r218325 I forgot to create a WebKitPopupMenu or WebPopupMenuProxyGtk depending on whether the view is a
        WebKitWebView or not.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createPopupMenuProxy):

2017-06-15  Tim Horton  <timothy_horton@apple.com>

        Null deref under ViewGestureController::endSwipeGesture (navigationGestureDidEnd)
        https://bugs.webkit.org/show_bug.cgi?id=173441
        <rdar://problem/25876512>

        Reviewed by Simon Fraser.

        This is a speculative fix for a crash that we don't have repro steps for.

        In a few places, ViewGestureController looks itself up by pageID (in cases
        where we're in an asynchronous callback), and then calls some
        function on it (endSwipeGesture, or something that will get there).
        However, if in the meantime an API client has turned the swipe gesture
        on and off, the page's ViewGestureController will be a different one
        than the one that originally started this process, with fresh state,
        and nullptrs in all sorts of places, ripe for dereferencing.

        To fix this, instead of just looking ViewGestureController up by 
        pageID, also keep track of the current gestureID, process-wide (previously
        the gestureID was per-ViewGestureController), and only return the
        ViewGestureController if it's currently processing the same gesture
        that started the asynchronous task.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::controllerForGesture):
        (WebKit::ViewGestureController::takeNextGestureID):
        (WebKit::ViewGestureController::willBeginGesture):
        (WebKit::ViewGestureController::didEndGesture):
        (WebKit::ViewGestureController::gestureControllerForPage): Deleted.
        * UIProcess/Cocoa/ViewGestureController.h:
        Add helpers that set and reset activeGestureType and currentGestureID together.
        Make gesture IDs process global, to avoid two ViewGestureControllers using the same IDs.

        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::endSwipeGesture):
        (WebKit::ViewGestureController::removeSwipeSnapshot):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
        (WebKit::ViewGestureController::handleMagnificationGestureEvent):
        (WebKit::ViewGestureController::endMagnificationGesture):
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::forceRepaintIfNeeded):
        (WebKit::ViewGestureController::removeSwipeSnapshot):
        Adopt willBeginGesture/didEndGesture and controllerForGesture.

2017-06-15  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] YouTube videos flash at the wrong place at the end of rotation
        https://bugs.webkit.org/show_bug.cgi?id=173445
        rdar://problem/31584852

        Reviewed by Tim Horton.

        In MobileSafari where WKWebView rotation uses _dynamicViewportUpdateModes, we could do a
        visibleContentRect update at the end of rotation which computed a bad layoutViewportRect,
        because it used a m_baseLayoutViewportSize from the old orientation.

        We have actually sent a new m_baseLayoutViewportSize to the UI process by this point in 
        a layer tree commit, but _didCommitLayerTree: ignored it because we had a _dynamicViewportUpdateMode.

        Fix is to always update the layout viewport data from the web process, since during dynamic
        viewport updates, we still need these data to compute rectangles sent back to the web process via
        visible content rect updates.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computeCustomFixedPositionRect):
        (WebKit::WebPageProxy::updateLayoutViewportParameters): Cleanup.

2017-06-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Using -[WebItemProviderPasteboard setItemProviders:] to swap out item providers before a drop breaks item provider loading
        https://bugs.webkit.org/show_bug.cgi?id=173338
        <rdar://problem/32777720>

        Reviewed by Tim Horton.

        Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers. Also, introduce
        _webView:willPerformDropWithSession: as SPI on WKUIDelegate.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::updateSupportedTypeIdentifiers):
        (WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers): Deleted.
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::updateSupportedTypeIdentifiers):
        (WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Cleanup headers includes in GTK+ API files
        https://bugs.webkit.org/show_bug.cgi?id=173415

        Reviewed by Michael Catanzaro.

        - Remove WTFGType.h from WebKitPrivate.h and include it in all other files instead of WebKitPrivate if needed.
        - Stop including WebKitPrivate.h in all other private headers.
        - Remove all C API includes.

        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        * UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:
        * UIProcess/API/gtk/WebKitAuthenticationRequestPrivate.h:
        * UIProcess/API/gtk/WebKitAutomationSession.cpp:
        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
        * UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
        * UIProcess/API/gtk/WebKitColorChooser.h:
        * UIProcess/API/gtk/WebKitColorChooserRequest.cpp:
        * UIProcess/API/gtk/WebKitContextMenu.cpp:
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        * UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
        * UIProcess/API/gtk/WebKitContextMenuPrivate.h:
        * UIProcess/API/gtk/WebKitCookieManager.cpp:
        * UIProcess/API/gtk/WebKitCookieManagerPrivate.h:
        * UIProcess/API/gtk/WebKitCredentialPrivate.h:
        * UIProcess/API/gtk/WebKitDownload.cpp:
        * UIProcess/API/gtk/WebKitDownloadClient.cpp:
        * UIProcess/API/gtk/WebKitDownloadPrivate.h:
        * UIProcess/API/gtk/WebKitEditorState.cpp:
        * UIProcess/API/gtk/WebKitEditorStatePrivate.h:
        * UIProcess/API/gtk/WebKitError.cpp:
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        * UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
        * UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h:
        * UIProcess/API/gtk/WebKitFindController.cpp:
        * UIProcess/API/gtk/WebKitFormClient.cpp:
        * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
        * UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
        * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:
        * UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h:
        * UIProcess/API/gtk/WebKitHitTestResult.cpp:
        * UIProcess/API/gtk/WebKitHitTestResultPrivate.h:
        * UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:
        * UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h:
        * UIProcess/API/gtk/WebKitJavascriptResult.cpp:
        * UIProcess/API/gtk/WebKitJavascriptResultPrivate.h:
        * UIProcess/API/gtk/WebKitMimeInfoPrivate.h:
        * UIProcess/API/gtk/WebKitNavigationActionPrivate.h:
        * UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
        * UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitNetworkProxySettings.cpp:
        * UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h:
        * UIProcess/API/gtk/WebKitNotification.cpp:
        * UIProcess/API/gtk/WebKitNotificationPermissionRequest.cpp:
        * UIProcess/API/gtk/WebKitNotificationPermissionRequestPrivate.h:
        * UIProcess/API/gtk/WebKitNotificationPrivate.h:
        * UIProcess/API/gtk/WebKitOptionMenu.cpp:
        * UIProcess/API/gtk/WebKitPlugin.cpp:
        * UIProcess/API/gtk/WebKitPluginPrivate.h:
        * UIProcess/API/gtk/WebKitPolicyDecision.cpp:
        * UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:
        * UIProcess/API/gtk/WebKitPrintCustomWidgetPrivate.h:
        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        * UIProcess/API/gtk/WebKitPrivate.h:
        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
        * UIProcess/API/gtk/WebKitSecurityManager.cpp:
        * UIProcess/API/gtk/WebKitSecurityOrigin.cpp:
        * UIProcess/API/gtk/WebKitSecurityOriginPrivate.h:
        * UIProcess/API/gtk/WebKitSettings.cpp:
        * UIProcess/API/gtk/WebKitUIClient.cpp:
        * UIProcess/API/gtk/WebKitURIRequest.cpp:
        * UIProcess/API/gtk/WebKitURIResponse.cpp:
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        * UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
        * UIProcess/API/gtk/WebKitUserContent.cpp:
        * UIProcess/API/gtk/WebKitUserContentManager.cpp:
        * UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:
        * UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h:
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        * UIProcess/API/gtk/WebKitWebInspectorPrivate.h:
        * UIProcess/API/gtk/WebKitWebResource.cpp:
        * UIProcess/API/gtk/WebKitWebResourcePrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        * UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp:
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
        * UIProcess/API/gtk/WebKitWebsiteDataManagerPrivate.h:
        * UIProcess/API/gtk/WebKitWebsiteDataPrivate.h:
        * UIProcess/API/gtk/WebKitWindowProperties.cpp:
        * UIProcess/API/gtk/WebKitWindowPropertiesPrivate.h:
        * WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Do not use the C API in WebGtkExtensionManager
        https://bugs.webkit.org/show_bug.cgi?id=173408

        Reviewed by Michael Catanzaro.

        Use the C++ API instead.

        * WebProcess/gtk/WebGtkExtensionManager.cpp:
        (WebKit::parseUserData):
        (WebKit::WebGtkExtensionManager::initialize):
        * WebProcess/gtk/WebGtkExtensionManager.h:
        * WebProcess/gtk/WebGtkInjectedBundleMain.cpp:
        (WKBundleInitialize):

2017-06-15  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Stop using GtkAction in WebPopupMenuProxyGtk
        https://bugs.webkit.org/show_bug.cgi?id=173417

        Reviewed by Carlos Garcia Campos.

        This gets rid of GtkAction in WebPopupMenuProxyGtk, which was deprecated in GTK+ 3.10
        and will not be available in GTK+ 4.0. Using GtkMenuItem directly makes populating
        long menus slightly faster, which can be noticeable in lower-end machines.

        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::populatePopupMenu):
        (WebKit::WebPopupMenuProxyGtk::menuItemActivated):
        (WebKit::WebPopupMenuProxyGtk::createGtkActionForMenuItem): Deleted.
        * UIProcess/gtk/WebPopupMenuProxyGtk.h:
        (WebKit::WebPopupMenuProxyGtk::setCurrentlySelectedMenuItem):
        Instantiate GtkMenuItem objects directly when populating the menu.

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix copy-paste error in GTK+ WEBKIT_JAVASCRIPT_ERROR definition.

        The print one was copied there.

        * UIProcess/API/gtk/WebKitError.h:

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add API to allow overriding popup menus
        https://bugs.webkit.org/show_bug.cgi?id=172905

        Reviewed by Michael Catanzaro.

        The GTK+ API uses GTK+ for the default implementation of several UI elements like the file chooser, print dialog,
        color picker, context menu, etc. but in all those cases it allows to override the default implementation. It's
        not possible to override the popup menu used for select elements. This patch adds WebKitOptionMenu to represent
        a select dropdown menu. It's passed as an argument of the new signal WebKitWebView::show-option-menu, and
        contains WebKitOptionMenuItem elements representing the items to be displayed.

        * PlatformGTK.cmake:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createPopupMenuProxy): Create a WebKitPopupMenu.
        * UIProcess/API/gtk/WebKitOptionMenu.cpp: Added.
        (webkitOptionMenuCreate):
        (webkit_option_menu_get_n_items):
        (webkit_option_menu_get_item):
        (webkit_option_menu_select_item):
        (webkit_option_menu_activate_item):
        (webkit_option_menu_close):
        * UIProcess/API/gtk/WebKitOptionMenu.h: Added.
        * UIProcess/API/gtk/WebKitOptionMenuItem.cpp: Added.
        (webkit_option_menu_item_copy):
        (webkit_option_menu_item_free):
        (webkit_option_menu_item_get_label):
        (webkit_option_menu_item_get_tooltip):
        (webkit_option_menu_item_is_group_label):
        (webkit_option_menu_item_is_group_child):
        (webkit_option_menu_item_is_enabled):
        (webkit_option_menu_item_is_selected):
        * UIProcess/API/gtk/WebKitOptionMenuItem.h: Added.
        * UIProcess/API/gtk/WebKitOptionMenuItemPrivate.h: Added.
        (_WebKitOptionMenuItem::_WebKitOptionMenuItem):
        * UIProcess/API/gtk/WebKitOptionMenuPrivate.h: Added.
        * UIProcess/API/gtk/WebKitPopupMenu.cpp: Added.
        (WebKit::WebKitPopupMenu::WebKitPopupMenu):
        (WebKit::menuCloseCallback):
        (WebKit::WebKitPopupMenu::showPopupMenu): Call webkitWebViewShowOptionMenu() falling back to default
        implementation if the user didn't handle the signal.
        (WebKit::WebKitPopupMenu::hidePopupMenu):
        (WebKit::WebKitPopupMenu::cancelTracking):
        (WebKit::WebKitPopupMenu::selectItem):
        (WebKit::WebKitPopupMenu::activateItem):
        * UIProcess/API/gtk/WebKitPopupMenu.h: Added.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_class_init):
        (webkitWebViewShowOptionMenu): Emit WebKitWebView::show-option-menu.
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add new get_type functions.
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new sections.
        * UIProcess/API/gtk/webkit2.h: Add new public headers.
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk): Do not create the GtkMenu in constructor.
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Create the GtkMenu and connect to the signals here.
        (WebKit::WebPopupMenuProxyGtk::hidePopupMenu): Return early if the Gtk hasn't been shown.
        * UIProcess/gtk/WebPopupMenuProxyGtk.h: Make constructor and webview protected.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::ResourceLoadClient in WebKitWebPage
        https://bugs.webkit.org/show_bug.cgi?id=173364

        Reviewed by Michael Catanzaro.

        Instead of the C API.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkitWebPageCreate):
        (didInitiateLoadForResource): Deleted.
        (willSendRequestForFrame): Deleted.
        (didReceiveResponseForResource): Deleted.
        (didReceiveContentLengthForResource): Deleted.
        (didFinishLoadForResource): Deleted.
        (didFailLoadForResource): Deleted.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::Client in WebKitWebExtension
        https://bugs.webkit.org/show_bug.cgi?id=173358

        Reviewed by Michael Catanzaro.

        Instead of the C API.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (webkitWebExtensionCreate):
        (webkitWebExtensionPageCreated): Deleted.
        (webkitWebExtensionPageDestroy): Deleted.
        (webkitWebExtensionDidReceiveMessage): Deleted.
        (didCreatePage): Deleted.
        (willDestroyPage): Deleted.
        (didReceiveMessage): Deleted.
        (didReceiveMessageToPage): Deleted.

2017-06-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::NotificationProvider
        https://bugs.webkit.org/show_bug.cgi?id=173312

        Reviewed by Žan Doberšek.

        Also cleanup a bit the WebKitNotificationProvider implementation, it doesn't need to be refcounted.

        * UIProcess/API/gtk/WebKitNotificationProvider.cpp:
        (WebKitNotificationProvider::WebKitNotificationProvider):
        (WebKitNotificationProvider::~WebKitNotificationProvider):
        (WebKitNotificationProvider::show):
        (WebKitNotificationProvider::clearNotifications):
        (WebKitNotificationProvider::notificationPermissions):
        (WebKitNotificationProvider::setNotificationPermissions):
        * UIProcess/API/gtk/WebKitNotificationProvider.h:
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        (addOriginToMap):
        (webkit_web_context_initialize_notification_permissions):

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundle::ResourceLoadClient
        https://bugs.webkit.org/show_bug.cgi?id=173362

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h.
        (API::InjectedBundle::ResourceLoadClient::didInitiateLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::willSendRequestForFrame):
        (API::InjectedBundle::ResourceLoadClient::didReceiveResponseForResource):
        (API::InjectedBundle::ResourceLoadClient::didReceiveContentLengthForResource):
        (API::InjectedBundle::ResourceLoadClient::didFinishLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::didFailLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::shouldCacheResponse):
        (API::InjectedBundle::ResourceLoadClient::shouldUseCredentialStorage):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetResourceLoadClient):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (setUpResourceLoadClient):
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
        (WebKit::InjectedBundlePageResourceLoadClient::InjectedBundlePageResourceLoadClient):
        (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/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
        (WebKit::WebFrameLoaderClient::shouldUseCredentialStorage):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoading):
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoading):
        (WebKit::WebFrameLoaderClient::willCacheResponse):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setInjectedBundleResourceLoadClient):
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::injectedBundleResourceLoadClient):

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundle::Client
        https://bugs.webkit.org/show_bug.cgi?id=173357

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h.
        (API::InjectedBundle::Client::didCreatePage):
        (API::InjectedBundle::Client::willDestroyPage):
        (API::InjectedBundle::Client::didInitializePageGroup):
        (API::InjectedBundle::Client::didReceiveMessage):
        (API::InjectedBundle::Client::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetClient):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (webkitWebExtensionPageCreated): Deleted.
        (webkitWebExtensionPageDestroy): Deleted.
        (webkitWebExtensionDidReceiveMessage): Deleted.
        (didCreatePage): Deleted.
        (willDestroyPage): Deleted.
        (didReceiveMessage): Deleted.
        (didReceiveMessageToPage): Deleted.
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setClient):
        (WebKit::InjectedBundle::didCreatePage):
        (WebKit::InjectedBundle::willDestroyPage):
        (WebKit::InjectedBundle::didInitializePageGroup):
        (WebKit::InjectedBundle::didReceiveMessage):
        (WebKit::InjectedBundle::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleClient.cpp:
        (WebKit::InjectedBundleClient::InjectedBundleClient):
        (WebKit::InjectedBundleClient::didCreatePage):
        (WebKit::InjectedBundleClient::willDestroyPage):
        (WebKit::InjectedBundleClient::didInitializePageGroup):
        (WebKit::InjectedBundleClient::didReceiveMessage):
        (WebKit::InjectedBundleClient::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundleClient.h:

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        WKErrorGetErrorCode should not return the API::Error enum values directly
        https://bugs.webkit.org/show_bug.cgi?id=173367

        Reviewed by Alex Christensen.

        Even if the values are the same, we should use a switch to ensure we return the C API values, and not all
        API::Error enum values are exposed in the C API.

        * Shared/API/c/WKErrorRef.cpp:
        (WKErrorGetErrorCode):

2017-06-14  Commit Queue  <commit-queue@webkit.org>

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

        API test fails on iOS (Requested by alexchristensen on
        #webkit).

        Reverted changeset:

        "Add SPI for immediate injection of user scripts"
        https://bugs.webkit.org/show_bug.cgi?id=173342
        http://trac.webkit.org/changeset/218285

2017-06-14  Commit Queue  <commit-queue@webkit.org>

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

        "The previous rollout of r218263, r218265, and r218266 by
        mlewis13 on bug 173383 missed r218267 and broke the GTK+
        build" (Requested by clopez_ on #webkit).

        Reverted changeset:

        "[GTK] Use API::InjectedBundle::ResourceLoadClient in
        WebKitWebPage"
        https://bugs.webkit.org/show_bug.cgi?id=173364
        http://trac.webkit.org/changeset/218267

2017-06-14  Chris Dumez  <cdumez@apple.com>

        WebKit falsely reports that a web process is unresponsive if you close a page shortly after stopping a load
        https://bugs.webkit.org/show_bug.cgi?id=173384
        <rdar://problem/32723779>

        Reviewed by Dan Bernstein.

        WebKit falsely reports that a web process is unresponsive if you close a page shortly after stopping a load.
        This is because WebPageProxy::stopLoad() starts the responsiveness timer and expects a StopResponsinessTimer
        IPC from the WebProcess to stop the timer so we don't report the process as unresponsive. However, if
        WebPageProxy::close() is called before the StopResponsinessTimer IPC has been received, the page will remove
        itself from the message receiver map and we would no longer be able to receive the StopResponsinessTimer
        IPC and stop the timer, even if the WebProcess sent it to the UIProcess.

        To address the issue, we now send the IPC Message to the WebProcessProxy instead of the WebPageProxy, so we
        can stop the responsiveness timer, even after the WebPageProxy has been called.

        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::stopResponsivenessTimer):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::SendStopResponsivenessTimer::~SendStopResponsivenessTimer):
        (WebKit::WebPage::tryClose):
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::stopLoading):
        (WebKit::WebPage::reload):
        (WebKit::WebPage::goForward):
        (WebKit::WebPage::goBack):
        (WebKit::WebPage::goToBackForwardItem):

2017-06-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r218263, r218265, and r218266.
        https://bugs.webkit.org/show_bug.cgi?id=173383

        "These revisions caused multiple API test to Time out on
        macOS" (Requested by mlewis13 on #webkit).

        Reverted changesets:

        "Add API::InjectedBundle::Client"
        https://bugs.webkit.org/show_bug.cgi?id=173357
        http://trac.webkit.org/changeset/218263

        "[GTK] Use API::InjectedBundle::Client in WebKitWebExtension"
        https://bugs.webkit.org/show_bug.cgi?id=173358
        http://trac.webkit.org/changeset/218265

        "Add API::InjectedBundle::ResourceLoadClient"
        https://bugs.webkit.org/show_bug.cgi?id=173362
        http://trac.webkit.org/changeset/218266

2017-06-14  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Remove dead-code "import "removed-dev-nodes.sb” from sandboxes (173378)
        https://bugs.webkit.org/show_bug.cgi?id=173378
        <rdar://problem/32773230>

        Reviewed by Alexey Proskuryakov.

        Clean up the sandboxes to remove a couple of dead functions (and imports):
        1. Remove the import "removed-dev-nodes.sb" from the sandbox, since this file is now empty.
        2. Also remove the call to "instruments-support" as this is a no-op function in modern iOS.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

        Add SPI for immediate injection of user scripts
        https://bugs.webkit.org/show_bug.cgi?id=173342
        <rdar://problem/29202285>

        Reviewed by Brady Eidson.

        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupAddUserScript):
        * UIProcess/API/C/WKUserContentControllerRef.cpp:
        (WKUserContentControllerAddUserScript):
        * UIProcess/API/Cocoa/WKUserContentController.mm:
        (-[WKUserContentController addUserScript:]):
        (-[WKUserContentController _addUserScriptImmediately:]):
        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addUserScript):
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addUserScripts):
        (WebKit::WebUserContentController::addUserScriptInternal):
        If we are to inject the script internally, inject it into the appropriate pages.
        If we're injecting into the top frame only, there's no need to traverse the frame tree.
        (WebKit::WebUserContentController::addUserScript):
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/UserContent/WebUserContentController.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):

2017-06-14  Jonathan Bedard  <jbedard@apple.com>

        Configure screen scale for running layout tests on plus devices
        https://bugs.webkit.org/show_bug.cgi?id=173319

        Reviewed by Tim Horton.

        * Platform/spi/ios/UIKitSPI.h: Both this and UIKitTestSPI.h define UIKeyboard. Use
        a define guard to prevent re-definition.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::ResourceLoadClient in WebKitWebPage
        https://bugs.webkit.org/show_bug.cgi?id=173364

        Reviewed by Michael Catanzaro.

        Instead of the C API.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkitWebPageCreate):
        (didInitiateLoadForResource): Deleted.
        (willSendRequestForFrame): Deleted.
        (didReceiveResponseForResource): Deleted.
        (didReceiveContentLengthForResource): Deleted.
        (didFinishLoadForResource): Deleted.
        (didFailLoadForResource): Deleted.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundle::ResourceLoadClient
        https://bugs.webkit.org/show_bug.cgi?id=173362

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h.
        (API::InjectedBundle::ResourceLoadClient::didInitiateLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::willSendRequestForFrame):
        (API::InjectedBundle::ResourceLoadClient::didReceiveResponseForResource):
        (API::InjectedBundle::ResourceLoadClient::didReceiveContentLengthForResource):
        (API::InjectedBundle::ResourceLoadClient::didFinishLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::didFailLoadForResource):
        (API::InjectedBundle::ResourceLoadClient::shouldCacheResponse):
        (API::InjectedBundle::ResourceLoadClient::shouldUseCredentialStorage):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetResourceLoadClient):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (setUpResourceLoadClient):
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
        (WebKit::InjectedBundlePageResourceLoadClient::InjectedBundlePageResourceLoadClient):
        (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/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
        (WebKit::WebFrameLoaderClient::shouldUseCredentialStorage):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoading):
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoading):
        (WebKit::WebFrameLoaderClient::willCacheResponse):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setInjectedBundleResourceLoadClient):
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::injectedBundleResourceLoadClient):

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::Client in WebKitWebExtension
        https://bugs.webkit.org/show_bug.cgi?id=173358

        Reviewed by Michael Catanzaro.

        Instead of the C API.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (webkitWebExtensionCreate):
        (webkitWebExtensionPageCreated): Deleted.
        (webkitWebExtensionPageDestroy): Deleted.
        (webkitWebExtensionDidReceiveMessage): Deleted.
        (didCreatePage): Deleted.
        (willDestroyPage): Deleted.
        (didReceiveMessage): Deleted.
        (didReceiveMessageToPage): Deleted.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundle::Client
        https://bugs.webkit.org/show_bug.cgi?id=173357

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h.
        (API::InjectedBundle::Client::didCreatePage):
        (API::InjectedBundle::Client::willDestroyPage):
        (API::InjectedBundle::Client::didInitializePageGroup):
        (API::InjectedBundle::Client::didReceiveMessage):
        (API::InjectedBundle::Client::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetClient):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (webkitWebExtensionPageCreated): Deleted.
        (webkitWebExtensionPageDestroy): Deleted.
        (webkitWebExtensionDidReceiveMessage): Deleted.
        (didCreatePage): Deleted.
        (willDestroyPage): Deleted.
        (didReceiveMessage): Deleted.
        (didReceiveMessageToPage): Deleted.
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setClient):
        (WebKit::InjectedBundle::didCreatePage):
        (WebKit::InjectedBundle::willDestroyPage):
        (WebKit::InjectedBundle::didInitializePageGroup):
        (WebKit::InjectedBundle::didReceiveMessage):
        (WebKit::InjectedBundle::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleClient.cpp:
        (WebKit::InjectedBundleClient::InjectedBundleClient):
        (WebKit::InjectedBundleClient::didCreatePage):
        (WebKit::InjectedBundleClient::willDestroyPage):
        (WebKit::InjectedBundleClient::didInitializePageGroup):
        (WebKit::InjectedBundleClient::didReceiveMessage):
        (WebKit::InjectedBundleClient::didReceiveMessageToPage):
        * WebProcess/InjectedBundle/InjectedBundleClient.h:

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundleClient in WebKitInjectedBundleClient
        https://bugs.webkit.org/show_bug.cgi?id=173351

        Reviewed by Michael Catanzaro.

        Instead of the C API.

        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
        (attachInjectedBundleClientToContext):
        (didReceiveWebViewMessageFromInjectedBundle): Deleted.
        (didReceiveMessageFromInjectedBundle): Deleted.
        (getInjectedBundleInitializationUserData): Deleted.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundleClient
        https://bugs.webkit.org/show_bug.cgi?id=173350

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * UIProcess/API/APIInjectedBundleClient.h: Copied from Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h.
        (API::InjectedBundleClient::didReceiveMessageFromInjectedBundle):
        (API::InjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
        (API::InjectedBundleClient::getInjectedBundleInitializationUserData):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetInjectedBundleClient):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextDispose):
        * UIProcess/WebContextInjectedBundleClient.cpp:
        (WebKit::WebContextInjectedBundleClient::WebContextInjectedBundleClient):
        (WebKit::WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
        (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        (WebKit::WebProcessPool::setInjectedBundleClient):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::handleMessage):
        (WebKit::WebProcessPool::handleSynchronousMessage):
        * UIProcess/WebProcessPool.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::NotificationProvider
        https://bugs.webkit.org/show_bug.cgi?id=173309

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * UIProcess/API/APINotificationProvider.h: Copied from Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h.
        (API::NotificationProvider::show):
        (API::NotificationProvider::cancel):
        (API::NotificationProvider::didDestroyNotification):
        (API::NotificationProvider::clearNotifications):
        (API::NotificationProvider::addNotificationManager):
        (API::NotificationProvider::removeNotificationManager):
        (API::NotificationProvider::notificationPermissions):
        * UIProcess/API/C/WKNotificationManager.cpp:
        (WKNotificationManagerSetProvider):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy):
        (WebKit::WebNotificationManagerProxy::setProvider):
        (WebKit::WebNotificationManagerProxy::processPoolDestroyed):
        (WebKit::WebNotificationManagerProxy::notificationPermissions):
        (WebKit::WebNotificationManagerProxy::show):
        (WebKit::WebNotificationManagerProxy::cancel):
        (WebKit::WebNotificationManagerProxy::didDestroyNotification):
        (WebKit::WebNotificationManagerProxy::clearNotifications):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::WebNotificationProvider):
        (WebKit::WebNotificationProvider::show):
        (WebKit::WebNotificationProvider::cancel):
        (WebKit::WebNotificationProvider::didDestroyNotification):
        (WebKit::WebNotificationProvider::addNotificationManager):
        (WebKit::WebNotificationProvider::removeNotificationManager):
        (WebKit::WebNotificationProvider::notificationPermissions):
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        API clients should not be passed by value to the setters
        https://bugs.webkit.org/show_bug.cgi?id=173266

        Reviewed by Alex Christensen.

        By using a rvalue reference we make it more explicit that the ownership is transferred and we avoid the
        parameter construction.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setClient):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::setProvider):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::setClient):
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setHistoryClient):
        (WebKit::WebPageProxy::setNavigationClient):
        (WebKit::WebPageProxy::setLoaderClient):
        (WebKit::WebPageProxy::setPolicyClient):
        (WebKit::WebPageProxy::setFormClient):
        (WebKit::WebPageProxy::setUIClient):
        (WebKit::WebPageProxy::setIconLoadingClient):
        (WebKit::WebPageProxy::setFindClient):
        (WebKit::WebPageProxy::setFindMatchesClient):
        (WebKit::WebPageProxy::setDiagnosticLoggingClient):
        (WebKit::WebPageProxy::setContextMenuClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::setFullscreenClient):
        (WebKit::WebPageProxy::getLoadDecisionForIcon):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setHistoryClient):
        (WebKit::WebProcessPool::setDownloadClient):
        (WebKit::WebProcessPool::setAutomationClient):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setInjectedBundleContextMenuClient):
        (WebKit::WebPage::setInjectedBundleEditorClient):
        (WebKit::WebPage::setInjectedBundleFormClient):
        (WebKit::WebPage::setInjectedBundlePageLoaderClient):
        (WebKit::WebPage::setInjectedBundleUIClient):
        * WebProcess/WebPage/WebPage.h:

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::EditorClient in WebKitWebEditor
        https://bugs.webkit.org/show_bug.cgi?id=173355

        Reviewed by Žan Doberšek.

        Instead of the C API.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:
        (webkitWebEditorCreate):
        (didChangeSelection): Deleted.

2017-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build with GCC 4.9 after r218244.

        It seems that GCC 4.9 gets confused by enum named General and value of Print enum named General too. This
        renames the Print enum value as Generic.

        * Shared/API/APIError.h:
        * Shared/gtk/WebErrorsGtk.cpp:
        (WebKit::printError):
        * UIProcess/API/gtk/WebKitPrivate.cpp:
        (toWebKitError):
        (toWebCoreError):

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Do not mix C and C++ API error constants
        https://bugs.webkit.org/show_bug.cgi?id=173311

        Reviewed by Alex Christensen.

        In r214934 I added error constants to API::Error, but not for all errors exposed in the C API. Because of this
        we are mixing both constants in WebErrors and in GTk+ WebKitPrivate.

        * Shared/API/APIError.h:
        * Shared/WebErrors.cpp:
        (WebKit::blockedError):
        (WebKit::blockedByContentBlockerError):
        (WebKit::cannotShowURLError):
        (WebKit::interruptedForPolicyChangeError):
        (WebKit::blockedByContentFilterError):
        (WebKit::cannotShowMIMETypeError):
        (WebKit::pluginWillHandleLoadError):
        (WebKit::internalError):
        * UIProcess/API/gtk/WebKitPrivate.cpp:
        (toWebKitError):
        (toWebCoreError):

2017-06-13  Matt Rajca  <mrajca@apple.com>

        WebsitePolicies: let clients select specific autoplay quirks
        https://bugs.webkit.org/show_bug.cgi?id=173343

        Reviewed by Alex Christensen.
        
        Replace the 'allowsAutoplayQuirks' bool with an OptionSet so clients can selectively
        pick auto-play quirks.

        * Shared/WebsitePolicies.h:
        (WebKit::WebsitePolicies::encode):
        (WebKit::WebsitePolicies::decode):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesSetAllowedAutoplayQuirks):
        (WKWebsitePoliciesGetAllowedAutoplayQuirks):
        (WKWebsitePoliciesSetAllowsAutoplayQuirks): Deleted.
        (WKWebsitePoliciesGetAllowsAutoplayQuirks): Deleted.
        * UIProcess/API/C/WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
        (-[_WKWebsitePolicies allowedAutoplayQuirks]):
        (-[_WKWebsitePolicies setAllowsAutoplayQuirks:]): Deleted.
        (-[_WKWebsitePolicies allowsAutoplayQuirks]): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateWebsitePolicies):

2017-06-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add missing availability declarations to SPI in WKUIDelegatePrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=173336

        Reviewed by Tim Horton.

        Add missing availability macros to two recently-introduced SPI delegate methods.
        No change in behavior.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

2017-06-13  Chris Dumez  <cdumez@apple.com>

        Add API::InjectedBundle::PageLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=173265

        Reviewed by Alex Christensen.

        Add missing null check that is causing crashes on iOS.

        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::userAgentForURL):

2017-06-13  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Allow AppleEvents in Citrix View Plugin
        https://bugs.webkit.org/show_bug.cgi?id=173280
        <rdar://problem/31913624>

        Reviewed by Alexey Proskuryakov.

        A slightly better fix: Allow AppleEvents for non-sandboxed plugins. This should
        avoid inadvertently breaking custom plugins, etc.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::platformInitializeProcess): Switch check from a specific Citrix
        test, to just allowing non-sandboxed plugins to use AppleEvents.

2017-06-13  Chris Dumez  <cdumez@apple.com>

        Include PID in some UIProcess-side release logging that relates to a particular WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=173299

        Reviewed by Ryosuke Niwa.

        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::setResponsive):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedCPULimit):

2017-06-13  Daniel Bates  <dabates@apple.com>

        Implement W3C Secure Contexts Draft Specification
        https://bugs.webkit.org/show_bug.cgi?id=158121
        <rdar://problem/26012994>

        Reviewed by Brent Fulgham.

        Part 4

        Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetIsSecureContextAttributeEnabled):
        (WKPreferencesGetIsSecureContextAttributeEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-06-13  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Allow AppleEvents in Citrix View Plugin
        https://bugs.webkit.org/show_bug.cgi?id=173280
        <rdar://problem/31913624>

        Reviewed by Alexey Proskuryakov.

        Allow the Citrix Viewer plugin to issue Apple Events.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::platformInitializeProcess): Allow AppleEvents for the Citrix Viewer plugin.

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Blob download doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=172442

        Reviewed by Carlos Alberto Lopez Perez.

        GTK+ API uses URIs for download destination paths, and passes that URIs to the WebKit internals. But WebKit
        expects download destination location to be a local path. This is not a problem for normal downloads, because
        the soup backend handles the cases of download destination being a URI and a path. For blob downloads
        NetworkDataTaskBlob is used, and it always expects the download destination to be a local path, failing in
        FileSystem::openFile() when a URI is passed. We need to keep using local files internally and convert to URIs
        only when exposing those paths to the API.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::download): Stop handling URIs here, we should always expect local files.
        * UIProcess/API/gtk/WebKitDownload.cpp:
        (webkitDownloadDecideDestinationWithSuggestedFilename): Convert destination URI to filanme before pasing it to DownloadClient.
        (webkitDownloadDestinationCreated): Convert the destination path to a URI before passing it to WebKitDownload::created-destionation signal.
        * UIProcess/API/gtk/WebKitDownloadClient.cpp:
        * UIProcess/API/gtk/WebKitDownloadPrivate.h:

2017-06-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unable to paste text that was copied from a page into the universal search field
        https://bugs.webkit.org/show_bug.cgi?id=173293
        <rdar://problem/32440918>

        Reviewed by Ryosuke Niwa.

        Add boilerplate SPI on WKPreferences to enable JavaScript access to copy and paste.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setJavaScriptCanAccessClipboard:]):
        (-[WKPreferences _javaScriptCanAccessClipboard]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-06-13  Sam Weinig  <sam@webkit.org>

        Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
        https://bugs.webkit.org/show_bug.cgi?id=80733

        Reviewed by Chris Dumez.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::windowScriptNPObject):

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Remove unused code from GTK+ WebKitPrivate.

        * UIProcess/API/gtk/WebKitPrivate.cpp:
        (wkEventModifiersToGdkModifiers): Deleted.
        (wkEventMouseButtonToWebKitMouseButton): Deleted.
        * UIProcess/API/gtk/WebKitPrivate.h:

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix return value of PageLoaderClient::shouldGoToBackForwardListItem after r218164.

        It should return true as InjectedBundlePageLoaderClient does. This caused several timeouts in GTK+ unit tests
        after r218171.

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
        https://bugs.webkit.org/show_bug.cgi?id=173151

        Reviewed by Žan Doberšek.

        Also cleanup a bit the WebKitGeolocationProvider implementation, it doesn't need to be refcounted.

        * UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
        (WebKit::GeolocationProvider::GeolocationProvider):
        (WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider):
        (WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider):
        (toGeolocationProvider): Deleted.
        (startUpdatingCallback): Deleted.
        (stopUpdatingCallback): Deleted.
        (WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted.
        (WebKitGeolocationProvider::create): Deleted.
        (WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted.
        (WebKitGeolocationProvider::startUpdating): Deleted.
        (WebKitGeolocationProvider::stopUpdating): Deleted.
        (WebKitGeolocationProvider::notifyPositionChanged): Deleted.
        (WebKitGeolocationProvider::notifyErrorOccurred): Deleted.
        * UIProcess/API/gtk/WebKitGeolocationProvider.h:
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::IconDatabaseClient in WebKitFaviconDatabase
        https://bugs.webkit.org/show_bug.cgi?id=173146

        Reviewed by Žan Doberšek.

        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        (_WebKitFaviconDatabasePrivate::~_WebKitFaviconDatabasePrivate):
        (webkitFaviconDatabaseCreate):
        (didChangeIconForPageURLCallback): Deleted.
        (iconDataReadyForPageURLCallback): Deleted.

2017-06-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::InjectedBundle::PageLoaderClient in WebKitWebPage
        https://bugs.webkit.org/show_bug.cgi?id=173304

        Reviewed by Alex Christensen.

        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkitWebPageCreate):
        (getDocumentLoaderURL): Deleted.
        (didStartProvisionalLoadForFrame): Deleted.
        (didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
        (didSameDocumentNavigationForFrame): Deleted.
        (didCommitLoadForFrame): Deleted.
        (didFinishDocumentLoadForFrame): Deleted.
        (didClearWindowObjectForFrame): Deleted.

2017-06-13  Gwang Yoon Hwang  <yoon@igalia.com>

        [GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline
        https://bugs.webkit.org/show_bug.cgi?id=172427

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::texmapGL):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        Provides current texmapGL to platform layer proxies to create and copy
        bitmap textures.

2017-06-13  Youenn Fablet  <youenn@apple.com>

        Switch off Legacy WebRTC API flag by default
        https://bugs.webkit.org/show_bug.cgi?id=173241

        Reviewed by Sam Weinig.

        * Shared/WebPreferencesDefinitions.h:

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::GeolocationProvider
        https://bugs.webkit.org/show_bug.cgi?id=173150

        Reviewed by Alex Christensen.

        It will be used by GTK+ port instead of the C API.

        * UIProcess/API/APIGeolocationProvider.h: Added.
        (API::GeolocationProvider::~GeolocationProvider):
        (API::GeolocationProvider::startUpdating):
        (API::GeolocationProvider::stopUpdating):
        (API::GeolocationProvider::setEnableHighAccuracy):
        * UIProcess/API/C/WKGeolocationManager.cpp:
        (WKGeolocationManagerSetProvider):
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
        (WebKit::WebGeolocationManagerProxy::setProvider):
        (WebKit::WebGeolocationManagerProxy::processPoolDestroyed):
        (WebKit::WebGeolocationManagerProxy::startUpdating):
        (WebKit::WebGeolocationManagerProxy::removeRequester):
        (WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebGeolocationProvider.cpp:
        (WebKit::WebGeolocationProvider::WebGeolocationProvider):
        (WebKit::WebGeolocationProvider::startUpdating):
        (WebKit::WebGeolocationProvider::stopUpdating):
        (WebKit::WebGeolocationProvider::setEnableHighAccuracy):
        * UIProcess/WebGeolocationProvider.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::InjectedBundle::PageLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=173265

        Reviewed by Alex Christensen.

        It will be used by the GTK+ port instead of the C API.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h: Added.
        (API::InjectedBundle::PageLoaderClient::willLoadURLRequest):
        (API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
        (API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):
        (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
        (API::InjectedBundle::PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (API::InjectedBundle::PageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (API::InjectedBundle::PageLoaderClient::didCommitLoadForFrame):
        (API::InjectedBundle::PageLoaderClient::didFinishDocumentLoadForFrame):
        (API::InjectedBundle::PageLoaderClient::didFinishLoadForFrame):
        (API::InjectedBundle::PageLoaderClient::didFinishProgress):
        (API::InjectedBundle::PageLoaderClient::didFailLoadWithErrorForFrame):
        (API::InjectedBundle::PageLoaderClient::didSameDocumentNavigationForFrame):
        (API::InjectedBundle::PageLoaderClient::didReceiveTitleForFrame):
        (API::InjectedBundle::PageLoaderClient::didRemoveFrameFromHierarchy):
        (API::InjectedBundle::PageLoaderClient::didDisplayInsecureContentForFrame):
        (API::InjectedBundle::PageLoaderClient::didRunInsecureContentForFrame):
        (API::InjectedBundle::PageLoaderClient::didDetectXSSForFrame):
        (API::InjectedBundle::PageLoaderClient::didFirstLayoutForFrame):
        (API::InjectedBundle::PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (API::InjectedBundle::PageLoaderClient::didLayoutForFrame):
        (API::InjectedBundle::PageLoaderClient::didReachLayoutMilestone):
        (API::InjectedBundle::PageLoaderClient::didClearWindowObjectForFrame):
        (API::InjectedBundle::PageLoaderClient::didCancelClientRedirectForFrame):
        (API::InjectedBundle::PageLoaderClient::willPerformClientRedirectForFrame):
        (API::InjectedBundle::PageLoaderClient::didHandleOnloadEventsForFrame):
        (API::InjectedBundle::PageLoaderClient::globalObjectIsAvailableForFrame):
        (API::InjectedBundle::PageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
        (API::InjectedBundle::PageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
        (API::InjectedBundle::PageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
        (API::InjectedBundle::PageLoaderClient::shouldForceUniversalAccessFromLocalURL):
        (API::InjectedBundle::PageLoaderClient::featuresUsedInPage):
        (API::InjectedBundle::PageLoaderClient::willDestroyFrame):
        (API::InjectedBundle::PageLoaderClient::userAgentForURL):
        (API::InjectedBundle::PageLoaderClient::layoutMilestones):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetPageLoaderClient):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
        (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::didReachLayoutMilestone):
        (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::userAgentForURL):
        (WebKit::InjectedBundlePageLoaderClient::layoutMilestones):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::detachedFromParent2):
        (WebKit::WebFrameLoaderClient::dispatchDidDispatchOnloadEvents):
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidCancelClientRedirect):
        (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        (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::dispatchDidReachLayoutMilestone):
        (WebKit::WebFrameLoaderClient::dispatchDidLayout):
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem):
        (WebKit::WebFrameLoaderClient::didDisplayInsecureContent):
        (WebKit::WebFrameLoaderClient::didRunInsecureContent):
        (WebKit::WebFrameLoaderClient::didDetectXSS):
        (WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):
        (WebKit::WebFrameLoaderClient::dispatchGlobalObjectAvailable):
        (WebKit::WebFrameLoaderClient::dispatchWillDisconnectDOMWindowExtensionFromGlobalObject):
        (WebKit::WebFrameLoaderClient::dispatchDidReconnectDOMWindowExtensionToGlobalObject):
        (WebKit::WebFrameLoaderClient::dispatchWillDestroyGlobalObjectForDOMWindowExtension):
        (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
        * WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
        (WebKit::WebProgressTrackerClient::progressFinished):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setInjectedBundlePageLoaderClient):
        (WebKit::WebPage::close):
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::userAgent):
        (WebKit::WebPage::reportUsedFeatures):
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::injectedBundleLoaderClient):

2017-06-12  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Peeking on an image could result in a preview at the wrong size
        https://bugs.webkit.org/show_bug.cgi?id=173274
        rdar://problem/30404627

        Reviewed by Tim Horton.

        There were a couple of issues with the way the page scale is communicated between the web process
        and the UI process.

        Generally, the page scale is computed by the web process, and sent to the UI process via
        layer tree commits. UI-side scale is them communicated back to the web process via visibleContentRect
        updates. When receiving a new scale, WebPage has a "scale was set by the UI process" flag to handle
        the case where user interaction overrides the viewport-computed page scale. However, this flag would
        get set erroneously in a couple of situations.

        First, during page loading, layer flushing is suspended temporarily, so web process scale changes never
        make it to the UI process. In that scenario, the UI process could send an old scale back to the web process,
        setting the "scale was set by the UI process" when it really wasn't.

        Secondly, web -> UI layer commit messages, and UI -> web updateVisibleContentRect messages can be in flight at the
        same time, again causing a stale scale to reach the web process.

        Fix this by only setting the "scale was set by the UI process" when we know the UI scale should be in sync, by comparing
        commit IDs of sent and received scales.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::scaleFromUIProcess):
        (WebKit::WebPage::updateVisibleContentRects):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        (WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID):

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

        Modernize UserScript.h
        https://bugs.webkit.org/show_bug.cgi?id=173273

        Reviewed by Tim Horton.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<UserScript>::encode): Deleted.
        (IPC::ArgumentCoder<UserScript>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupAddUserScript):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::addUserScript):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addUserScript):
        * WebProcess/WebPage/WebPage.h:

2017-06-12  Tim Horton  <timothy_horton@apple.com>

        [iOS] Cmd-C doesn't copy text from WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=173277
        <rdar://problem/32396742>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView _addShortcutForWebView:]):
        (-[WKContentView _promptForReplaceForWebView:]):
        (-[WKContentView _transliterateChineseForWebView:]):
        (-[WKContentView _reanalyzeForWebView:]):
        (-[WKContentView replaceForWebView:]):
        (-[WKContentView canPerformAction:withSender:]):
        (-[WKContentView copyForWebView:]):
        (-[WKContentView cutForWebView:]):
        (-[WKContentView pasteForWebView:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView selectAllForWebView:]):
        (-[WKContentView toggleBoldfaceForWebView:]):
        (-[WKContentView toggleItalicsForWebView:]):
        (-[WKContentView toggleUnderlineForWebView:]):
        (-[WKContentView _showTextStyleOptionsForWebView:]):
        (-[WKContentView _defineForWebView:]):
        (-[WKContentView _arrowKeyForWebView:]):
        (-[WKContentView _lookup:]): Deleted.
        (-[WKContentView _share:]): Deleted.
        (-[WKContentView _addShortcut:]): Deleted.
        (-[WKContentView _promptForReplace:]): Deleted.
        (-[WKContentView _transliterateChinese:]): Deleted.
        (-[WKContentView _reanalyze:]): Deleted.
        (-[WKContentView replace:]): Deleted.
        (-[WKContentView copy:]): Deleted.
        (-[WKContentView cut:]): Deleted.
        (-[WKContentView paste:]): Deleted.
        (-[WKContentView select:]): Deleted.
        (-[WKContentView selectAll:]): Deleted.
        (-[WKContentView toggleBoldface:]): Deleted.
        (-[WKContentView toggleItalics:]): Deleted.
        (-[WKContentView toggleUnderline:]): Deleted.
        (-[WKContentView _showTextStyleOptions:]): Deleted.
        (-[WKContentView _define:]): Deleted.
        (-[WKContentView _arrowKey:]): Deleted.
        Similar to what r211897 did for canPerformAction, and other patches
        have done for other selectors, forward methods for standard editing
        commands from WKContentView up to WKWebView, and back down to WKContentView.

        This is necessary because these are not treated as normal
        responder-chain-respecting methods, so they do not bubble up the view tree.
        
        In 211897, WKContentView (who is usually first responder and thus receives
        the actions) stopped claiming to be able to perform these actions, depending
        on this non-existent bubbling behavior to keep them working.

2017-06-12  Chris Dumez  <cdumez@apple.com>

        Null dereference under WebProcessPool::pageRemovedFromProcess()
        https://bugs.webkit.org/show_bug.cgi?id=173271
        <rdar://problem/32038814>

        Reviewed by Ryosuke Niwa.

        Null-check networkProcess() before dereferencing it in WebProcessPool::pageRemovedFromProcess().
        This is the only place in this class where we failed to null check before dereferencing
        networkProcess(). To my knowledge, there is no guarantee there is a network process.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::pageRemovedFromProcess):

2017-06-12  Jiewen Tan  <jiewen_tan@apple.com>

        [WebCrypto] Remove experimental feature flag of SubtleCrypto
        https://bugs.webkit.org/show_bug.cgi?id=173197
        <rdar://problem/32688148>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetSubtleCryptoEnabled): Deleted.
        (WKPreferencesGetSubtleCryptoEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-06-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Allow the injected bundle to add client data when writing an image to the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=173238
        <rdar://problem/31943370>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Send PasteboardImage.clientTypes and PasteboardImage.clientData over IPC.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::encodeClientTypesAndData):
        (IPC::decodeClientTypesAndData):

        Factor out common logic used to encode and decode client types and data into static helpers.

        (IPC::ArgumentCoder<PasteboardWebContent>::encode):
        (IPC::ArgumentCoder<PasteboardWebContent>::decode):
        (IPC::ArgumentCoder<PasteboardImage>::encode):
        (IPC::ArgumentCoder<PasteboardImage>::decode):

2017-06-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Introduce hooks to override targeted drag previews when lifting and cancelling
        https://bugs.webkit.org/show_bug.cgi?id=173240
        <rdar://problem/31943370>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Adds two new delegate hooks: _webView:previewForLiftingItem:session: and
        _webView:previewForCancellingItem:withDefault:.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

2017-06-12  Chris Dumez  <cdumez@apple.com>

        Regression(r217867): Legacy SessionHistoryEntryData format should not change
        https://bugs.webkit.org/show_bug.cgi?id=173267
        <rdar://problem/32701257>

        Reviewed by Simon Fraser.

        Revert changes to Legacy SessionHistoryEntryData format that were made in r217867,
        as this apparently breaks compatiblity.

        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFrameStateNode):
        (WebKit::decodeBackForwardTreeNode):

2017-06-12  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Alow iokit-get-properties for additional media features
        https://bugs.webkit.org/show_bug.cgi?id=173082
        <rdar://problem/32597547>

        Reviewed by Alex Christensen.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add API::IconDatabaseClient
        https://bugs.webkit.org/show_bug.cgi?id=173145

        Reviewed by Alex Christensen.

        It will be used by GTK+ port instead of the C API.

        * UIProcess/API/APIIconDatabaseClient.h:
        (API::IconDatabaseClient::~IconDatabaseClient):
        (API::IconDatabaseClient::didChangeIconForPageURL):
        (API::IconDatabaseClient::didRemoveAllIcons):
        (API::IconDatabaseClient::iconDataReadyForPageURL):
        * UIProcess/API/C/WKIconDatabase.cpp:
        (WKIconDatabaseSetIconDatabaseClient):
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::WebIconDatabase):
        (WebKit::WebIconDatabase::setClient):
        (WebKit::WebIconDatabase::didChangeIconForPageURL):
        (WebKit::WebIconDatabase::didRemoveAllIcons):
        (WebKit::WebIconDatabase::notifyIconDataReadyForPageURL):
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebIconDatabaseClient.cpp:
        (WebKit::WebIconDatabaseClient::WebIconDatabaseClient):
        (WebKit::WebIconDatabaseClient::didChangeIconForPageURL):
        (WebKit::WebIconDatabaseClient::didRemoveAllIcons):
        (WebKit::WebIconDatabaseClient::iconDataReadyForPageURL):
        * UIProcess/WebIconDatabaseClient.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Stop dismissing menus attached to the web view for every injected event
        https://bugs.webkit.org/show_bug.cgi?id=172708

        Reviewed by Alex Christensen.

        To actually simulate a right-click event we should also send the button release after the press, and let the page
        handle the events in addition to sending the event to the context menu controller, like we do with normal
        events. So, this is mostly the same as a real right-click event but without actually showing the menu.

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

2017-06-12  Daewoong Jang  <daewoong.jang@navercorp.com>

        [CoordinatedGraphics] Behavior change of DrawingAreaImpl after r217779
        https://bugs.webkit.org/show_bug.cgi?id=173153

        Reviewed by Carlos Garcia Campos.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Prefer to use private WebKitWebView API over WebKitWebViewBase
        https://bugs.webkit.org/show_bug.cgi?id=173254

        Reviewed by Žan Doberšek.

        WebKitWebViewBase is specific to the GTK+ API, but WebKitWebView should be present in any glib-based API. Add
        webkitWebViewCreatePage() and webkitWebViewGetPage() and use them when possible instead of the WebKitWebViewBase
        ones.

        * UIProcess/API/gtk/WebKitAutomationSession.cpp:
        * UIProcess/API/gtk/WebKitContextMenuClient.cpp:
        (attachContextMenuClientToView):
        * UIProcess/API/gtk/WebKitFindController.cpp:
        (getPage):
        (webkitFindControllerDispose):
        (webkitFindControllerConstructed):
        (webKitFindControllerPerform):
        (webkit_find_controller_search_finish):
        * UIProcess/API/gtk/WebKitFormClient.cpp:
        (attachFormClientToView):
        * UIProcess/API/gtk/WebKitLoaderClient.cpp:
        (attachLoaderClientToView):
        * UIProcess/API/gtk/WebKitPolicyClient.cpp:
        (attachPolicyClientToView):
        * UIProcess/API/gtk/WebKitPrintOperation.cpp:
        (drawPagesForPrintingCompleted):
        (webkitPrintOperationPrintPagesForFrame):
        (webkit_print_operation_run_dialog):
        (webkit_print_operation_print):
        * UIProcess/API/gtk/WebKitUIClient.cpp:
        (attachUIClientToView):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextCreatePageForWebView):
        (webkitWebContextWebViewDestroyed):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewCreatePage):
        (webkitWebViewGetPage):
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] getPage() in WebKitWebView should return a reference instead of a pointer
        https://bugs.webkit.org/show_bug.cgi?id=173251

        Reviewed by Žan Doberšek.

        The WebPageProxy is created on WebKitWebView construction, so getPage() can only return nullptr if it's called
        during construction. And that can only happen when construct properties are set. It's better to check that the
        view has been constructed only in these particular cases and make getPage() return a reference.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewCreateJavaScriptDialog):
        (allowModalDialogsChanged): Settings signals are only connected after the page has been created, so we don't
        need to check page is available here.
        (zoomTextOnlyChanged):
        (userAgentChanged):
        (webkitWebViewIsConstructed): Helper method to check if the view has been constructed.
        (webkitWebViewUpdateSettings): Return early if view hasn't been constructed.
        (webkitWebViewDisconnectSettingsSignalHandlers): Ditto.
        (webkitWebViewConstructed):
        (webkitWebViewDispose):
        (webkitWebViewCreateNewPage):
        (webkitWebViewSelectionDidChange):
        (webkit_web_view_try_close):
        (webkit_web_view_load_uri):
        (webkit_web_view_load_html):
        (webkit_web_view_load_alternate_html):
        (webkit_web_view_load_plain_text):
        (webkit_web_view_load_bytes):
        (webkit_web_view_load_request):
        (webkit_web_view_get_page_id):
        (webkit_web_view_reload):
        (webkit_web_view_reload_bypass_cache):
        (webkit_web_view_stop_loading):
        (webkit_web_view_is_playing_audio):
        (webkit_web_view_go_back):
        (webkit_web_view_can_go_back):
        (webkit_web_view_go_forward):
        (webkit_web_view_can_go_forward):
        (webkit_web_view_get_custom_charset):
        (webkit_web_view_set_custom_charset):
        (webkit_web_view_get_estimated_load_progress):
        (webkit_web_view_go_to_back_forward_list_item):
        (webkit_web_view_set_zoom_level):
        (webkit_web_view_get_zoom_level):
        (webkit_web_view_can_execute_editing_command):
        (webkit_web_view_execute_editing_command):
        (webkit_web_view_execute_editing_command_with_argument):
        (webkit_web_view_run_javascript):
        (resourcesStreamReadCallback):
        (webkit_web_view_get_inspector):
        (webkit_web_view_can_show_mime_type):
        (webkit_web_view_save):
        (webkit_web_view_save_to_file):
        (webkit_web_view_download_uri):
        (webkit_web_view_get_tls_info):
        (webkit_web_view_get_snapshot):
        (webkit_web_view_set_background_color):
        (webkit_web_view_get_background_color):
        (webkit_web_view_is_editable):
        (webkit_web_view_set_editable):
        (webkit_web_view_get_editor_state):
        (webkit_web_view_get_session_state):
        (webkit_web_view_restore_session_state):

2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move WebKit GType macros to WTF
        https://bugs.webkit.org/show_bug.cgi?id=173249

        Reviewed by Žan Doberšek.

        Moving to a common place where they could be shared by all ports using a glib-based API.

        * UIProcess/API/gtk/WebKitPrivate.h:

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

        [GTK] Remove WKInspectorClientGtk
        https://bugs.webkit.org/show_bug.cgi?id=173142

        Reviewed by Michael Catanzaro.

        It's only used internally in GTk+ API, we can simplify it by using a C++ client instead.

        * PlatformGTK.cmake:
        * UIProcess/API/C/gtk/WKInspectorClientGtk.cpp: Removed.
        * UIProcess/API/C/gtk/WKInspectorClientGtk.h: Removed.
        * UIProcess/API/gtk/WebKitPrivate.h:
        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        (_WebKitWebInspectorPrivate::~_WebKitWebInspectorPrivate):
        (webkitWebInspectorCreate):
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/gtk/WebInspectorClientGtk.cpp: Removed.
        * UIProcess/gtk/WebInspectorProxyClient.h: Renamed from Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h.
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::setClient):
        (WebKit::WebInspectorProxy::createInspectorWindow):
        (WebKit::WebInspectorProxy::platformDidClose):
        (WebKit::WebInspectorProxy::platformBringToFront):
        (WebKit::WebInspectorProxy::platformInspectedURLChanged):
        (WebKit::WebInspectorProxy::platformAttach):
        (WebKit::WebInspectorProxy::platformDetach):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
        (WebKit::WebInspectorProxy::platformAttachAvailabilityChanged):

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

        REGRESSION (r217870): Null deref under PageOverlayController::uninstallPageOverlay using find in page
        https://bugs.webkit.org/show_bug.cgi?id=173196
        <rdar://problem/32686871>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):
        The reason this caused a crash instead of just a missing indicator
        is that FindControllerIOS would early return after uninstalling
        the old overlay, before installing a new one, and leave m_isShowingFindIndicator
        set to true. Instead, reset it (and m_findIndicatorOverlay, which
        we would never re-use but might as well be freed immediately).

        This likely already crashed in other less reproducible cases where a
        TextIndicator was not created for a find match, so clean it up.

2017-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove WKFullScreenClientGtk
        https://bugs.webkit.org/show_bug.cgi?id=173140

        Reviewed by Michael Catanzaro.

        It's only used internally in the GTK+ API. Implementation is a lot simpler without using it, we can simply use
        either WebKitWebView or WebKitWebViewBase from PageClient directly.

        * PlatformGTK.cmake:
        * UIProcess/API/C/gtk/WKFullScreenClientGtk.cpp: Removed.
        * UIProcess/API/C/gtk/WKFullScreenClientGtk.h: Removed.
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        * UIProcess/API/gtk/WebKitFullscreenClient.cpp: Removed.
        * UIProcess/API/gtk/WebKitFullscreenClient.h: Removed.
        * UIProcess/API/gtk/WebKitPrivate.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        (webkitWebViewEnterFullScreen):
        (webkitWebViewExitFullScreen):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseEnterFullScreen):
        (webkitWebViewBaseExitFullScreen):
        (webkitWebViewBaseIsFullScreen):
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
        * UIProcess/gtk/WebFullScreenClientGtk.cpp: Removed.
        * UIProcess/gtk/WebFullScreenClientGtk.h: Removed.

2017-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Handle page download request in WebKitWebView directly
        https://bugs.webkit.org/show_bug.cgi?id=173137

        Reviewed by Žan Doberšek.

        We don't need to pass through WebKitWebViewBase, since the base doesn't have an implementation.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::handleDownloadRequest):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        (webkitWebViewHandleDownloadRequest):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseSetDownloadRequestHandler): Deleted.
        (webkitWebViewBaseHandleDownloadRequest): Deleted.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/WebKitWebViewPrivate.h:

2017-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use a lambda in webkit_cookie_manager_get_accept_policy instead of toGenericCallbackFunction
        https://bugs.webkit.org/show_bug.cgi?id=173134

        Reviewed by Žan Doberšek.

        It's simpler and easier to read.

        * UIProcess/API/gtk/WebKitCookieManager.cpp:
        (webkit_cookie_manager_get_accept_policy):
        (webkitCookieManagerGetAcceptPolicyCallback): Deleted.

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * Configurations/DebugRelease.xcconfig:

2017-06-09  Ryosuke Niwa  <rniwa@webkit.org>

        Crash inside WebKit::PluginView::getAuthenticationInfo
        https://bugs.webkit.org/show_bug.cgi?id=173083
        <rdar://problem/32513144>

        Address Darin's review comment.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::getAuthenticationInfo):

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

        Use WTF::Function instead of std::function in NetworkProcess code
        https://bugs.webkit.org/show_bug.cgi?id=173182

        Reviewed by Alex Christensen.

        Use WTF::Function instead of std::function in NetworkProcess code to avoid
        unnecessary copying.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/NetworkCacheIOChannel.h:
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::write):
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::readSyncInThread):
        (WebKit::NetworkCache::IOChannel::write):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
        * NetworkProcess/cache/NetworkCacheStatistics.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::clearNSURLCache):
        (WebKit::NetworkProcess::clearDiskCache):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::clearDiskCache):

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

        REGRESSION (r213584): WeChat app can not switch to next text field
        https://bugs.webkit.org/show_bug.cgi?id=173183
        <rdar://problem/32323478>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        (WebKit::InputViewUpdateDeferrer::~InputViewUpdateDeferrer):
        It turns out that _endIgnoringReloadInputViews doesn't actually perform
        the update if there was one ignored. It does, however, return whether
        there was a change ignored, and we can force an update.

        This remains untestable without sizable additional API test infrastructure
        for the same reasons as the original patch.

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

        Make sure we protect |this| in lambdas in WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver()
        https://bugs.webkit.org/show_bug.cgi?id=173174
        <rdar://problem/32598919>

        Reviewed by Darin Adler.

        Follow-up fix to r218006, which caused a crash on the bots. We cannot WTFMove() protectedThis
        here because the callback gets called several times.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):

2017-06-09  Jer Noble  <jer.noble@apple.com>

        Crash in -[WKWebView _initializeWithConfiguration:]
        https://bugs.webkit.org/show_bug.cgi?id=173126
        <rdar://problem/32664993>

        Reviewed by Darin Adler.

        Follow up to previous fix; when setting NSString properties, store a copy of
        the string rather than the NSString itself.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _overrideContentSecurityPolicy]):
        (-[WKWebViewConfiguration _setOverrideContentSecurityPolicy:]):
        (-[WKWebViewConfiguration _setMediaContentTypesRequiringHardwareSupport:]):

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

        Use WTF::Function instead of std::function in StorageManager
        https://bugs.webkit.org/show_bug.cgi?id=173177

        Reviewed by Brady Eidson.

        Use WTF::Function instead of std::function in StorageManager. This eliminates some
        potential implicit copying of captured variables, which is important here because
        we pass those lambdas to other threads.

        * UIProcess/Storage/StorageManager.cpp:
        (WebKit::StorageManager::getSessionStorageOrigins):
        (WebKit::StorageManager::deleteSessionStorageOrigins):
        (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        * UIProcess/Storage/StorageManager.h:

2017-06-09  Daniel Bates  <dabates@apple.com>

        CSP: Apply img-src directive to favicon loads
        https://bugs.webkit.org/show_bug.cgi?id=172733
        <rdar://problem/32082654>

        Reviewed by Brady Eidson.

        Return 0 seconds for the maximum buffering time for favicons (no change in behavior).

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):

2017-06-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Add a hook to perform two-step drops in editable content
        https://bugs.webkit.org/show_bug.cgi?id=172992
        <rdar://problem/32590174>

        Reviewed by Tim Horton.

        Add plumbing to support an injected bundle hook for overriding two-step drops. See WebCore ChangeLog.

        * WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
        (API::InjectedBundle::EditorClient::performTwoStepDrop):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::performTwoStepDrop):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::performTwoStepDrop):
        * WebProcess/WebCoreSupport/WebEditorClient.h:

2017-06-09  Brent Fulgham  <bfulgham@apple.com>

        Use Function rather than std::function for thread safety in WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=173172

        Reviewed by Chris Dumez.
        <rdar://problem/32679311>

        Remove a few more instances of std::function in the WebsiteDataStore, and WTFMove completion handler to
        avoid unnecessary copies.

        * Shared/WebsiteData/WebsiteDataType.h: Remove redundant WebsiteDataType from name.
        * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
        (WebKit::toWebsiteDataType): Update for revised name.
        (WebKit::toWKWebsiteDataTypes): Ditto.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): ASSERT that
        this function, as well as its completion handler, are getting called from the main thread.
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData): Ditto.
        (WebKit::WebProcessProxy::fetchWebsiteData): Move the completionHandler.
        (WebKit::WebProcessProxy::deleteWebsiteData): Ditto.
        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): Ditto.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchData): Switch to Function, and move completion handler.
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains): Ditto.
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData): Ditto.
        (WebKit::WebsiteDataStore::removeData): Ditto.
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains): Ditto.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Make sure we protect |this| in lambdas in WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver()
        https://bugs.webkit.org/show_bug.cgi?id=173174
        <rdar://problem/32598919>

        Reviewed by Darin Adler.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):

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

        Avoid some ref counting churn in WebResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=173168

        Reviewed by Brent Fulgham.

        Move the protectedThis around instead of ref'ing it every time we capture it
        in a lambda. Also add a missing protectedThis in WebResourceLoadStatisticsStore::removeDataRecords()
        which likely fixes crashes.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):

2017-06-09  Sam Weinig  <sam@webkit.org>

        Add SubresourceIntegrity as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=173164

        Reviewed by Darin Adler.

        * Shared/WebPreferencesDefinitions.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        Add SubresourceIntegrity to the list of experimental features. Also, sort the experimental features
        as requested by the comment above it.

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

        Make sure |this| is protected in lambda capture in WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
        https://bugs.webkit.org/show_bug.cgi?id=173163

        Reviewed by Brent Fulgham.

        Make sure |this| is protected in lambda capture in WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
        or it may end up getting destroyed before the lambda executing and crash when calling m_statisticsQueue->dispatch().

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):

2017-06-09  Daewoong Jang  <daewoong.jang@navercorp.com>

        [CoordinatedGraphics] Remove unneeded interfaces in PageClient
        https://bugs.webkit.org/show_bug.cgi?id=173149

        Reviewed by Michael Catanzaro.

        * UIProcess/PageClient.h:

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

        Use WTF::Function instead of std::function in SpeculativeLoadManager::ExpiringEntry
        https://bugs.webkit.org/show_bug.cgi?id=173125

        Reviewed by Antti Koivisto.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::SpeculativeLoadManager::ExpiringEntry::ExpiringEntry):
        (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry):

2017-06-09  Daewoong Jang  <daewoong.jang@navercorp.com>

        Use WTF::getCurrentProcessID() instead of getpid()
        https://bugs.webkit.org/show_bug.cgi?id=173130

        Reviewed by Tim Horton.

        * UIProcess/API/APIProcessPoolConfiguration.h:

2017-06-09  Claudio Saavedra  <csaavedra@igalia.com>

        struct does not accept initializer-form if member has initializers in GCC 4.9

        Unreviewed speculative build fix.

        Remove the default initializers for DeniedRequest struct,
        since it's only initialized in one place, to keep gcc 4.9
        happy.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2017-06-09  Adrien Plazas  <aplazas@igalia.com>

        [GTK] Add kinetic scrolling
        https://bugs.webkit.org/show_bug.cgi?id=155750

        Reviewed by Carlos Garcia Campos.

        Patch by Adrien Plazas and Yusuke Suzuki.

        Add the notion of phase and momentum phase to WebWheelEvent.

        Make WebWheelEvent manage the 'is_stop' attribute of GdkEventScroll to create the corresponding WebWheelEvent
        with the correct phases and deltas.

        Make GestureController manage swipes to create the corresponding WebWheelEvent with the correct phases and
        deltas.

        * Shared/NativeWebWheelEvent.h:
        * Shared/WebEvent.h:
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
        * Shared/WebWheelEvent.cpp:
        (WebKit::WebWheelEvent::WebWheelEvent):
        (WebKit::WebWheelEvent::encode):
        (WebKit::WebWheelEvent::decode):
        * Shared/gtk/NativeWebWheelEventGtk.cpp:
        (WebKit::NativeWebWheelEvent::NativeWebWheelEvent):
        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::WebEventFactory::createWebWheelEvent):
        * Shared/gtk/WebEventFactory.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleWheelEvent):
        (WebKit::WebPageProxy::shouldProcessWheelEventNow):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/GestureController.cpp:
        (WebKit::GestureController::GestureController):
        (WebKit::GestureController::handleEvent):
        (WebKit::GestureController::isProcessingGestures):
        (WebKit::createScrollEvent):
        (WebKit::GestureController::DragGesture::startDrag):
        (WebKit::GestureController::DragGesture::handleDrag):
        (WebKit::GestureController::DragGesture::begin):
        (WebKit::GestureController::DragGesture::end):
        (WebKit::GestureController::SwipeGesture::startMomentumScroll):
        (WebKit::GestureController::SwipeGesture::swipe):
        (WebKit::GestureController::SwipeGesture::SwipeGesture):
        * UIProcess/gtk/GestureController.h:

2017-06-09  Jer Noble  <jer.noble@apple.com>

        Crash in -[WKWebView _initializeWithConfiguration:]
        https://bugs.webkit.org/show_bug.cgi?id=173126

        Reviewed by Antti Koivisto.

        Crash occurs when passing an autoreleased NSString into _setMediaContentTypesRequiringHardwareSupport.
        The ivar should be a RetainPtr rather than a bare NSString *.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _mediaContentTypesRequiringHardwareSupport]):

2017-06-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::FormClient instead of the C API in WebKitFormClient
        https://bugs.webkit.org/show_bug.cgi?id=173098

        Reviewed by Žan Doberšek.

        * UIProcess/API/gtk/WebKitFormClient.cpp:
        (attachFormClientToView):
        (willSubmitForm): Deleted.
        * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
        (webkitFormSubmissionRequestCreate):
        (webkit_form_submission_request_get_text_fields):
        * UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkitWebPageCreate):

2017-06-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use API::Findclient instead of the C API in WebKitFindController
        https://bugs.webkit.org/show_bug.cgi?id=173095

        Reviewed by Žan Doberšek.

        * UIProcess/API/gtk/WebKitFindController.cpp:
        (getPage):
        (webkitFindControllerDispose):
        (webkitFindControllerConstructed):
        (webkit_find_controller_class_init):

2017-06-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Get rid of custom marshallers of signals
        https://bugs.webkit.org/show_bug.cgi?id=173094

        Reviewed by Žan Doberšek.

        Use g_cclosure_marshal_generic instead.

        * PlatformGTK.cmake:
        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
        * UIProcess/API/gtk/WebKitDownload.cpp:
        (webkit_download_class_init):
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        (webkit_favicon_database_class_init):
        * UIProcess/API/gtk/WebKitWebInspector.cpp:
        (webkit_web_inspector_class_init):
        * UIProcess/API/gtk/WebKitWebResource.cpp:
        (webkit_web_resource_class_init):
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkit_web_view_class_init):
        * UIProcess/API/gtk/webkit2marshal.list: Removed.
        * WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
        (webkit_web_page_class_init):

2017-06-08  Simon Fraser  <simon.fraser@apple.com>

        Crash under -[WKWebView _updateVisibleContentRects]
        https://bugs.webkit.org/show_bug.cgi?id=173123
        rdar://problem/32650112

        Reviewed by Tim Horton.

        Make sure the WKWebView is valid in places where we dispatch_async or use
        a pre-commit handler.

        Speculative fix for a rare crasher.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _isValid]):
        (-[WKWebView _addUpdateVisibleContentRectPreCommitHandler]):
        (-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):

2017-06-07  Simon Fraser  <simon.fraser@apple.com>

        Use initializers in WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=173073

        Reviewed by Tim Horton.

        Initialize the member variables the modern way.

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

2017-06-08  Jeremy Jones  <jeremyj@apple.com>

        Implement additional AVPlayerController interfaces for minTime and maxTime.
        https://bugs.webkit.org/show_bug.cgi?id=172396
        rdar://problem/30737452

        Reviewed by Jer Noble.

        Add support for new HLS UI in AVKit.

        Plumb seekableTimeRangesLastModifiedTime and liveUpdateInterval across process boundaries.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setSeekableRanges):
        (WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector):
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::seekableRangesChanged):
        (WebKit::WebPlaybackSessionManager::seekableRangesChanged):

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

        Use WTF::Function more in SpeculativeLoadManager
        https://bugs.webkit.org/show_bug.cgi?id=173109

        Reviewed by Antti Koivisto.

        Use WTF::Function more in SpeculativeLoadManager.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::create):
        (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::PendingFrameLoad):
        (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad):
        (WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:

2017-06-08  Youenn Fablet  <youenn@apple.com>

        getUserMedia should not be prompted again if user denied access
        https://bugs.webkit.org/show_bug.cgi?id=173104

        Reviewed by Geoff Garen.

        Store denied requests to be able to replay them.
        If mic is denied, user might be prompted for camera, not for mic and camera.
        Same principle applies to the case of denied camera.
        Clearing the stored denied requests when reloading/navigating away.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::isRequestDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2017-06-08  Jer Noble  <jer.noble@apple.com>

        Clients of the WK2 C-API don't have their mediaContentTypesRequiringHardwareSupport setting initialized correctly.
        https://bugs.webkit.org/show_bug.cgi?id=173091

        Reviewed by Eric Carlson.

        Rather than add yet a third way of setting this preference, centralize everything by moving the
        definition of the default value into WebCore.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-06-08  Jer Noble  <jer.noble@apple.com>

        [WK2] mediaContentTypesRequiringHardwareSupport setting not being propogated
        https://bugs.webkit.org/show_bug.cgi?id=173090

        Reviewed by Eric Carlson.

        Passing a NSString* into the WebPreferencesStore::Value constructor would rather cast the NSString*
        into a bool than a const String&. So explicitly cast the NSString* into a String before passing.

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

2017-06-08  Youenn Fablet  <youenn@apple.com>

        getUserMedia request should not be allowed for background tabs unless the tab is already capturing
        https://bugs.webkit.org/show_bug.cgi?id=172989

        Reviewed by Eric Carlson.

        Covered by updated test and manual testing.

        In case a getUserMedia can be granted, we check for visbility of the view.
        If the view is visible, the getUserMedia request is allowed and promise is resolved.
        Otherwise we store the pregranted request and will allow it when the view gets visible.
        Pregranted requests will be cleared if the document of the view is changed.

        Pregranted requests will not be used when capture page is muted.
        In that case, a prompt will appear.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::removeGrantedAccess):
        (WebKit::allowRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processPregrantedRequests):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::viewIsBecomingVisible):
        * UIProcess/WebPageProxy.h:

2017-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Enable resource usage
        https://bugs.webkit.org/show_bug.cgi?id=173054

        Reviewed by Žan Doberšek.

        Enable/disable the resources overlay with CTRL + Shift + G.

        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_compositingManagerProxy):

2017-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Remove legacy INSPECTOR_SERVER implementation
        https://bugs.webkit.org/show_bug.cgi?id=172966

        Reviewed by Žan Doberšek.

        * CMakeLists.txt:
        * Platform/Logging.h:
        * PlatformWPE.cmake:
        * UIProcess/InspectorServer/HTTPRequest.cpp: Removed.
        * UIProcess/InspectorServer/HTTPRequest.h: Removed.
        * UIProcess/InspectorServer/WebInspectorServer.cpp: Removed.
        * UIProcess/InspectorServer/WebInspectorServer.h: Removed.
        * UIProcess/InspectorServer/WebSocketServer.cpp: Removed.
        * UIProcess/InspectorServer/WebSocketServer.h: Removed.
        * UIProcess/InspectorServer/WebSocketServerClient.h: Removed.
        * UIProcess/InspectorServer/WebSocketServerConnection.cpp: Removed.
        * UIProcess/InspectorServer/WebSocketServerConnection.h: Removed.
        * UIProcess/InspectorServer/front-end/inspectorPageIndex.html: Removed.
        * UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp: Removed.
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::invalidate):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::preferencesDidChange):
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::sendMessageToFrontend):
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:

2017-06-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] additionalReadAccessAllowedURLs doesn’t preserve non-Latin-1 paths
        https://bugs.webkit.org/show_bug.cgi?id=173086

        Reviewed by Andy Estes.

        We were incorrectly passing the fileSystemRepresentation of an NSURL into the WTF::String
        constructor that expects a Latin-1 string. However, in general, fileSystemRepresentation is
        not Latin-1.

        * UIProcess/API/APIProcessPoolConfiguration.h: Changed m_additionalReadAccessAllowedPaths
          from a Vector<WTF::String> into a Vector<WTF::CString>.

        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration additionalReadAccessAllowedURLs]): Updated for the change.
        (-[_WKProcessPoolConfiguration setAdditionalReadAccessAllowedURLs:]): Ditto.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::resolvePathsForSandboxExtensions): Ditto.

2017-06-07  Ryosuke Niwa  <rniwa@webkit.org>

        Crash inside WebKit::PluginView::getAuthenticationInfo
        https://bugs.webkit.org/show_bug.cgi?id=173083

        Reviewed by Chris Dumez.

        Added a null pointer check. The content document may have went away by the time we get there from IPC.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::getAuthenticationInfo):

2017-06-07  Youenn Fablet  <youenn@apple.com>

        getUserMedia is prompting too often
        https://bugs.webkit.org/show_bug.cgi?id=172859
        <rdar://problem/32589950>

        Reviewed by Eric Carlson.

        Introduce a storage of granted requests to skip prompting when needed.
        This is a partial implementation as granted requests should not happen for background tabs.
        This will be covered in a follow-up patch.
        Covered by manual tests.

        A granted request keeps its mainFrameID.
        Whenever the document of the main frame changes, the granted requests for that mainFrameID will be removed.
        This handles the case of navigating, reloading... while still supporting the case of granting getUserMedia after in page navigation.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::removeGrantedAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        (WebKit::UserMediaPermissionRequestProxy::mainFrameID):
        (WebKit::UserMediaPermissionRequestProxy::frameID):
        (WebKit::UserMediaPermissionRequestProxy::userMediaDocumentSecurityOrigin):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeMainDocument):
        (WebKit::WebPageProxy::backForwardGoToItem):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidChangeMainDocument):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-06-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] additionalReadAccessAllowedURLs should be consumed before loading the injected bundle
        https://bugs.webkit.org/show_bug.cgi?id=173078

        Reviewed by Anders Carlsson.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess): Changed the order.

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

        Support removal of authentication data through the Website data store API.
        https://bugs.webkit.org/show_bug.cgi?id=171217
        <rdar://problem/29522573>

        Reviewed by Brady Eidson.

        Add support to remove and fetch credential data through the Website data store API.
        Credential data is removed and fetched from both the network process and web process.
        Authentication data stored in the keychain will not be cleared.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::encode):
        (WebKit::WebsiteData::decode):
        * Shared/WebsiteData/WebsiteData.h:
        * Shared/WebsiteData/WebsiteDataType.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
        (dataTypesToString):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
        (WebKit::toWebsiteDataType):
        (WebKit::toWKWebsiteDataTypes):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore allWebsiteDataTypes]):
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::addOriginWithCredential):
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchData):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::fetchWebsiteData):
        (WebKit::WebProcess::deleteWebsiteData):

2017-06-06  Dan Bernstein  <mitz@apple.com>

        Fixed building with the macOS 10.13 Apple Internal SDK when targeting macOS 10.12.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):

2017-06-06  Brent Fulgham  <bfulgham@apple.com>

        [WK2][Cocoa] Allow network process to bind addresses without webrtc extension
        https://bugs.webkit.org/show_bug.cgi?id=173032
        <rdar://problem/32597426>

        Reviewed by Youenn Fablet.

        Remove the unnecessary WebRTC sandbox extension handle and conditional sandbox rules, since we've
        decided that all WebKit clients should be able to use the WebRTC protocol.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode): Remove unused sandbox extension from serialization.
        (WebKit::NetworkProcessCreationParameters::decode): Ditto.
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): We no longer send the sandbox extension,
        so don't attempt to consume it.
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Remove check for 'com.apple.webkit.webrtc'
        extension. Make rules conditional on building with WEB_RTC feature enabled.
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Remove check for 'com.apple.webkit.webrtc'
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess): Do not create unnecessary sandbox extension
        handle.

2017-06-06  Tim Horton  <timothy_horton@apple.com>

        Crash trying to drag the entire text of a long book out of Mail compose view
        https://bugs.webkit.org/show_bug.cgi?id=173042
        <rdar://problem/32382059>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didConcludeEditDataInteraction):
        Adapt to the new name.

2017-06-06  Chris Dumez  <cdumez@apple.com>

        RELEASE_ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values)) hit in convertEnumerationToJS<WebCore::History::ScrollRestoration>()
        https://bugs.webkit.org/show_bug.cgi?id=173033
        <rdar://problem/32591099>

        Reviewed by Simon Fraser.

        * Shared/SessionState.h:
        Make sure FrameState::shouldRestoreScrollPosition and other struct members are always
        intialized.

        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFrameStateNode):
        (WebKit::decodeBackForwardTreeNode):
        Make sure FrameState::shouldRestoreScrollPosition is properly encoded / decoded.

2017-06-06  Andy Estes  <aestes@apple.com>

        REGRESSION (r199558): WKWebView upload file which name contains Chinese character results in garbled code
        https://bugs.webkit.org/show_bug.cgi?id=172849
        <rdar://problem/32567454>

        Reviewed by Darin Adler.

        This is the Mac equivalent of what was fixed in r208295. This time we use -[NSURL path] to
        construct a WTF::String instead of calling String::fromUTF8() on -[NSURL fileSystemRepresentation].

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::runOpenPanel):

2017-06-06  Yoav Weiss  <yoav@yoav.ws>

        [preload] Conditional support for media preloading and align media `as` values.
        https://bugs.webkit.org/show_bug.cgi?id=172501

        Reviewed by Dean Jackson.

        Add media preloading preference and hook it up to runtime enabled features.

        * Shared/WebPreferencesDefinitions.h: Added a macro defining media preloading preference.
        * UIProcess/API/C/WKPreferences.cpp:
        (WebKit2::WKPreferences::WKPreferencesSetMediaPreloadingEnabled):
        (WebKit2::WKPreferences::WKPreferencesGetMediaPreloadingEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp: Set runtime enabled feature based on preference.

2017-06-06  Don Olmstead  <don.olmstead@am.sony.com>

        [WebCore] Enable REQUEST_ANIMATION_FRAME_TIMER for all ports
        https://bugs.webkit.org/show_bug.cgi?id=172780

        Reviewed by Alex Christensen.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::scheduleAnimation): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::syncDisplayState):

2017-06-06  Beth Dakin  <bdakin@apple.com>

        Netflix seeking quirk should also apply to Now Playing, and should always use the 
        livestream UI
        https://bugs.webkit.org/show_bug.cgi?id=173030
        -and corresponding-
        rdar://problem/32228660

        Reviewed by Darin Adler.

        See WebCore ChangeLog for more details. We can roll out allowsTouchBarScrubbing() 
        and rely on supportsSeeking().

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setAllowsTouchBarScrubbing): Deleted.
        (WebKit::WebPlaybackSessionManagerProxy::setAllowsTouchBarScrubbing): Deleted.
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::allowsTouchBarScrubbingChanged): Deleted.
        (WebKit::WebPlaybackSessionManager::allowsTouchBarScrubbingChanged): Deleted.

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

        [Cocoa] Set defaults for mediaContentTypesRequiringHardwareSupport setting
        https://bugs.webkit.org/show_bug.cgi?id=173008

        Reviewed by Eric Carlson.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):

2017-06-06  Joseph Pecoraro  <pecoraro@apple.com>

        Move Resource Timing / User Timing from experimental features into main preferences
        https://bugs.webkit.org/show_bug.cgi?id=172950

        Reviewed by Darin Adler.

        * Shared/WebPreferencesDefinitions.h:
        Move Resource Timing and User Timing out of the Experimental Features section.

2017-06-06  Youenn Fablet  <youenn@apple.com>

        Add an option to disable getUserMedia prompt in case of mock capture sources
        https://bugs.webkit.org/show_bug.cgi?id=172981
        <rdar://problem/32580325>

        Reviewed by Eric Carlson.

        Adding mockCaptureDevicesPromptEnabled option.
        Allowing any getUserMedia request if mock is on and prompt is off.

        Renaming UserMediaProcessManager::willEnableMediaStreamInPage to muteCaptureMediaStreamsExceptIn.
        This eases reading the code.
        Making sure that a page for which a new getUserMedia MediaStream will be created is capture-unmuted.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn):
        (WebKit::UserMediaProcessManager::willCreateMediaStream):
        * UIProcess/UserMediaProcessManager.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setMuted):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::activateMediaStreamCaptureInPage):

2017-06-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Enable remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=172971

        Reviewed by Žan Doberšek.

        Initialize the remote inpector if needed.

        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::initializeRemoteInspectorServer):
        (WebKit::WebProcessPool::platformInitialize):

2017-06-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] Make remote inspector DBus protocol common to all glib based ports
        https://bugs.webkit.org/show_bug.cgi?id=172970

        Reviewed by Žan Doberšek.

        Use webkit instead of webkitgtk and reomve platform idfeds.

        * UIProcess/glib/RemoteInspectorClient.cpp:

2017-06-06  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Don't disable Web security preference by default
        https://bugs.webkit.org/show_bug.cgi?id=172964

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::View): Don't disable Web security by default.

2017-06-05  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMessage + 128
        https://bugs.webkit.org/show_bug.cgi?id=172943
        <rdar://problem/31288058>

        Reviewed by Alexey Proskuryakov.

        In Connection::sendMessage(), make sure we only ever transform asynchronous messages into synchronous
        ones if sendMessage() is called on the main thread. This is necessary because we no longer support
        sending synchronous messages from a background thread since r205125.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendMessage):
        (IPC::Connection::sendSyncMessage):

2017-06-05  Joseph Pecoraro  <pecoraro@apple.com>

        Revert r217405, this headerpad increase is no longer needed.

        Rubber-stamped by Dan Bernstein.

        * Configurations/BaseXPCService.xcconfig:

2017-06-05  Dan Bernstein  <mitz@apple.com>

        Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::mediaPlaybackControlsView):

2017-06-05  Jer Noble  <jer.noble@apple.com>

        Allow clients to specify a list of codecs which should require hardware decode support.
        https://bugs.webkit.org/show_bug.cgi?id=172787

        Reviewed by Alex Christensen.

        Add a WKWebPageConfiguration (and associated WebPreferences and WKPreferencesRef) properties
        allowing clients to require specified codecs have hardware decode support. Also open up the
        sandbox on Cocoa ports to services required to check for hardware decode availability.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetMediaCodecsRequiringHardwareSupport):
        (WKPreferencesCopyMediaCodecsRequiringHardwareSupport):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _mediaCodecsRequiringHardwareSupport]):
        (-[WKWebViewConfiguration _setMediaCodecsRequiringHardwareSupport:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-06-05  Beth Dakin  <bdakin@apple.com>

        Modify Netflix controlsManager quirk to prevent only scrubbing
        https://bugs.webkit.org/show_bug.cgi?id=172881
        -and corresponding-
        rdar://problem/32228660

        Reviewed by Andy Estes.

        Plumbing for allowsTouchBarScrubbing. See WebCore ChangeLog for more details.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setAllowsTouchBarScrubbing):
        (WebKit::WebPlaybackSessionManagerProxy::setAllowsTouchBarScrubbing):
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::allowsTouchBarScrubbingChanged):
        (WebKit::WebPlaybackSessionManager::allowsTouchBarScrubbingChanged):

2017-06-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build with OpenGL disabled after r217779.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):

2017-06-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Use AcceleratedDrawingArea instead of its fork
        https://bugs.webkit.org/show_bug.cgi?id=172496

        Reviewed by Žan Doberšek.

        WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified
        for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing
        being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.

        * PlatformWPE.cmake:
        * Shared/DrawingAreaInfo.h: Remove DrawingAreaTypeWPE type.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Removed.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.h: Removed.
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy): Create an AcceleratedDrawingAreaProxy.
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Moved from DrawingAreaImpl since it actually
        belongs here.
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create): Create an AcceleratedDrawingArea for WPE port.
        * WebProcess/WebPage/DrawingAreaImpl.cpp: Remove mainFrameContentSizeChanged() that doesn't belong here.
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Removed.
        * WebProcess/WebPage/wpe/DrawingAreaWPE.h: Removed.

2017-06-03  Simon Fraser  <simon.fraser@apple.com>

        Sort the project file.

        * WebKit2.xcodeproj/project.pbxproj:

2017-06-02  Chris Dumez  <cdumez@apple.com>

        ResourceLoadStatistics are not using unique paths during test runs
        https://bugs.webkit.org/show_bug.cgi?id=172861
        <rdar://problem/32442251>

        Reviewed by Darin Adler.

        Add WKContextConfigurationSetResourceLoadStatisticsDirectory() C API to allow
        WKTR to use a custom directory.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationCopyResourceLoadStatisticsDirectory):
        (WKContextConfigurationSetResourceLoadStatisticsDirectory):
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):

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

        Prevent scheme handlers from handling all built-in URL schemes.
        <rdar://problem/32404790> and https://bugs.webkit.org/show_bug.cgi?id=172869

        Reviewed by Andy Estes.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (+[WKWebView handlesURLScheme:]): Check against WebCore's new master list of URL schemes.

2017-06-02  Simon Fraser  <simon.fraser@apple.com>

        All scroll peformance logging should happen in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=172874
        rdar://problem/24474830

        Reviewed by Tim Horton.

        Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
        so we have to log from the UI process.

        Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
        WebPageProxy, which prints them with the same format they had before. Some plumbing through
        PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
        through to something that can get to Page.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::logScrollingEvent):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp: Added.
        (WebKit::WebPerformanceLoggingClient::WebPerformanceLoggingClient):
        (WebKit::WebPerformanceLoggingClient::logScrollingEvent):
        * WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h: Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):

2017-06-02  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant + 255
        https://bugs.webkit.org/show_bug.cgi?id=172846
        <rdar://problem/31093005>

        Reviewed by Mark Lam.

        Follow-up to r217695 to deal with exceptions potentially thrown by
        NPRuntimeObjectMap::convertJSValueToNPVariant() as well.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::invoke):

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

        Add abilility to specify presentingApplicationPID for a WebProcessPool.
        https://bugs.webkit.org/show_bug.cgi?id=172839
        rdar://problem/32247170

        Reviewed by Tim Horton.

        Expose presentingApplicationPID through WebProcessPoolConfiguration.
        This allows rehosted WebViews to specify the hosting application.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration setPresentingApplicationPID:]):
        (-[_WKProcessPoolConfiguration presentingApplicationPID]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::createNewWebProcess):

2017-06-02  Frederic Wang  <fwang@igalia.com>

        [Mac] Use compositing for frames when ScrollingTreeIncludesFrames=true
        https://bugs.webkit.org/show_bug.cgi?id=172851

        Reviewed by Simon Fraser.

        When fast frame scrolling is supported on mac (bug 171667), scrollable frames will require
        special composited layer. This commit enables that on mac but only when
        ScrollingTreeIncludesFrames=true, so that the default behavior is unchanged.

        * WebProcess/WebCoreSupport/WebChromeClient.h: Make scrollable inner frame trigger
        compositing on Mac by default. This is ignored on mac when ScrollingTreeIncludesFrames=false.
        Rename ScrollableInnerFrameTrigger to ScrollableNonMainFrameTrigger.

2017-06-02  Zalan Bujtas  <zalan@apple.com>

        Allow clients to override viewport size for CSS viewport units.
        https://bugs.webkit.org/show_bug.cgi?id=172838
        <rdar://problem/32523441>

        Reviewed by Tim Horton.

        This enables auto-sizing clients to ensure that styles relative to the viewport are
        resolved to a set value (presumably the size of the container) as opposed to the preferred
        document size (which is set as the FrameView size).

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _viewportSizeForCSSViewportUnits]):
        (-[WKWebView _setViewportSizeForCSSViewportUnits:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::setViewportSizeForCSSViewportUnits):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewportSizeForCSSViewportUnits):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::setViewportSizeForCSSViewportUnits):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::viewportSizeForCSSViewportUnits):
        * WebProcess/WebPage/WebPage.messages.in:

2017-06-02  Simon Fraser  <simon.fraser@apple.com>

        Get <chrono> out of StdLibExtras.h
        https://bugs.webkit.org/show_bug.cgi?id=172744

        Reviewed by Zalan Bujtas.

        Only bring in <chrono> and namespace std::literals::chrono_literals when necessary.

        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::computeRecordWorth):
        * Shared/mac/RemoteLayerBackingStoreCollection.mm:
        * WebProcess/Cookies/WebCookieManager.h:

2017-06-02  Andy Estes  <aestes@apple.com>

        [Cocoa] Add a "supportedCountries" property to ApplePayPaymentRequest
        https://bugs.webkit.org/show_bug.cgi?id=172832
        <rdar://problem/30735544>

        Reviewed by Alex Christensen.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<PaymentRequest>::encode):
        (IPC::ArgumentCoder<PaymentRequest>::decode):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSSet):
        (WebKit::toPKPaymentRequest):

2017-06-02  Dan Bernstein  <mitz@apple.com>

        [Xcode] Header postprocessing should be based on the target OS version rather than the builder OS version
        https://bugs.webkit.org/show_bug.cgi?id=172860

        Reviewed by Anders Carlsson.

        * Configurations/WebKit.xcconfig: Use TARGET_MAC_OS_X_VERSION_MAJOR

2017-06-02  Gwang Yoon Hwang  <yoon@igalia.com>

        REGRESSION(r217214): [Coordinated Graphics] UpdateAtlas didn't released while resetting testrunner
        https://bugs.webkit.org/show_bug.cgi?id=172746

        Reviewed by Žan Doberšek.

        After clearing update atlases in CompositingCoordinator, we should
        release update atlases at the compositing thread, too.

        We cannot remove update atlases from the CoordinatedGraphicsScene
        without regard to update scheduling, since previously committed scene
        states can try to use already released update atlases.
        To prevent this timing problem, releasing update atlases should be done
        with a update scheduler.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::syncRemoteContent):
        (WebKit::CoordinatedGraphicsScene::appendUpdate):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        Use WTF::Function instead of std::function
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::releaseUpdateAtlases):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::ThreadedCompositor::flushPendingLayerChanges):
        Release UpdateAtlases at the end of compositing states update, too.
        (WebKit::CompositingCoordinator::clearUpdateAtlases):

2017-06-01  Andreas Kling  <akling@apple.com>

        [Mac] Remove backing store for layers that are outside the viewport
        https://bugs.webkit.org/show_bug.cgi?id=170082
        <rdar://problem/31245009>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:

2017-06-01  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant + 255
        https://bugs.webkit.org/show_bug.cgi?id=172846
        <rdar://problem/31093005>

        Reviewed by Andreas Kling.

        In NPJSObject::invoke(), return early if there was an exception when calling JSC::call().
        Using the value returned by JSC::call() when an exception occurred is unsafe.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::invoke):

2017-06-01  Jon Lee  <jonlee@apple.com>

        Rename an experimental feature item
        https://bugs.webkit.org/show_bug.cgi?id=172830

        Reviewed by Joseph Pecoraro.

        * Shared/WebPreferencesDefinitions.h:

2017-06-01  Andy Estes  <aestes@apple.com>

        REGRESSION (r217626): ENABLE_APPLE_PAY_SESSION_V3 was disabled by mistake
        https://bugs.webkit.org/show_bug.cgi?id=172828

        Reviewed by Beth Dakin.

        * Configurations/FeatureDefines.xcconfig:

2017-06-01  Chris Dumez  <cdumez@apple.com>

        [WK2] Update plugin process sandbox profile for flash plugin on HBONow
        https://bugs.webkit.org/show_bug.cgi?id=172820
        <rdar://problem/32513297>

        Reviewed by Brent Fulgham.

        Relax the IOKit whitelist to silence sandbox violations by Flash plugin on
        HBONow.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

2017-06-01  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream support for JCB as a supported payment network
        https://bugs.webkit.org/show_bug.cgi?id=172819

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toSupportedNetwork):
        (WebKit::toAdditionalSupportedNetwork): Deleted.

2017-05-31  Andy Estes  <aestes@apple.com>

        [Cocoa] "administrativeArea" contact field maps to the wrong CNPostalAddress key when creating NSErrors
        https://bugs.webkit.org/show_bug.cgi?id=172784
        <rdar://problem/32414416>

        Reviewed by Beth Dakin.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSError): Used CNPostalAddressStateKey instead of CNPostalAddressCityKey.

2017-05-31  Andy Estes  <aestes@apple.com>

        Rename ENABLE_APPLE_PAY_DELEGATE to ENABLE_APPLE_PAY_SESSION_V3 and bump the supported version number
        https://bugs.webkit.org/show_bug.cgi?id=172366

        Reviewed by Daniel Bates.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::supportsVersion):

2017-05-31  Chris Dumez  <cdumez@apple.com>

        [WK2] Fix bad assertion in BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck()
        https://bugs.webkit.org/show_bug.cgi?id=172763

        Reviewed by Zalan Bujtas.

        Fix bad assertion in BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck().
        It gets hit when a process becomes unresponsive. The reason is that RunLoop::Timer::isActive()
        still returns true while the timerFired() callback is called.

        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck):

2017-05-31  Youenn Fablet  <youenn@apple.com>

        Make WebRTC legacy API switch an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=172760

        Reviewed by Eric Carlson.

        This patch adds an experimental feature to disable WebRTC legacy API.
        We keep the runtime flag as "enable WebRTC legacy API" to minimize the changes and as it is clearer in the code.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebRTCLegacyAPIEnabled):
        (WKPreferencesGetWebRTCLegacyAPIEnabled):
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _webRTCLegacyAPIEnabled]):
        (-[WKPreferences _setWebRTCLegacyAPIEnabled:]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-05-31  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r217603.

        This patch broke the internal builds.

        Reverted changeset:

        "Get <chrono> out of StdLibExtras.h"
        https://bugs.webkit.org/show_bug.cgi?id=172744
        http://trac.webkit.org/changeset/217603

2017-05-31  Brent Fulgham  <bfulgham@apple.com>

        Make ResourceLoadStatistics testing more reliable
        https://bugs.webkit.org/show_bug.cgi?id=172730
        <rdar://problem/32028373>

        Reviewed by Andy Estes.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed): Add a convenience method to notify the
        WebProcess when the UIProcess has finished processing the load statistics data.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords): Notify clients (if they requested) when
        statistics have been processed.

2017-05-31  Simon Fraser  <simon.fraser@apple.com>

        Get <chrono> out of StdLibExtras.h
        https://bugs.webkit.org/show_bug.cgi?id=172744

        Reviewed by Saam Barati.

        Only bring in <chrono> and namespace std::literals::chrono_literals when necessary.

        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::computeRecordWorth):
        * Shared/mac/RemoteLayerBackingStoreCollection.mm:
        * WebProcess/Cookies/WebCookieManager.h:

2017-05-31  Zan Dobersek  <zdobersek@igalia.com>

        CoordinatedLayerTreeHost: properly support async force repaints
        https://bugs.webkit.org/show_bug.cgi?id=172444

        Reviewed by Carlos Garcia Campos.

        Before these changes the force-repaint callbacks were executed once
        the next layer flush was performed. This is not appropriate since
        with the threaded compositor this was done even before the flushed
        state was handled on the rendering thread.

        Instead, the callback should be invoked once the first following
        flushed state is rendered through the compositor and the update
        finish is reported back to CoordinatedLayerTreeHost through invoking
        the renderNextFrame() method.

        If the force-repaint callback is registered while a state update is
        already being processed by the renderer (i.e. the threaded compositor),
        the callback is invoked only after the following flush, which is
        executed when renderNextFrame() is called for the current state update.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        Add the forceFrameSync() method that forces the following state flush
        to produce a state update that will be handled by the compositor.
        This ensures that the compositor informs the CoordinatedLayerTreeHost
        once this state update is done, invoking renderNextFrame() which would
        handle the force-repaint callback.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::forceRepaintAsync):
        (WebKit::CoordinatedLayerTreeHost::renderNextFrame):
        (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        Remove the forceRepaintAsync() override that returned false.

2017-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix copy-paste error added in r217209.

        It seems I pasted twice.

        * UIProcess/API/gtk/WebKitContextMenuItem.h:

2017-05-30  Tim Horton  <timothy_horton@apple.com>

        Keyboard autocorrections do not apply with an active selection (but keyboard acts like they did)
        https://bugs.webkit.org/show_bug.cgi?id=172735
        <rdar://problem/32015977>

        Reviewed by Enrica Casucci.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Expose applyAutocorrection on the WKTesting category for use from UIScriptController.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::syncApplyAutocorrection):
        If there is a range selection and it precisely matches the autocorrection's "before"
        string, allow the autocorrection to take place.

2017-05-30  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: images dragged from Inspector to Desktop are named "Unknown.png"
        https://bugs.webkit.org/show_bug.cgi?id=141515
        <rdar://problem/9251308>

        Reviewed by Wenson Hsieh.

        In Web Inspector these images are <img src="..."> with data: or blob:
        content. In these cases we have the image data but the URL does not
        provide a useful name. In fact the name "Unknown.png" comes from
        -[NSURLResponse suggestedFilename] for this URL / content.

        To start, improve this situation for drags in Web Inspector pages.
        If the image element being dragged has a filename attribute use that
        as the suggested filename for the drag.

        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):

2017-05-30  Ryosuke Niwa  <rniwa@webkit.org>

        Only include DataDetectorsUI headers in iOS
        https://bugs.webkit.org/show_bug.cgi?id=172633

        Reviewed by David Kilzer.

        Enable data detectors only on iOS and not other variants of iOS.

        * Platform/spi/ios/ManagedConfigurationSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _dataDetectionResults]):
        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showDataDetectorsSheet]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView _didNotHandleTapAsClick:]):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
        (-[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleTap):
        (WebKit::WebPage::handleTwoFingerTapAtPoint):
        (WebKit::WebPage::commitPotentialTap):

2017-05-30  Chris Dumez  <cdumez@apple.com>

        REGRESSION(r215946): Can't reference a table cell in Google spreadsheet
        https://bugs.webkit.org/show_bug.cgi?id=172703
        <rdar://problem/32458086>

        Reviewed by Ryosuke Niwa.

        Fix GObject bindings accordingly.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
        (WebKit::kit):
        (WebKit::core):
        (WebKit::wrapDOMRectList):
        (webkit_dom_client_rect_list_constructed):
        (webkit_dom_client_rect_list_item):
        (webkit_dom_client_rect_list_get_length):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
        (webkit_dom_element_get_client_rects):

2017-05-30  Daniel Bates  <dabates@apple.com>

        [WK2] Add runBeforeUnloadConfirmPanel WKUIDelegate SPI; support onbeforeunload confirm panel in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=172603
        <rdar://problem/32471306>

        Reviewed by Brady Eidson.

        A page loaded in MiniBrowser using WebKit2 cannot show a beforeunload confirm panel (by registering
        an onbeforeunload event handler) when it is unloaded. The same page loaded in MiniBrowser using
        WebKit1 can show such a confirm panel. We need to add WKUIDelegate SPI so that an embedding client,
        such as MiniBrowser, can register to receive a callback to show a beforeunload confirm panel.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::runBeforeUnloadConfirmPanel): Modified to take a SecurityOriginData object. This
        makes the API consistent with the existing JavaScript dialog callbacks.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add SPI -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView setUIDelegate:]): Set the delegate of WebKit::UIDelegate to the specified WKUIDelegate
        before we set the UI client on the page so as to ensure that API::UIClient callbacks that depend
        -respondsToSelector: checks (e.g. API::UIClient::canRunBeforeUnloadConfirmPanel()) return the correct
        result. To elaborate further, a API::UIClient client must override both canRunBeforeUnloadConfirmPanel()
        and runBeforeUnloadConfirmPanel() to support running a beforeunload confirm dialog. When mapping
        the Cocoa SPI, WKUIDelegatePrivate, to API::UIClient we implement API::UIClient::canRunBeforeUnloadConfirmPanel()
        in terms of whether the Cocoa delegate responds at runtime to the selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
        We need to do such runtime checks before we pass the API::UIClient to the page. Otherwise, querying
        API::UIClient::canRunBeforeUnloadConfirmPanel() will return the wrong result.
        * UIProcess/API/gtk/WebKitUIClient.cpp: Modified runBeforeUnloadConfirmPanel() to take a SecurityOriginData object.
        * UIProcess/Cocoa/UIDelegate.h: Add declarations for API::UIClient overrides: canRunBeforeUnloadConfirmPanel()
        and runBeforeUnloadConfirmPanel(). Add a bit to m_delegateMethods as to whether the Cocoa delegate
        responds to selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Set the above m_delegateMethods bit if the Cocoa delegate responds
        to selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
        (WebKit::UIDelegate::UIClient::canRunBeforeUnloadConfirmPanel): Return whether the above m_delegateMethods
        bit was set.
        (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel): Turn around and call -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler: (if applicable).
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): Modified to take a SecurityOriginData object
        and pass it to API::UIClient::runBeforeUnloadConfirmPanel().
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in: Add SecurityOriginData argument to message RunBeforeUnloadConfirmPanel.
        Also pass the message for the panel as the last argument so as to make the order of arguments to message
        RunBeforeUnloadConfirmPanel more closely match the order of arguments passed to other JavaScript dialog
        messages (e.g. RunJavaScriptAlert) for consistency.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runBeforeUnloadConfirmPanel): Include the SecurityOriginData object for the
        frame in message RunBeforeUnloadConfirmPanel.

2017-05-30  Alex Christensen  <achristensen@webkit.org>

        Update libwebrtc configuration
        https://bugs.webkit.org/show_bug.cgi?id=172727

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:

2017-05-30  Tim Horton  <timothy_horton@apple.com>

        Dictionary lookup disappears after a few seconds on observer.com
        https://bugs.webkit.org/show_bug.cgi?id=172725
        <rdar://problem/32328324>

        Reviewed by Beth Dakin.

        Only dismiss content-relative child windows on main frame loads,
        not all subframes. This was causing e.g. dictionary popovers
        relative to main-frame content to be dismissed when subframe
        ads finished loading, which is likely the cause of most incidents
        of this problem.

        If the popover is relative to subframe content and the subframe
        navigates out from under the popover, the popover will persist until
        dismissed by the user (or one of the other automatic dismissal
        mechanisms), but that seems preferable to the old behavior.

        * UIProcess/Cocoa/WebViewImpl.h:
        Remove an unimplemented and unused declaration.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::processDidExit):
        Move dismissContentRelativeChildWindows call here from WebPageProxy.

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::didCommitLoadForMainFrame):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::dismissContentRelativeChildWindows):
        Remove dismissContentRelativeChildWindows from PageClient(Impl),
        call it from inside PageClientImpl and other Mac-specific places
        instead of inside ifdefs in WebPageProxy.

2017-05-30  Konstantin Tokarev  <annulen@yandex.ru>

        Don't use designated initializers in WebBackForwardListProxy.cpp
        https://bugs.webkit.org/show_bug.cgi?id=172667

        Reviewed by Alex Christensen.

        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::addItemFromUIProcess):
        (WebKit::WebBackForwardListProxy::addItem):

2017-05-30  Antti Koivisto  <antti@apple.com>

        REGRESSION(r191402?): Safari, Mail crash at com.apple.WebKit: WebKit::WebContextMenuListenerProxy::invalidate + 4
        https://bugs.webkit.org/show_bug.cgi?id=172704

        Reviewed by Andreas Kling.

        r191402 made WebContextMenuProxy non-refcounted. However there are several potential ways for WebContextMenuProxyMac::show()
        to re-enter WebPageProxy and delete itself. This patch partially reverts r191402 bringing refcounting back and protects
        WebContextMenuProxy during show().

        Speculative fix. No test, can't repro the crash.

        * UIProcess/PageClient.h:
        * UIProcess/WebContextMenuProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::internalShowContextMenu):

            Protect WebContextMenuProxy during show().

        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/WebContextMenuProxyGtk.h:
        (WebKit::WebContextMenuProxyGtk::create):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::createContextMenuProxy):
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::createContextMenuProxy):
        * UIProcess/mac/WebContextMenuProxyMac.h:
        (WebKit::WebContextMenuProxyMac::create):

2017-05-30  Zan Dobersek  <zdobersek@igalia.com>

        Invalidate the LayerTreeHost when destroying the DrawingAreaWPE object.

        Rubber-stamped by Carlos Garcia Campos.

        * WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:
        (WebKit::DrawingAreaWPE::~DrawingAreaWPE): Invalidate the LayerTreeHost
        object, properly deconstructing the graphics pipeline.

2017-05-29  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Remove unneeded forward declaration

        Rubber-stamped by Zan Dobersek.

        * UIProcess/API/C/gtk/WKAPICastGtk.h: Remove WebGrammarDetail as
        its header is included in the same file.

2017-05-29  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Build fix after r217531

        Unreviewed.

        * UIProcess/API/C/wpe/WKAPICastWPE.h:
        (WebKit::toAPI): Add missing WebGrammarDetail API cast.

2017-05-28  Dan Bernstein  <mitz@apple.com>

        [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
        https://bugs.webkit.org/show_bug.cgi?id=172691

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.

        * UIProcess/API/C/WKAPICast.h: Moved GTK-only definitions that used WebGrammarDetail.h to
          WKAPICastGtk.h. This had the effect of no longer including APIArray.h from this header.

        * UIProcess/API/C/gtk/WKAPICastGtk.h: Moved GTK-only definitions to here.
        (WebKit::toAPI):
        * UIProcess/WebGrammarDetail.h: Replaced include of APIArray.h with a forward declaration.

        * Shared/API/c/WKRenderLayer.cpp:
        * Shared/API/c/WKRenderObject.cpp:
        * UIProcess/API/C/WKApplicationCacheManager.cpp:
        * UIProcess/API/C/WKContext.cpp:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        * UIProcess/API/C/WKCookieManager.cpp:
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        * UIProcess/API/C/WKNotificationManager.cpp:
        * UIProcess/API/C/WKOpenPanelResultListener.cpp:
        * UIProcess/API/C/WKPageGroup.cpp:
        * UIProcess/API/C/WKResourceCacheManager.cpp:
        * UIProcess/API/C/WKUserContentControllerRef.cpp:
        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
        * UIProcess/WebContextMenuListenerProxy.cpp:

          Added #include "APIArray.h" to these files now that WKAPICast.h does not include it.

2017-05-26  Joseph Pecoraro  <pecoraro@apple.com>

        Simply some NSNumber usage
        https://bugs.webkit.org/show_bug.cgi?id=172677

        Reviewed by Sam Weinig.

        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::platformGeometryDidChange):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::registerUserDefaultsIfNeeded):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):

2017-05-26  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Address thread safety issues with ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=172519
        <rdar://problem/31707642>

        Reviewed by Chris Dumez.

        Address some thread safety issues with the ResourceLoadStatistics architecture.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Assert that this is never called on the main thread. Also
        ensure that coreStore is only accessed on the statistics queue, not the main thread.
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords): Dispatch coreStore-accessing code
        on the statistics queue.
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): Assert we do not hit this method
        on the main thread.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Assert that this is being called on the
        main thread. Also ensure that coreStore is only accessed on the statistics queue, not the main thread.
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData): Dispatch coreStore-accessing code
        on the statistics queue.
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Lock data before operating on it.
        (WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk): Assert we do not hit this method on the main thread.
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk): Ditto.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * WebProcess/WebProcess.cpp: Add a queue for the local WebProcess ResourceLoadStatisticsStore to use while processing data.
        (WebKit::m_statisticsQueue): Added.
        * WebProcess/WebProcess.h:

2017-05-26  Joseph Pecoraro  <pecoraro@apple.com>

        [Cocoa] Simplify some WebViewImpl pasteboard code
        https://bugs.webkit.org/show_bug.cgi?id=172668

        Reviewed by Tim Horton.

        * Shared/mac/PasteboardTypes.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setFileAndURLTypes):
        (WebKit::WebViewImpl::setPromisedDataForAttachment):

2017-05-26  Joseph Pecoraro  <pecoraro@apple.com>

        JSContext Inspector: Improve the reliability of automatically pausing in auto-attach
        https://bugs.webkit.org/show_bug.cgi?id=172664
        <rdar://problem/32362933>

        Reviewed by Matt Baker.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::connect):
        * UIProcess/Automation/WebAutomationSession.h:
        Special connection options are ignored in automation sessions.

2017-05-26  Commit Queue  <commit-queue@webkit.org>

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

        Exposes an underlying bug in WPEBackend-mesa that we have to
        resolve separately (Requested by zdobersek on #webkit).

        Reverted changeset:

        "[WPE] Use AcceleratedDrawingArea instead of its fork"
        https://bugs.webkit.org/show_bug.cgi?id=172496
        http://trac.webkit.org/changeset/217479

2017-05-26  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed Mac cmake buildfix after r217137, just for fun.
        https://bugs.webkit.org/show_bug.cgi?id=172362

        * PlatformMac.cmake:

2017-05-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Use AcceleratedDrawingArea instead of its fork
        https://bugs.webkit.org/show_bug.cgi?id=172496

        Reviewed by Žan Doberšek.

        WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified
        for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing
        being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.

        * PlatformWPE.cmake:
        * Shared/DrawingAreaInfo.h: Remove DrawingAreaTypeWPE type.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Removed.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.h: Removed.
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy): Create an AcceleratedDrawingAreaProxy.
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Moved from DrawingAreaImpl since it actually
        belongs here.
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create): Create an AcceleratedDrawingArea for WPE port.
        * WebProcess/WebPage/DrawingAreaImpl.cpp: Remove mainFrameContentSizeChanged() that doesn't belong here.
        * WebProcess/WebPage/DrawingAreaImpl.h:
        * WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Removed.
        * WebProcess/WebPage/wpe/DrawingAreaWPE.h: Removed.

2017-05-25  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [iOS] Disbale async image decoding when synchronously painting a newly parented WebView
        https://bugs.webkit.org/show_bug.cgi?id=172626

        Reviewed by Simon Fraser.

        Large images have to be synchronously decoded when bringing a WebView to 
        the foreground because the whole page will be painted when we unblock the
        UI process.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext): Get nextFlushIsForImmediatePaint
        from RemoteLayerTreeContext and pass the correct GraphicsLayerPaintFlags
        to drawLayerContents().
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        (WebKit::RemoteLayerTreeContext::setNextFlushIsForImmediatePaint):
        (WebKit::RemoteLayerTreeContext::nextFlushIsForImmediatePaint):
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers): Pass
        m_nextFlushIsForImmediatePaint to RemoteLayerTreeContext and then reset it.
        (WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
        Set m_nextFlushIsForImmediatePaint to true to say that in the next flush,
        large images have to be synchronously decoded.

2017-05-25  Joseph Pecoraro  <pecoraro@apple.com>

        _WKUserStyleSheet and WKUserScript leak string data
        https://bugs.webkit.org/show_bug.cgi?id=172583
        <rdar://problem/32395209>

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKUserScript.mm:
        (-[WKUserScript dealloc]):
        * UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
        (-[_WKUserStyleSheet dealloc]):
        Follow the pattern of destructing the internal API object.

        * UIProcess/API/Cocoa/WKUserScriptInternal.h:
        * UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h:
        Remove unnecessary includes.

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

        ASSERT(m_websiteDataStore->websiteDataStore().sessionID() == m_sessionID) in PageConfiguration::sessionID()
        https://bugs.webkit.org/show_bug.cgi?id=172615
        <rdar://problem/32277488>

        Reviewed by Brady Eidson.

        Fix assertion added in r215923 to take into account the fact that the PageConfiguration's sessionID
        is SessionID::legacyPrivateSessionID() when private browsing is enabled, instead of being the
        WebsiteDataStore's sessionID.

        See code in WebProcessPool::createWebPage():
        """
        pageConfiguration->setSessionID(pageConfiguration->preferences()->privateBrowsingEnabled() ? SessionID::legacyPrivateSessionID() : m_websiteDataStore->websiteDataStore().sessionID());
        """

        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::sessionID):

2017-05-25  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Add a mach-lookup exception for 'com.apple.lsd.mapdb' to Network sandbox
        https://bugs.webkit.org/show_bug.cgi?id=172465
        <rdar://problem/32332836>

        Reviewed by Alex Christensen.

        Expand sandbox to allow lookup of the mapdb that contains UTI information used
        by the Network process.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

2017-05-25  Youenn Fablet  <youenn@apple.com>

        com.apple.coremedia.videoencoder XPC service should be allowed by WebProcess sandbox
        https://bugs.webkit.org/show_bug.cgi?id=172599

        Reviewed by Alex Christensen.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-05-25  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Avoid setting contentsScale and rasterizationScale on CATransformLayers
        https://bugs.webkit.org/show_bug.cgi?id=172569

        Reviewed by Dean Jackson.

        Setting contentsScale and rasterizationScale on CATransformLayers is a waste of CPU time,
        and triggers unwanted logging, so don't do it.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):

2017-05-25  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r217409.

        The revision caused api failures

        Reverted changeset:

        "_WKUserStyleSheet leaks string data"
        https://bugs.webkit.org/show_bug.cgi?id=172583
        http://trac.webkit.org/changeset/217409

2017-05-25  Joseph Pecoraro  <pecoraro@apple.com>

        _WKUserStyleSheet leaks string data
        https://bugs.webkit.org/show_bug.cgi?id=172583
        <rdar://problem/32395209>

        Reviewed by Dan Bernstein.

        * UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
        (-[_WKUserStyleSheet dealloc]):

2017-05-24  Joseph Pecoraro  <pecoraro@apple.com>

        Increase the headerpad for WebKit XPC Services
        https://bugs.webkit.org/show_bug.cgi?id=172571

        Reviewed by Dan Bernstein.

        * Configurations/BaseXPCService.xcconfig:
        Increase the headerpad to make room for additional dyld commands.

2017-05-24  David Keijser  <keijser@gmail.com>

        [GTK] Provide details on javascript exception
        https://bugs.webkit.org/show_bug.cgi?id=161187

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewRunJavaScriptCallback):
        (webkit_web_view_run_javascript):
        (resourcesStreamReadCallback):

2017-05-24  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, suppress deprecation warnings to fix the build.

        * Shared/mac/ColorSpaceData.mm:
        (WebKit::ColorSpaceData::decode):

2017-05-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Plumb additional image metadata to item providers when beginning data interaction on an image
        https://bugs.webkit.org/show_bug.cgi?id=172536
        <rdar://problem/32371300>

        Reviewed by Beth Dakin.

        Boilerplate plumbing to send suggestedName over IPC.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardImage>::encode):
        (IPC::ArgumentCoder<PasteboardImage>::decode):

2017-05-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Remove workaround to disable zooming to the focus rect while performing a data interaction
        https://bugs.webkit.org/show_bug.cgi?id=172546

        Reviewed by Beth Dakin.

        Removes a now-unnecessary workaround to prevent scrolling when performing a data interaction operation in
        editable content.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _displayFormNodeInputView]):

2017-05-24  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Change grandfathering default to one hour
        https://bugs.webkit.org/show_bug.cgi?id=172524
        <rdar://problem/32360462>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):

2017-05-24  Jer Noble  <jer.noble@apple.com>

        Rename DisplaySleepDisabler -> SleepDisabler
        https://bugs.webkit.org/show_bug.cgi?id=172478

        Reviewed by Sam Weinig.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:

2017-05-23  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Don't include HSTS cache data in website data removal
        https://bugs.webkit.org/show_bug.cgi?id=172525
        <rdar://problem/32332704>

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::initializeDataTypesToRemove):

2017-05-15  Matt Rajca  <mrajca@apple.com>

        Replace autoplay events that fire at navigation with a DidAutoplayMediaPastThreshold event.
        https://bugs.webkit.org/show_bug.cgi?id=172138

        Reviewed by Alex Christensen.

        Updated auto-play event types.

        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:

2017-05-23  Chris Dumez  <cdumez@apple.com>

        ASSERT(!m_timeoutTimer.isActive()) hit in BackgroundProcessResponsivenessTimer::responsivenessCheckTimerFired()
        https://bugs.webkit.org/show_bug.cgi?id=172509
        <rdar://problem/32251578>

        Reviewed by Geoffrey Garen.

        In the BackgroundProcessResponsivenessTimer class, we have 2 timers:
        - m_responsivenessCheckTimer that causes us to do an IPC handshake with
          the WebProcess.
        - m_timeoutTimer that is started when we send the IPC message to the
          WebProcess and which is stopped when we get the response from the
          WebProcess. If we do not get the response by the time m_timeoutTimer
          fires, then we mark the process as unresponsive.

        As a result, of the behavior above, whenever the BackgroundProcessResponsivenessTimer
        is considered "active", there should be one of the 2 timers above that
        is active, and only one.

        The assertion hit showed that we decided to start the m_responsivenessCheckTimer
        timer even though the m_timeoutTimer timer is still active (we are still waiting
        for an IPC message from the WebProcess and the process is not considered
        unresponsive yet), which is wrong. The reason was that in
        BackgroundProcessResponsivenessTimer::updateState(), if we should be active,
        we would start the m_responsivenessCheckTimer if m_responsivenessCheckTimer is
        not already active, without checking if m_timeoutTimer is active. So if
        updateState() was called while the IPC handshake was in process, we would have
        both timers running at the same time.

        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::updateState):
        (WebKit::BackgroundProcessResponsivenessTimer::isActive):
        * UIProcess/BackgroundProcessResponsivenessTimer.h:

2017-05-22  Simon Fraser  <simon.fraser@apple.com>

        Snapshotting via -renderInContext: should do synchronous image decodes
        https://bugs.webkit.org/show_bug.cgi?id=172485
        rdar://problem/32276146

        Reviewed by Tim Horton.

        Pass the PaintBehaviorSnapshotting flag in functions that do snapshotting.

        * Shared/mac/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::imageForRect):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):

2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove dead ENABLE(FONT_LOAD_EVENTS) code
        https://bugs.webkit.org/show_bug.cgi?id=172517

        Rubber-stamped by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-05-23  Tim Horton  <timothy_horton@apple.com>

        Zoom in/out is slow in Safari with large PDFs
        https://bugs.webkit.org/show_bug.cgi?id=172495
        <rdar://problem/32338631>

        Reviewed by Simon Fraser.

        No tests; just a performance improvement.

        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::computePageBoxes):
        Use PDFKit instead of CGPDF to compute the first page box, so we can take
        advantage of PDFKit optimizations. PDFKit also handles box fallback,
        so we don't need to do that ourselves. Stop fetching all the boxes, as
        we only seem to use the first one.

2017-05-23  Tim Horton  <timothy_horton@apple.com>

        REGRESSION: API test WebKit2.WKObject is failing
        https://bugs.webkit.org/show_bug.cgi?id=172497
        <rdar://problem/31694641>

        Reviewed by Geoff Garen.

        * Shared/Cocoa/WKNSString.mm:
        (-[WKNSString superclass]):
        (-[WKNSString class]):
        Pretend to be NSString instead of the more specific subclass (__NSCFString)
        that we actually are. There is code underneath us that assumes that if
        -class returns __NSCFString, that the object is a CFStringRef, which is
        not true in our case.

2017-05-23  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Add a mach-lookup exception for 'com.apple.analyticsd'
        https://bugs.webkit.org/show_bug.cgi?id=172462
        <rdar://problem/32331638>

        Reviewed by Alexey Proskuryakov.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-05-22  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Adopt a whitelist for XPC services
        https://bugs.webkit.org/show_bug.cgi?id=172182
        <rdar://problem/30669445>

        Reviewed by Sam Weinig.

        Tell the Sandbox to block all XPC connections that are not explicitly allowed by
        the sandbox profile. The default behavior is to allow everything by default.

        If the restriction is set before including the standard iOS sandbox profiles, there
        does not seem to be a need to white list any other services. 

        General web browsing on multiple devices indicate that these sandbox profiles work
        properly with media, accessibility, webgl, and general web content.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-05-23  Emilio Cobos Álvarez  <ecobos@igalia.com>

        Add a RuntimeEnabledFeature for display: contents, defaulted to false.
        https://bugs.webkit.org/show_bug.cgi?id=171984

        Reviewed by Antti Koivisto.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetDisplayContentsEnabled):
        (WKPreferencesGetDisplayContentsEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-05-20  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r215686): O(n^2) algorithm in CachedRawResource::addDataBuffer
        https://bugs.webkit.org/show_bug.cgi?id=172406
        <rdar://32109532>

        Reviewed by Brady Eidson.

        * Platform/IPC/DataReference.cpp:
        (IPC::SharedBufferDataReference::encode):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::redeliverManualStream):

2017-05-22  Yongjun Zhang  <yongjun_zhang@apple.com>

        Need a way to allow WKWebView to load request with ShouldOpenExternalURLsPolicy::ShouldAllow.
        https://bugs.webkit.org/show_bug.cgi?id=172460

        Add an new method [WKWebView _loadRequest:shouldOpenExternalURLs:] to WKWebView; a WebKit client
        can use this to load request that allows opening external URLs.

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _loadRequest:shouldOpenExternalURLs:]): When calling WebPageProxy::loadRequest, also
            set ShouldOpenExternalURLsPolicy based on the value of shouldOpenExternalURLs.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add [WKWebView _loadRequest:shouldOpenExternalURLs:].

2017-05-22  Youenn Fablet  <youenn@apple.com>

        Remove AVAudioCaptureSource
        https://bugs.webkit.org/show_bug.cgi?id=172360

        Reviewed by Sam Weinig.

        Removing the handling of AVAudio/CoreAudio capture source dynamic switch.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetUseAVFoundationAudioCapture): Deleted.
        (WKPreferencesGetUseAVFoundationAudioCapture): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-05-22  Brian Burg  <bburg@apple.com>

        Web Automation: characters produced with shift modifier on QWERTY keyboard should be delivered as shift-down, char-down, char-up, shift-up events
        https://bugs.webkit.org/show_bug.cgi?id=172299
        <rdar://problem/32277988>

        Reviewed by Joseph Pecoraro.

        WebDriver tests expect some ASCII characters to be produced using the shift key,
        regardless of the actual keyboard layout. Emit extra events when simulating these
        keystrokes if the shift key is not already pressed.

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::characterIsProducedUsingShift):
        (WebKit::WebAutomationSession::platformSimulateKeySequence):

2017-05-22  Sam Weinig  <sam@webkit.org>

        [WebIDL] Support callbacks with arbitrary return types
        https://bugs.webkit.org/show_bug.cgi?id=172407

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/API/gtk/DOM/GObjectNodeFilterCondition.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/GObjectNodeFilterCondition.h:
        Update to match new interface of NodeFilterCondition.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
        Update to account for new WebCore implementation return types.

2017-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wreturn-type warning triggered by WKPage.cpp:2277
        https://bugs.webkit.org/show_bug.cgi?id=171866

        Reviewed by Žan Doberšek.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):

2017-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wreturn-type warning triggered by WebAutomationSession.cpp:851
        https://bugs.webkit.org/show_bug.cgi?id=171867

        Reviewed by Žan Doberšek.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::protocolModifierToWebEventModifier):

2017-05-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove unused documentIsHandlingNonDefaultDrag plumbing for WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=172453

        Reviewed by Tim Horton.

        Removes unused plumbing that was originally added to support file uploads.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformDragControllerAction):
        (WebKit::WebPageProxy::resetCurrentDragInformation):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::currentDragCaretRect):
        (WebKit::WebPageProxy::documentIsHandlingNonDefaultDrag): Deleted.
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):

2017-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Add even more input validation in Connection::processMessage()
        https://bugs.webkit.org/show_bug.cgi?id=171682

        Reviewed by Carlos Garcia Campos.

        Verify that the size of the out-of-line message body matches the size of the AttachmentInfo
        that is containing it.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::processMessage):

2017-05-22  Tomas Popela  <tpopela@redhat.com>

        Remove some of the EFL port leftovers
        https://bugs.webkit.org/show_bug.cgi?id=172440

        Reviewed by Carlos Garcia Campos.

        * Scripts/generate-forwarding-headers.pl:

2017-05-22  Gwang Yoon Hwang  <yoon@igalia.com>

        [CoordinatedGraphics] Clear UpdateAtlases for each tests
        https://bugs.webkit.org/show_bug.cgi?id=172119

        Reviewed by Carlos Garcia Campos.

        In Coordinated Graphics, we reuses at least one update atlas to
        render root compositing layer for several tests. So if one of the
        test cases breaks the internal states of Cairo's states, other
        followed test cases runs on same instance of WebKitTestRunner will
        be effected by broken states of Cairo. Because it increases test
        flaknesses, we should drop update atlases after each tests.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp: Remove a redundant
        include statement for Coordinated graphics
        (WebKit::WebChromeClient::resetUpdateAtlasForTesting): Added.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::resetUpdateAtlasForTesting): Added.
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::clearUpdateAtlases): Added.
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::clearUpdateAtlases): Added.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/LayerTreeHost.h:
        * WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:
        (WebKit::DrawingAreaWPE::resetUpdateAtlasForTesting):
        * WebProcess/WebPage/wpe/DrawingAreaWPE.h:

2017-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.3 release.

        * gtk/NEWS: Add release notes for 2.17.3.

2017-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add webkit_context_menu_item_new_from_gaction
        https://bugs.webkit.org/show_bug.cgi?id=159631

        Reviewed by Michael Catanzaro.

        Add new API to create a WebKitContextMenuItem from a GAction and also to get the associated GAction.

        * Shared/gtk/WebContextMenuItemGtk.cpp:
        (WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk): Add constructor that receives a GAction.
        (WebKit::isGActionChecked): Helper to check if a stateful GAction is checked or not.
        (WebKit::WebContextMenuItemGtk::createActionIfNeeded): When creating a GAction from a GtkAtion, use the
        GtkAction name instead of adding a new one. Do not create the GAction if we already have one.
        * Shared/gtk/WebContextMenuItemGtk.h:
        (WebKit::WebContextMenuItemGtk::gAction):
        (WebKit::WebContextMenuItemGtk::gActionTarget):
        * UIProcess/API/gtk/WebKitContextMenuItem.cpp:
        (webkit_context_menu_item_new_from_gaction):
        (webkit_context_menu_item_get_gaction):
        * UIProcess/API/gtk/WebKitContextMenuItem.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
        (WebKit::contextMenuItemActivatedCallback): Update the state of the internal GAction in case of toggle menu items.
        (WebKit::WebContextMenuProxyGtk::append): Pass the GAction target to g_menu_item_set_action_and_target_value. Do
        not connect to activate signal of actions provided by the user.

2017-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add more input validation in Connection::readBytesFromSocket()
        https://bugs.webkit.org/show_bug.cgi?id=171871

        Reviewed by Michael Catanzaro.

        Check the control message length is in the limits. Credit to Nathan Crandall for reporting this issue and
        submitting an equivalent fix.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::readBytesFromSocket):

2017-05-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wreturn-type warning triggered by WKNotification.cpp:77
        https://bugs.webkit.org/show_bug.cgi?id=172414

        Reviewed by Sam Weinig.

        * UIProcess/API/C/WKNotification.cpp:
        (WKNotificationCopyDir):

2017-05-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Use WebProcessPool::allProcessPools() when sending message to network process about partitioning
        https://bugs.webkit.org/show_bug.cgi?id=172370
        <rdar://problem/32288012>

        Reviewed by Alex Christensen.

        The existing test case
        http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html
        is currently failing and should start passing again with this patch.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains):

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

        [WK2] Notify client when a process exceeds background CPU limit while in the foreground
        https://bugs.webkit.org/show_bug.cgi?id=172246
        <rdar://problem/32235411>

        Reviewed by Geoffrey Garen.

        When there is a background CPU limit set by the client, we now monitor the CPU
        usages of all WebContent processes, not just the non-visible ones. This way, we
        are now able to notify the client a process has exceeded the background CPU
        limit while in the foreground, via the UIClient's didExceedBackgroundResourceLimitWhileInForeground
        function, passing kWKResourceLimitCPU.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy):
        * UIProcess/API/APIPageConfiguration.h:
        (API::PageConfiguration::cpuLimit):
        (API::PageConfiguration::setCPULimit):
        * UIProcess/API/C/WKPageConfigurationRef.cpp:
        (WKPageConfigurationSetBackgroundCPULimit):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateThrottleState):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
        (WebKit::WebPageProxy::didExceedBackgroundCPULimitWhileInForeground):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedCPULimit):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::cpuLimit):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::createWebPage):
        (WebKit::WebProcess::removeWebPage):
        (WebKit::WebProcess::updateCPULimit):
        (WebKit::WebProcess::updateCPUMonitorState):
        (WebKit::WebProcess::pageActivityStateDidChange):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateCPULimit):
        (WebKit::WebProcess::updateCPUMonitorState):

2017-05-19  Jeremy Jones  <jeremyj@apple.com>

        Remove defunct WebVideoFullscreenInterface
        https://bugs.webkit.org/show_bug.cgi?id=172254

        Reviewed by Jon Lee.

        Remove reference to WebVideoFullscreenInterface. It has long since been replaced by
        WebVideoFullscreenModelClient.

        * WebProcess/cocoa/WebVideoFullscreenManager.h:

2017-05-19  Jeremy Jones  <jeremyj@apple.com>

        [WebRTC] Remove PiP support for video elements that are showing camera capture
        https://bugs.webkit.org/show_bug.cgi?id=172336

        Reviewed by Eric Carlson.

        Ask video element if it supports picture-in-picture instead of asking the mediaSession directly.
        This allows the video element to give a more robust answer.

        * WebProcess/cocoa/WebVideoFullscreenManager.mm:
        (WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):

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

        Make sure implementation of InitializeWebKit2() always run on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=172362
        <rdar://problem/32295678>

        Reviewed by Geoffrey Garen.

        Add logic in InitializeWebKit2() for Cocoa ports to always run the initialization code
        is only called once, and on the main thread. If we are called from a non-main thread,
        we will dispatch synchronously to the main thread to run the initialization code.

        This is needed because WebKit2Initialize() is called from the API::Object constructor.
        API::Object is thread-safe RefCounted and those objects are sometimes initialized on
        non-main thread. If the first of such objects happened to be initialized on a non-main
        thread, then we would run the initialization code for the first time on a non-main
        thread. This would lead to hard to debug issues because code such as
        RunLoop::initializeMainRunLoop() is only safe to call on the main thread because it
        stores a pointer to the current thread's RunLoop in a static variable for later use
        (i.e. for RunLoop::main()).

        * Shared/Cocoa/WebKit2InitializeCocoa.mm: Copied from Source/WebKit2/Shared/WebKit2Initialize.cpp.
        (WebKit::runInitializationCode):
        (WebKit::InitializeWebKit2):
        * Shared/WebKit2Initialize.cpp:
        (WebKit::InitializeWebKit2):
        * WebKit2.xcodeproj/project.pbxproj:

2017-05-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r216977): [GTK] Ephemeral sessions broken after r216977
        https://bugs.webkit.org/show_bug.cgi?id=172345

        Reviewed by Michael Catanzaro.

        Since r216977, WebProcessPool sends the page session ID to the web process, but the WebsiteDataStoreParameters
        session ID to the network process. WebsiteDataStoreParameters is only implemented for Cocoa, so we are sending 0
        session ID to the network process, while using the right session ID everywhere else.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::pageAddedToProcess): Add an ASSERT to ensure we are sending the same session ID to Web
        and Network processes.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::parameters): Add minimal implementation for non-Cocoa ports to at least set the
        session ID.

2017-05-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add more input validation in Connection::processMessage()
        https://bugs.webkit.org/show_bug.cgi?id=171682

        Reviewed by Michael Catanzaro.

        Check limits of attachments and message size. Credit to Nathan Crandall for reporting this issue and submitting
        an equivalent fix.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::processMessage):

2017-05-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Threaded Compositor] Remove platform ifdefs from threaded compositor implementation
        https://bugs.webkit.org/show_bug.cgi?id=172265

        Reviewed by Žan Doberšek.

        Add AcceleratedSurfaceWPE implementation that is equivalent to the PlatformDisplayWPE::EGLTarget. Since WPE needs the
        surface to be initialized/finalized in the compositing thread, two new virtual methods has been added to
        AcceleratedSurface initialize/finalize that are only implemented by WPE. The threaded compositor no longer
        receives a native surface handle as contructor parameter, it now asks the client for it from the compositing
        thread, right after it's created.

        * PlatformWPE.cmake:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::create): Remove ativeSurfaceHandle parameter.
        (WebKit::ThreadedCompositor::ThreadedCompositor): Initialize m_nativeSurfaceHandle from the compositing thread
        asking the client for it.
        (WebKit::ThreadedCompositor::createGLContext): Remove the WPE implementation.
        (WebKit::ThreadedCompositor::invalidate): Notify the client that the GL context has been destroyed.
        (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Remove GTK ifdefs.
        (WebKit::ThreadedCompositor::setViewportSize): Remove WPE implementation.
        (WebKit::ThreadedCompositor::renderLayerTree): Notify the client the frame will be rendered, and when it has
        been rendered.
        (WebKit::ThreadedCompositor::frameComplete): Remove WPE ifdefs.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/AcceleratedSurface.cpp:
        (WebKit::AcceleratedSurface::create): Add client parameter.
        (WebKit::AcceleratedSurface::AcceleratedSurface): Create a AcceleratedSurfaceWPE if display is WPE.
        * WebProcess/WebPage/AcceleratedSurface.h:
        (WebKit::AcceleratedSurface::surfaceID):
        (WebKit::AcceleratedSurface::initialize):
        (WebKit::AcceleratedSurface::finalize):
        (WebKit::AcceleratedSurface::willRenderFrame):
        (WebKit::AcceleratedSurface::didRenderFrame):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Pass this as client of AcceleratedSurface.
        (WebKit::ThreadedCoordinatedLayerTreeHost::frameComplete): Notify the compositor.
        (WebKit::ThreadedCoordinatedLayerTreeHost::nativeSurfaceHandleForCompositing): Initialize the surface and return
        the window handler.
        (WebKit::ThreadedCoordinatedLayerTreeHost::didDestroyGLContext): Finalize the surface.
        (WebKit::ThreadedCoordinatedLayerTreeHost::willRenderFrame): Notify the surface.
        (WebKit::ThreadedCoordinatedLayerTreeHost::didRenderFrame): Ditto.
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
        (WebKit::AcceleratedSurfaceWayland::create): Add client parameter.
        (WebKit::AcceleratedSurfaceWayland::AcceleratedSurfaceWayland): Ditto.
        (WebKit::AcceleratedSurfaceWayland::didRenderFrame): Call Client::frameComplete().
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
        (WebKit::AcceleratedSurfaceX11::create): Add client parameter.
        (WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Ditto.
        (WebKit::AcceleratedSurfaceX11::didRenderFrame): Call Client::frameComplete().
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp: Added.
        (WebKit::AcceleratedSurfaceWPE::create):
        (WebKit::AcceleratedSurfaceWPE::AcceleratedSurfaceWPE):
        (WebKit::AcceleratedSurfaceWPE::~AcceleratedSurfaceWPE):
        (WebKit::AcceleratedSurfaceWPE::initialize):
        (WebKit::AcceleratedSurfaceWPE::finalize):
        (WebKit::AcceleratedSurfaceWPE::window):
        (WebKit::AcceleratedSurfaceWPE::surfaceID):
        (WebKit::AcceleratedSurfaceWPE::resize):
        (WebKit::AcceleratedSurfaceWPE::willRenderFrame):
        (WebKit::AcceleratedSurfaceWPE::didRenderFrame):
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h: Copied from Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h.

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

        [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
        https://bugs.webkit.org/show_bug.cgi?id=172098

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:

2017-05-18  Andreas Kling  <akling@apple.com>

        [WK2] Notify WebPageProxy client when an active process goes over the inactive memory limit
        https://bugs.webkit.org/show_bug.cgi?id=172244
        <rdar://problem/31800943>

        Reviewed by Geoffrey Garen.

        Add a WKPageUIClient callback that is invoked when an active process exceeds the inactive memory limit.

        With the current state of the implementation, this means that a UI client can learn that backgrounding
        a non-audible, non-capturing tab may cause it to get killed once the active/inactive hysteresis time
        is over (8 minutes.)

        The callback can be invoked multiple times if we exceed the limit, and then go under, and exceed again.

        This is the callback:

            didExceedBackgroundResourceLimitWhileInForeground(WKPageRef, WKResourceLimit)

        Where WKResourceLimit is one of { kWKResourceLimitMemory, kWKResourceLimitCPU }
        The CPU enum value is a placeholder pending implementation soon.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedInactiveMemoryLimitWhileActive):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2017-05-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] do not cache gUM permissions
        https://bugs.webkit.org/show_bug.cgi?id=172245

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests):
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        (WebKit::FrameAuthorizationState::FrameAuthorizationState): Deleted.
        (WebKit::FrameAuthorizationState::hasPermissionToUseCaptureDevice): Deleted.
        (WebKit::FrameAuthorizationState::setHasPermissionToUseCaptureDevice): Deleted.
        (WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Deleted.
        (WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        (WebKit::FrameAuthorizationState::setDeviceIdentifierHashSalt): Deleted.
        (WebKit::FrameAuthorizationState::deviceIdentifierHashSalt): Deleted.
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt):

2017-05-18  Tim Horton  <timothy_horton@apple.com>

        Data interaction conclusion snapshot has too much margin
        https://bugs.webkit.org/show_bug.cgi?id=172323
        <rdar://problem/32283772>

        Reviewed by Beth Dakin.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didConcludeEditDataInteraction):
        Disable the default TextIndicator margin.

2017-05-18  Andy Estes  <aestes@apple.com>

        ENABLE(APPLE_PAY_DELEGATE) should be NO on macOS Sierra and earlier
        https://bugs.webkit.org/show_bug.cgi?id=172305

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig:

2017-05-18  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Grandfather domains for existing data records
        https://bugs.webkit.org/show_bug.cgi?id=172155
        <rdar://problem/24913532>

        Reviewed by Alex Christensen.

        When WebResourceLoadStatisticsStore starts fresh it needs
        to scan existing website data records and 'grandfather' them to
        allow ample time to capture user interaction.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetGrandfathered):
        (WKResourceLoadStatisticsManagerIsGrandfathered):
        (WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerSetGrandfatheringTime):
            Functions for testing and configuration.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
        (WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
            Added grandfathering configuration.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):
            New function to get all top privately controlled domains that
            have website data.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
            Functions for testing and configuration.
            WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval() changed
            as a result of WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval()
            moving to WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::initializeDataTypesToRemove):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
            Moved handling of pending removal into WebCore::ResourceLoadStatisticsStore since
            that's where grandfathering happens.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            Moved registration of write persistent store callback and reading of Cocoa defaults to
            WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver without parameters
            so they are called for platforms without CFNETWORK_STORAGE_PARTITIONING.
            Now includes registering WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
            as handler for grandfathering since it involves reading of the website data store.
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval): Deleted.
            Now happens in WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):
            New function to ask a WebsiteDataRecord for its top privately controlled domain.
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):
            New function to get all top privately controlled domains that
            have website data.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-05-18  Andy Estes  <aestes@apple.com>

        Add "countryCode" to ApplePayErrorContactField
        https://bugs.webkit.org/show_bug.cgi?id=172264
        <rdar://problem/32004909>

        Reviewed by Anders Carlsson.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSError):

2017-05-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r217031, r217032, and r217037.
        https://bugs.webkit.org/show_bug.cgi?id=172293

        cause linking errors in Windows (Requested by yusukesuzuki on
        #webkit).

        Reverted changesets:

        "[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217031

        "Unreviewed, rebaseline for newly added ClassInfo"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217032

        "Unreviewed, fix debug and non-JIT build"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217037

2017-05-18  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Unreviewed build fix

        Add missing header after r217041.
        * UIProcess/API/wpe/WPEView.cpp:

2017-05-18  Tim Horton  <timothy_horton@apple.com>

        More WebKit2 header cleanup
        https://bugs.webkit.org/show_bug.cgi?id=172214

        Reviewed by Simon Fraser.

        * Shared/WebFindOptions.h:
        * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setCompositionAsync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/PageClientImpl.mm:
        * UIProcess/mac/ViewGestureControllerMac.mm:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.h:
        * WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        * WebProcess/Notifications/WebNotificationManager.cpp:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
        * WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp:
        * WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):
        (WebKit::WebPage::setDeviceScaleFactor):
        (WebKit::WebPage::centerSelectionInVisibleArea):
        (WebKit::WebPage::findString):
        (WebKit::WebPage::findStringMatches):
        (WebKit::WebPage::getImageForFindMatch):
        (WebKit::WebPage::selectFindMatch):
        (WebKit::WebPage::hideFindUI):
        (WebKit::WebPage::countStringMatches):
        (WebKit::WebPage::didReceiveGeolocationPermissionDecision):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::setCompositionAsync):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::findController):
        (WebKit::WebPage::geolocationPermissionRequestManager):
        * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
        Many small changes added up to a few percent. Removing UserMediaRequest
        from UserMediaPermissionRequestProxy, which is included into WebPageProxy.h,
        was worth another ~10% because it got VM.h out of WebPageProxy.h (like the
        previous patch did with WebPage.h). In total, in my measurement (WebKit2
        clean debug build) this is a ~15% speedup.

        We really should figure out how to make DOMPromise.h not bring in all of
        JavaScriptCore (or how to use promises without including DOMPromise.h in headers).

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

        Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList()
        https://bugs.webkit.org/show_bug.cgi?id=172258

        Reviewed by Brady Eidson.

        Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList(). The String
        was moved instead of calling isolatedCopy(), even though we're passing the String to
        another thread.

        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::ContentRuleListStore::lookupContentRuleList):

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

        [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
        https://bugs.webkit.org/show_bug.cgi?id=172098

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
        * WebProcess/Plugins/Netscape/JSNPObject.cpp:

2017-05-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r217014.

        This change caused mac-wk2 LayoutTests to exit early due to
        crashes.

        Reverted changeset:

        "Resource Load Statistics: Grandfather domains for existing
        data records"
        https://bugs.webkit.org/show_bug.cgi?id=172155
        http://trac.webkit.org/changeset/217014

2017-05-17  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Grandfather domains for existing data records
        https://bugs.webkit.org/show_bug.cgi?id=172155
        <rdar://problem/24913532>

        Reviewed by Alex Christensen.

        When WebResourceLoadStatisticsStore starts fresh it needs
        to scan existing website data records and 'grandfather' them to
        allow ample time to capture user interaction.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetGrandfathered):
        (WKResourceLoadStatisticsManagerIsGrandfathered):
        (WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
        (WKResourceLoadStatisticsManagerSetGrandfatheringTime):
            Functions for testing and configuration.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
        (WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
            Added grandfathering configuration.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):
            New function to get all top privately controlled domains that
            have website data.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
            Functions for testing and configuration.
            WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval() changed
            as a result of WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval()
            moving to WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::initializeDataTypesToRemove):
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
            Moved handling of pending removal into WebCore::ResourceLoadStatisticsStore since
            that's where grandfathering happens.
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            Moved registration of write persistent store callback and reading of Cocoa defaults to
            WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver without parameters
            so they are called for platforms without CFNETWORK_STORAGE_PARTITIONING.
            Now includes registering WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
            as handler for grandfathering since it involves reading of the website data store.
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval): Deleted.
            Now happens in WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):
            New function to ask a WebsiteDataRecord for its top privately controlled domain.
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):
            New function to get all top privately controlled domains that
            have website data.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-05-17  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Allow access to additional IOHID user class
        https://bugs.webkit.org/show_bug.cgi?id=172198
        <rdar://problem/31967635>

        Reviewed by Alex Christensen.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

        Add more assertions in BackgroundProcessResponsivenessTimer
        https://bugs.webkit.org/show_bug.cgi?id=172239

        Reviewed by Andreas Kling.

        Add more assertions in BackgroundProcessResponsivenessTimer to help figure out the
        source of <rdar://problem/32251578>.

        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::updateState):
        (WebKit::BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck):

2017-05-17  Youenn Fablet  <youenn@apple.com>

        No need to copy origin references in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo
        https://bugs.webkit.org/show_bug.cgi?id=172242

        Reviewed by Eric Carlson.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):

2017-05-17  Youenn Fablet  <youenn@apple.com>

        Move-related refactoring on UserMediaPermissionRequestProxy
        https://bugs.webkit.org/show_bug.cgi?id=172195

        Reviewed by Alex Christensen.

        Moving vectors of strings instead of passing as const ref so that we do not copy them.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):

2017-05-17  Andy Estes  <aestes@apple.com>

        REGRESSION (r215480): PKPaymentAuthorizationStatusFailure sent to PassKit in completeShippingContactSelection() even when there are no errors
        https://bugs.webkit.org/show_bug.cgi?id=172227
        <rdar://problem/31978432>

        Reviewed by Alexey Proskuryakov.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentAuthorizationStatus): If there is an update with no errors, we should
        return PKPaymentAuthorizationStatusSuccess instead of PKPaymentAuthorizationStatusFailure.

2017-05-17  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r216974.

        Revision caused consistent timeouts on all platforms.

        Reverted changeset:

        "Add a RuntimeEnabledFeature for display: contents, defaulted
        to false."
        https://bugs.webkit.org/show_bug.cgi?id=171984
        http://trac.webkit.org/changeset/216974

2017-05-17  Alex Christensen  <achristensen@webkit.org>

        Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should affect cookies used
        https://bugs.webkit.org/show_bug.cgi?id=171987

        Reviewed by Brady Eidson.

        When putting cookies in a WKHTTPCookieStore that hasn't been associated with a WKProcessPool yet, there is no
        NetworkProcess into which to put the cookies.  In such a case, we should store these cookies in the WebsiteDataStore
        until there is a NetworkProcess.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::ensurePrivateBrowsingSession):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::~WebsiteDataStoreParameters):
        (WebKit::WebsiteDataStoreParameters::encode):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters): Deleted.
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::pendingCookies):
        (WebKit::WebsiteDataStore::addPendingCookie):
        (WebKit::WebsiteDataStore::removePendingCookie):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-05-17  Emilio Cobos Álvarez  <ecobos@igalia.com>

        Add a RuntimeEnabledFeature for display: contents, defaulted to false.
        https://bugs.webkit.org/show_bug.cgi?id=171984

        Reviewed by Antti Koivisto.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetDisplayContentsEnabled):
        (WKPreferencesGetDisplayContentsEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-05-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix the build with MEDIA_STREAM disabled after r216952.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

2017-05-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted
        https://bugs.webkit.org/show_bug.cgi?id=172167

        Reviewed by Michael Catanzaro.

        This is still happening, even after r216182, less often but still happens. There are two conditions in which
        this can happen:

         - Again in force repaint. r216182 fixed the case of force repaint called when update state is completed, but it
           can also crash if update state is inProgress or PendingAfterCompletion when m_coordinateUpdateCompletionWithClient
           is true.
         - When the threaded compositor is invalidated right after renderLayerTree() starts, but before it finishes.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::invalidate): Invalidate the refresh monitor right after stopping updates in the
        compositing run loop to ensure no more updates are scheduled.
        (WebKit::ThreadedCompositor::renderLayerTree): Check the scene is still active before calling sceneUpdateFinished().
        (WebKit::ThreadedCompositor::updateSceneState): Do not update m_coordinateUpdateCompletionWithClient when in
        force repaint.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback): Return early if the monitor has been invalidated.

2017-05-16  Sam Weinig  <sam@webkit.org>

        Bring Notification.idl up to spec
        https://bugs.webkit.org/show_bug.cgi?id=172156

        Reviewed by Chris Dumez.

        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/API/C/WKNotification.cpp:
        (WKNotificationCopyDir):
        * UIProcess/Notifications/WebNotification.cpp:
        (WebKit::WebNotification::WebNotification):
        * UIProcess/Notifications/WebNotification.h:
        (WebKit::WebNotification::create):
        (WebKit::WebNotification::dir):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::show):
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::showNotification):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
        (WebKit::NotificationPermissionRequestManager::startRequest):
        (WebKit::NotificationPermissionRequestManager::permissionLevel):
        (WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision):
        * WebProcess/Notifications/WebNotificationManager.cpp:
        (WebKit::WebNotificationManager::policyForOrigin):
        (WebKit::WebNotificationManager::show):
        * WebProcess/WebCoreSupport/WebNotificationClient.cpp:
        (WebKit::WebNotificationClient::checkPermission):
        * WebProcess/WebCoreSupport/WebNotificationClient.h:
        Update for enum vs String usage.

2017-05-16  Youenn Fablet  <youenn@apple.com>

        Modernize WebKit2 getUserMedia passing of parameters
        https://bugs.webkit.org/show_bug.cgi?id=172161

        Reviewed by Eric Carlson.

        Passing SecurityOrigin as SecurityOriginData through IPC instead of Strings.
        Making more use of Ref<> instead of RefPtr<>.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy):
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
        * UIProcess/UserMediaPermissionCheckProxy.h:
        (WebKit::UserMediaPermissionCheckProxy::create):
        (WebKit::UserMediaPermissionCheckProxy::userMediaDocumentSecurityOrigin):
        (WebKit::UserMediaPermissionCheckProxy::topLevelDocumentSecurityOrigin):
        (WebKit::UserMediaPermissionCheckProxy::completionHandler):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::FrameAuthorizationState::FrameAuthorizationState):
        (WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual):
        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
        (WebKit::WebPageProxy::requestNotificationPermission):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
        (WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):

2017-05-16  David Kilzer  <ddkilzer@apple.com>

        Unused lambdas in UserMediaPermissionRequestManagerProxy.cpp
        <https://webkit.org/b/172179>

        Reviewed by Eric Carlson.

        Fixes unused lambda warnings found with newer clang:

            Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:309:46: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
                auto validateConstraintsHandler = [this, userMediaID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), audioConstraints = WebCore::MediaConstraints(audioConstraints), videoConstraints = WebCore::MediaConstraints(videoConstraints)](String&& deviceIdentifierHashSalt) mutable {
                                                         ^
            Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:41: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
                auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {
                                                    ^
            Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:54: error: lambda capture 'frameID' is not used [-Werror,-Wunused-lambda-capture]
                auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {
                                                                 ^
            Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:362:37: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
                auto completionHandler = [this, userMediaID](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) {
                                                ^

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        - Remove unused lambdas.

2017-05-16  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Support Flash Player DRM features
        https://bugs.webkit.org/show_bug.cgi?id=172157
        <rdar://problem/31889297>

        Reviewed by Dean Jackson.

        Relax the IOKit whitelist to support DRM features needed by
        some websites.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

2017-05-16  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Adopt a whitelist for XPC services
        https://bugs.webkit.org/show_bug.cgi?id=172151
        <rdar://problem/31916325>

        Reviewed by Alex Christensen.

        * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-05-16  Timothy Horton  <timothy_horton@apple.com>

        Make it possible to adjust which edges are affected by safe area insets
        https://bugs.webkit.org/show_bug.cgi?id=172149
        <rdar://problem/31564729>

        Reviewed by Beth Dakin.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _computedContentInset]):
        (-[WKWebView _obscuredInsetEdgesAffectedBySafeArea]):
        (-[WKWebView _setObscuredInsetEdgesAffectedBySafeArea:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Add SPI to adjust which edges are taken into account, and adjust the default.

2017-05-16  Zan Dobersek  <zdobersek@igalia.com>

        [GLib] Use RunLoopSourcePriority::RunLoopDispatcher as the GSocketMonitor's GSource priority
        https://bugs.webkit.org/show_bug.cgi?id=172160

        Reviewed by Carlos Garcia Campos.

        * Platform/IPC/glib/GSocketMonitor.cpp:
        (IPC::GSocketMonitor::start): Explicitly set the priority for the GSocketMonitor's
        GSource object to RunLoopSourcePriority::RunLoopDispatcher, equating it to the
        priority that's used in RunLoop for dispatches of the queued functions.

2017-05-16  Zan Dobersek  <zdobersek@igalia.com>

        [GLib] Name more GSource-based RunLoop::Timers
        https://bugs.webkit.org/show_bug.cgi?id=172158

        Reviewed by Carlos Garcia Campos.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::CompositingRunLoop):
        Specify 'CompositingRunLoop' as the name of this GSource-based RunLoop::Timer.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor):
        Specify 'ThreadedDisplayRefreshMonitor' as the name of this GSource-based RunLoop::Timer.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
        Specify 'CoordinatedLayerTreeHost' as the name of this GSource-based RunLoop::Timer.

2017-05-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Revert change committed by mistakle in r216922.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::forceRepaint):

2017-05-16  Youenn Fablet  <youenn@apple.com>

        Remove MediaConstraintsData and MediaConstraintsImpl
        https://bugs.webkit.org/show_bug.cgi?id=172132

        Reviewed by Eric Carlson.

        Removing MediaConstraintsData and MediaConstraintsImpl allows simplifying the code.
        Further simplified the code by making MediaConstraints no longer ref counted and now a struct.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraints>::encode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        (IPC::ArgumentCoder<MediaConstraintsData>::encode): Deleted.
        (IPC::ArgumentCoder<MediaConstraintsData>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::applyConstraints):

2017-05-16  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Remove LATEST_RECORD_VERSION from GnuTLS priority string
        https://bugs.webkit.org/show_bug.cgi?id=172153

        Based on discussion with Nikos in https://bugzilla.gnome.org/show_bug.cgi?id=782218, we
        should remove LATEST_RECORD_VERSION from our GnuTLS priority string. This causes GnuTLS to
        use the latest TLS record version (the record format is separate from the TLS protocol
        version), which we needed a couple years ago (after dropping SSLv3) for maximum
        compatibility with broken web servers. But it's not needed anymore, and is causing new
        compatibility problems with other broken web servers, so let's get rid of it.

        Reviewed by Carlos Garcia Campos.

        * NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:
        (main):
        * WebProcess/EntryPoint/unix/WebProcessMain.cpp:
        (main):

2017-05-15  Andy Estes  <aestes@apple.com>

        Make the application PID available to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=172133

        Reviewed by Andreas Kling.

        Added uiProcessPID to Web and Networking process creation parameters. The UI process
        initializes these to getpid(), and the child processes call WebCore::setPresentingApplicationPID()
        at initialization time.

        This replaces presenterApplicationPid.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::createNewWebProcess):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformInitialize):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::presenterApplicationPid): Deleted.
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2017-05-15  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Do not delete asynchronously decoded frames for large images if their clients are in the viewport
        https://bugs.webkit.org/show_bug.cgi?id=170640

        Reviewed by Simon Fraser.

        Enable the async decoding for large images.

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

2017-05-15  Youenn Fablet  <youenn@apple.com>

        Simplify RealtimeMediaSource data production and state
        https://bugs.webkit.org/show_bug.cgi?id=171999

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::startProducingData):
        (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:

2017-05-15  Brent Fulgham  <bfulgham@apple.com>

        Correct typo (part of r216790).

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: The check-in missed part of a
        regular expression needed to fix the audio playback.

2017-05-15  Jer Noble  <jer.noble@apple.com>

        Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement
        https://bugs.webkit.org/show_bug.cgi?id=172131

        Reviewed by Eric Carlson.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetMediaUserGestureInheritsFromDocument):
        (WKPreferencesGetMediaUserGestureInheritsFromDocument):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-05-15  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS][iOS] Allow Network process to access nsurlstoraged's top level domain data cache 
        https://bugs.webkit.org/show_bug.cgi?id=172128
        <rdar://problem/30871490>

        Reviewed by Alex Christensen.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

2017-05-15  David Kilzer  <ddkilzer@apple.com>

        Update json.hpp to v2.1.1
        <https://webkit.org/b/172085>
        <rdar://problem/32180980>

        Reviewed by Alex Christensen.

        * NetworkProcess/capture/NetworkCaptureEvent.cpp:
        - Define JSON_NOEXCEPTION as 1 to disable exceptions in
          json.hpp.
        (WebKit::NetworkCapture::JSONCoder<String>::encode):
        (WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::encode):
        - Build std::string passing in length to avoid the need for a
          custom basic_json() constructor, and for efficiency.

        * NetworkProcess/capture/json.hpp:
        - Update to v2.1.1 and remove customizations.

2017-05-15  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix.

        Debugging code was accidentally left in the Plugin sandbox profile.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

2017-05-15  Gwang Yoon Hwang  <yoon@igalia.com>

        [WPE] Unreviewed debug build fix
        https://bugs.webkit.org/show_bug.cgi?id=172118

        Unreviewed, remove a dead code accidentally committed in r215259.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        Remove deprecated CompositingRunLoop::isCurrent.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::frameComplete):

2017-05-14  Daewoong Jang  <daewoong.jang@navercorp.com>

        [CoordinatedGraphics] Remove unused files and lines
        https://bugs.webkit.org/show_bug.cgi?id=172080

        Reviewed by Darin Adler.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp: Removed.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h: Removed.
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: Removed.
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.h: Removed.
        * UIProcess/CoordinatedGraphics/WKCoordinatedSceneAPICast.h: Removed.
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.messages.in: Removed.

2017-05-14  Andreas Kling  <akling@apple.com>

        Always reset the assisted node when the main frame commits a new load.
        https://bugs.webkit.org/show_bug.cgi?id=172088

        Reviewed by Antti Koivisto.

        WebPage::m_assistedNode could extend the lifetime of the document it pointed into
        if the main frame was navigated while the assisted node was in one of its subframes.
        The life-supported document wouldn't be reachable from JavaScript but nevertheless
        would consume memory and other resources.

        This patch fixes the issue by always clearing WebPage::m_assistedNode when the main
        frame commits a new load.

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

2017-05-14  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed Mac cmake buildfix after r216690, just for fun.

        * PlatformMac.cmake:

2017-05-14  David Kilzer  <ddkilzer@apple.com>

        Fix unused lambdas in WebKit2
        <https://webkit.org/b/172090>

        Reviewed by Chris Dumez.

        Fixes unused lambda warnings found with newer clang.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::initialize):
        - Use UNUSED_PARAM() to silence unused lambda warning since
          'startTime' is used in Debug builds.

        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        (WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
        - Remove unused 'this' from lambda capture.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
        - Use UNUSED_PARAM() to silence unused lambda warning since
          'taskIdentifier' is used in Debug builds.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
        (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
        - Remove unused 'this' from lambda captures.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchData):
        - Remove unused 'fetchOptions' from lambda capture.
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
        - Remove unused 'this' from lambda capture.

        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::forceRepaintIfNeeded):
        - Remove unused 'this' from lambda capture.

        * WebProcess/cocoa/WebVideoFullscreenManager.mm:
        (WebKit::WebVideoFullscreenManager::didExitFullscreen):
        - Remove unused 'this' from nested lambda captures.

2017-05-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] deviceId constraint doesn't work with getUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=171877
        <rdar://problem/31899730>

        Reviewed by Jer Noble.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
        (IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
        completion handler, frame ID, and security origins.
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
        completion handler because we now sometimes request access info before calling gUM.
        (WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
        * UIProcess/UserMediaPermissionCheckProxy.h:

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
        UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
        (WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
        when origins don't match.
        (WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
        Don't set state for empty UIDs. Pass hash salt to web process.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        The device ID hash salt is now required to validate constraints, so get it first.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
        method used to get the device ID hash salt.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
        to use getUserMediaPermissionInfo.
        (WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
        hash salt parameter.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted): Ditto.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData 
        constructor.

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

        Stop using RefPtr::release()
        https://bugs.webkit.org/show_bug.cgi?id=172074

        Reviewed by Geoffrey Garen.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::create):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::createImageBacking):
        * Shared/cairo/ShareableBitmapCairo.cpp:
        (WebKit::ShareableBitmap::createCairoSurface):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.cpp:
        (WebKit::core):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getContentsAsMHTMLData):

2017-05-12  Chris Dumez  <cdumez@apple.com>

        Drop remaining uses of PassRefPtr in WebKit2/WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=172055

        Reviewed by Alex Christensen.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
        (+[WKWebProcessPlugInScriptWorld normalWorld]):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (contextMenuItems):
        * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:
        (WKBundleScriptWorldNormalWorld):
        * WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
        (webkitScriptWorldCreate):
        * WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
        (WebKit::InjectedBundleCSSStyleDeclarationHandle::getOrCreate):
        * WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::getOrCreate):
        (WebKit::InjectedBundleRangeHandle::create):
        (WebKit::InjectedBundleRangeHandle::coreRange):
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::create):
        (WebKit::InjectedBundle::createWebDataFromUint8Array):
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
        (WebKit::InjectedBundleBackForwardList::itemAtIndex):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
        (WebKit::InjectedBundleBackForwardList::detach):
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
        (WebKit::InjectedBundleBackForwardListItem::create):
        (WebKit::InjectedBundleBackForwardListItem::InjectedBundleBackForwardListItem):
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
        (WebKit::InjectedBundleHitTestResult::nodeHandle):
        (WebKit::InjectedBundleHitTestResult::urlElementHandle):
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
        (WebKit::InjectedBundleNavigationAction::create):
        (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
        (WebKit::InjectedBundleScriptWorld::getOrCreate):
        (WebKit::InjectedBundleScriptWorld::normalWorld):
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::create):
        (WebKit::NetscapePlugin::NetscapePlugin):
        (WebKit::NetscapePlugin::supportsSnapshotting):
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
        (WebKit::PDFPluginAnnotation::create):
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.h:
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
        (WebKit::PDFPluginPasswordField::createAnnotationElement):
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
        (WebKit::PDFPluginTextAnnotation::createAnnotationElement):
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::worldMap):
        (WebKit::WebUserMessageHandlerDescriptorProxy::create):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertImageToBitmap):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addUserScript):
        (WebKit::WebPage::addUserStyleSheet):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::WebPrintOperationGtk::create):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::rangeForPosition):
        (WebKit::rangeAtWordBoundaryForPosition):
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:

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

        Rename WKContentExtension to WKContentRuleList
        https://bugs.webkit.org/show_bug.cgi?id=172053
        <rdar://problem/32141005>

        Reviewed by Geoffrey Garen.

        * Shared/API/APIObject.h:
        * Shared/API/Cocoa/WebKit.h:
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKPageGroupAddUserContentFilter):
        (WKPageGroupRemoveUserContentFilter):
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/WebCompiledContentExtension.cpp: Removed.
        * Shared/WebCompiledContentExtension.h: Removed.
        * Shared/WebCompiledContentExtensionData.cpp: Removed.
        * Shared/WebCompiledContentExtensionData.h: Removed.
        * Shared/WebCompiledContentRuleList.cpp: Copied from Source/WebKit2/Shared/WebCompiledContentExtension.cpp.
        (WebKit::WebCompiledContentRuleList::create):
        (WebKit::WebCompiledContentRuleList::WebCompiledContentRuleList):
        (WebKit::WebCompiledContentRuleList::~WebCompiledContentRuleList):
        (WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain):
        (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode):
        (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecodeLength):
        (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode):
        (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecodeLength):
        (WebKit::WebCompiledContentRuleList::topURLFiltersBytecode):
        (WebKit::WebCompiledContentRuleList::topURLFiltersBytecodeLength):
        (WebKit::WebCompiledContentRuleList::actions):
        (WebKit::WebCompiledContentRuleList::actionsLength):
        (WebKit::WebCompiledContentExtension::create): Deleted.
        (WebKit::WebCompiledContentExtension::WebCompiledContentExtension): Deleted.
        (WebKit::WebCompiledContentExtension::~WebCompiledContentExtension): Deleted.
        (WebKit::WebCompiledContentExtension::conditionsApplyOnlyToDomain): Deleted.
        (WebKit::WebCompiledContentExtension::filtersWithoutConditionsBytecode): Deleted.
        (WebKit::WebCompiledContentExtension::filtersWithoutConditionsBytecodeLength): Deleted.
        (WebKit::WebCompiledContentExtension::filtersWithConditionsBytecode): Deleted.
        (WebKit::WebCompiledContentExtension::filtersWithConditionsBytecodeLength): Deleted.
        (WebKit::WebCompiledContentExtension::topURLFiltersBytecode): Deleted.
        (WebKit::WebCompiledContentExtension::topURLFiltersBytecodeLength): Deleted.
        (WebKit::WebCompiledContentExtension::actions): Deleted.
        (WebKit::WebCompiledContentExtension::actionsLength): Deleted.
        * Shared/WebCompiledContentRuleList.h: Copied from Source/WebKit2/Shared/WebCompiledContentExtension.h.
        * Shared/WebCompiledContentRuleListData.cpp: Copied from Source/WebKit2/Shared/WebCompiledContentExtensionData.cpp.
        (WebKit::WebCompiledContentRuleListData::encode):
        (WebKit::WebCompiledContentRuleListData::decode):
        (WebKit::WebCompiledContentExtensionData::encode): Deleted.
        (WebKit::WebCompiledContentExtensionData::decode): Deleted.
        * Shared/WebCompiledContentRuleListData.h: Copied from Source/WebKit2/Shared/WebCompiledContentExtensionData.h.
        (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
        (WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData): Deleted.
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APIContentExtension.cpp: Removed.
        * UIProcess/API/APIContentExtension.h: Removed.
        * UIProcess/API/APIContentExtensionStore.cpp: Removed.
        * UIProcess/API/APIContentExtensionStore.h: Removed.
        * UIProcess/API/APIContentRuleList.cpp: Copied from Source/WebKit2/UIProcess/API/APIContentExtension.cpp.
        (API::ContentRuleList::ContentRuleList):
        (API::ContentRuleList::~ContentRuleList):
        (API::ContentExtension::ContentExtension): Deleted.
        (API::ContentExtension::~ContentExtension): Deleted.
        * UIProcess/API/APIContentRuleList.h: Copied from Source/WebKit2/UIProcess/API/APIContentExtension.h.
        * UIProcess/API/APIContentRuleListStore.cpp: Copied from Source/WebKit2/UIProcess/API/APIContentExtensionStore.cpp.
        (API::ContentRuleListStore::legacyDefaultStore):
        (API::ContentRuleListStore::nonLegacyDdefaultStore):
        (API::ContentRuleListStore::defaultStore):
        (API::ContentRuleListStore::storeWithPath):
        (API::ContentRuleListStore::ContentRuleListStore):
        (API::ContentRuleListStore::~ContentRuleListStore):
        (API::constructedPathPrefix):
        (API::ContentRuleListMetaData::fileSize):
        (API::encodeContentRuleListMetaData):
        (API::decodeContentRuleListMetaData):
        (API::openAndMapContentRuleList):
        (API::compiledToFile):
        (API::createExtension):
        (API::ContentRuleListStore::lookupContentRuleList):
        (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
        (API::ContentRuleListStore::compileContentRuleList):
        (API::ContentRuleListStore::removeContentRuleList):
        (API::ContentRuleListStore::synchronousRemoveAllContentRuleLists):
        (API::ContentRuleListStore::invalidateContentRuleListVersion):
        (API::ContentRuleListStore::getContentRuleListSource):
        (API::contentRuleListStoreErrorCategory):
        (API::ContentExtensionStore::defaultStore): Deleted.
        (API::ContentExtensionStore::storeWithPath): Deleted.
        (API::ContentExtensionStore::ContentExtensionStore): Deleted.
        (API::ContentExtensionStore::~ContentExtensionStore): Deleted.
        (API::ContentExtensionMetaData::fileSize): Deleted.
        (API::encodeContentExtensionMetaData): Deleted.
        (API::decodeContentExtensionMetaData): Deleted.
        (API::openAndMapContentExtension): Deleted.
        (API::ContentExtensionStore::lookupContentExtension): Deleted.
        (API::ContentExtensionStore::getAvailableContentExtensionIdentifiers): Deleted.
        (API::ContentExtensionStore::compileContentExtension): Deleted.
        (API::ContentExtensionStore::removeContentExtension): Deleted.
        (API::ContentExtensionStore::synchronousRemoveAllContentExtensions): Deleted.
        (API::ContentExtensionStore::invalidateContentExtensionVersion): Deleted.
        (API::ContentExtensionStore::getContentExtensionSource): Deleted.
        (API::contentExtensionStoreErrorCategory): Deleted.
        * UIProcess/API/APIContentRuleListStore.h: Copied from Source/WebKit2/UIProcess/API/APIContentExtensionStore.h.
        (API::make_error_code):
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKPageGroup.cpp:
        * UIProcess/API/C/WKUserContentControllerRef.cpp:
        (WKUserContentControllerAddUserContentFilter):
        (WKUserContentControllerRemoveAllUserContentFilters):
        * UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:
        (WKUserContentExtensionStoreGetTypeID):
        * UIProcess/API/Cocoa/APIUserContentExtensionStoreCocoa.mm:
        (API::ContentRuleListStore::defaultStorePath):
        (API::ContentExtensionStore::defaultStorePath): Deleted.
        * UIProcess/API/Cocoa/WKContentExtension.h: Removed.
        * UIProcess/API/Cocoa/WKContentExtension.mm: Removed.
        * UIProcess/API/Cocoa/WKContentExtensionInternal.h: Removed.
        * UIProcess/API/Cocoa/WKContentExtensionStore.h: Removed.
        * UIProcess/API/Cocoa/WKContentExtensionStore.mm: Removed.
        * UIProcess/API/Cocoa/WKContentExtensionStoreInternal.h: Removed.
        * UIProcess/API/Cocoa/WKContentExtensionStorePrivate.h: Removed.
        * UIProcess/API/Cocoa/WKContentRuleList.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtension.h.
        * UIProcess/API/Cocoa/WKContentRuleList.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtension.mm.
        (-[WKContentRuleList dealloc]):
        (-[WKContentRuleList _apiObject]):
        (-[WKContentRuleList identifier]):
        (-[WKContentExtension dealloc]): Deleted.
        (-[WKContentExtension _apiObject]): Deleted.
        (-[WKContentExtension identifier]): Deleted.
        * UIProcess/API/Cocoa/WKContentRuleListInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionInternal.h.
        (WebKit::wrapper):
        * UIProcess/API/Cocoa/WKContentRuleListStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.h.
        * UIProcess/API/Cocoa/WKContentRuleListStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.mm.
        (toWKErrorCode):
        (-[WKContentRuleListStore dealloc]):
        (+[WKContentRuleListStore defaultStore]):
        (+[WKContentRuleListStore storeWithURL:]):
        (-[WKContentRuleListStore compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
        (-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:releasesArgument:]):
        (-[WKContentRuleListStore lookUpContentRuleListForIdentifier:completionHandler:]):
        (-[WKContentRuleListStore getAvailableContentRuleListIdentifiers:]):
        (-[WKContentRuleListStore removeContentRuleListForIdentifier:completionHandler:]):
        (-[WKContentRuleListStore _apiObject]):
        (-[WKContentRuleListStore _removeAllContentRuleLists]):
        (-[WKContentRuleListStore _invalidateContentRuleListVersionForIdentifier:]):
        (-[WKContentRuleListStore _getContentRuleListSourceForIdentifier:completionHandler:]):
        (-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
        (-[WKContentExtensionStore dealloc]): Deleted.
        (+[WKContentExtensionStore defaultStore]): Deleted.
        (+[WKContentExtensionStore storeWithURL:]): Deleted.
        (-[WKContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): Deleted.
        (-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:releasesArgument:]): Deleted.
        (-[WKContentExtensionStore lookUpContentExtensionForIdentifier:completionHandler:]): Deleted.
        (-[WKContentExtensionStore getAvailableContentExtensionIdentifiers:]): Deleted.
        (-[WKContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]): Deleted.
        (-[WKContentExtensionStore _apiObject]): Deleted.
        (-[WKContentExtensionStore _removeAllContentExtensions]): Deleted.
        (-[WKContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]): Deleted.
        (-[WKContentExtensionStore _getContentExtensionSourceForIdentifier:completionHandler:]): Deleted.
        (-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): Deleted.
        * UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStoreInternal.h.
        (WebKit::wrapper):
        * UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStorePrivate.h.
        * UIProcess/API/Cocoa/WKError.h:
        * UIProcess/API/Cocoa/WKError.mm:
        (localizedDescriptionForErrorCode):
        * UIProcess/API/Cocoa/WKUserContentController.h:
        * UIProcess/API/Cocoa/WKUserContentController.mm:
        (-[WKUserContentController addContentRuleList:]):
        (-[WKUserContentController removeContentRuleList:]):
        (-[WKUserContentController removeAllContentRuleLists]):
        (-[WKUserContentController _addUserContentFilter:]):
        (-[WKUserContentController _removeUserContentFilter:]):
        (-[WKUserContentController _removeAllUserContentFilters]):
        (-[WKUserContentController addContentExtension:]): Deleted.
        (-[WKUserContentController removeContentExtension:]): Deleted.
        (-[WKUserContentController removeAllContentExtensions]): Deleted.
        * UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:
        (toUserContentRuleListStoreError):
        (+[_WKUserContentExtensionStore defaultStore]):
        (+[_WKUserContentExtensionStore storeWithURL:]):
        (-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
        (-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):
        (-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):
        (-[_WKUserContentExtensionStore _apiObject]):
        (-[_WKUserContentExtensionStore _removeAllContentExtensions]):
        (-[_WKUserContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]):
        (-[_WKUserContentExtensionStore _initWithWKContentRuleListStore:]):
        (toUserContentExtensionStoreError): Deleted.
        (-[_WKUserContentExtensionStore _initWithWKContentExtensionStore:]): Deleted.
        * UIProcess/API/Cocoa/_WKUserContentExtensionStoreInternal.h:
        * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilter.mm:
        (-[_WKUserContentFilter _apiObject]):
        (-[_WKUserContentFilter _initWithWKContentRuleList:]):
        (-[_WKUserContentFilter _initWithWKContentExtension:]): Deleted.
        * UIProcess/API/Cocoa/_WKUserContentFilterInternal.h:
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addProcess):
        (WebKit::WebUserContentControllerProxy::addContentRuleList):
        (WebKit::WebUserContentControllerProxy::removeContentRuleList):
        (WebKit::WebUserContentControllerProxy::removeAllContentRuleLists):
        (WebKit::WebUserContentControllerProxy::addContentExtension): Deleted.
        (WebKit::WebUserContentControllerProxy::removeContentExtension): Deleted.
        (WebKit::WebUserContentControllerProxy::removeAllContentExtensions): Deleted.
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * UIProcess/WebPageGroup.cpp:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addContentRuleLists):
        (WebKit::WebUserContentController::removeContentRuleList):
        (WebKit::WebUserContentController::removeAllContentRuleLists):
        (WebKit::WebUserContentController::addContentExtensions): Deleted.
        (WebKit::WebUserContentController::removeContentExtension): Deleted.
        (WebKit::WebUserContentController::removeAllContentExtensions): Deleted.
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/UserContent/WebUserContentController.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_backgroundCPULimit):

2017-05-12  Jeremy Jones  <jeremyj@apple.com>

        Add objc version of WK2 UIPageClient setHasVideoInPictureInPicture and rename it to hasVideoInPictureInPictureDidChange.
        https://bugs.webkit.org/show_bug.cgi?id=172048
        rdar://problem/32163054

        Reviewed by Simon Fraser.

        Rename UIPageClient setHasVideoInPictureInPicture to hasVideoInPictureInPictureDidChange.
        Add missing _allowsPictureInPictureMediaPlayback property to WKPreferences.
        Add -hasVideoInPictureInPictureDidChange to UIDelegate.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::hasVideoInPictureInPictureDidChange):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _allowsPictureInPictureMediaPlayback]):
        (-[WKPreferences _setAllowsPictureInPictureMediaPlayback:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::hasVideoInPictureInPictureDidChange):
        * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
        (WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
        (WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):

2017-05-12  David Quesada  <david_quesada@apple.com>

        Add SPI for overriding WKWebView's clipping behavior for _visibleContentRect
        https://bugs.webkit.org/show_bug.cgi?id=172000
        rdar://problem/32144756

        Reviewed by Simon Fraser.

        Extract -[WKWebView _visibleContentRect]'s use of -_scroller to a new property
        _enclosingViewForExposedRectComputation, which is declared in the private
        header for subclasses to implement custom logic for determining the view to
        clip rendering to.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _enclosingViewForExposedRectComputation]):
        (-[WKWebView _visibleRectInEnclosingView:]):
        (-[WKWebView _visibleContentRect]):
        (-[WKWebView _visibleRectInEnclosingScrollView:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2017-05-12  Chris Dumez  <cdumez@apple.com>

        Stop using PassRefPtr under WebKit2/UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=172029

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _takeViewSnapshot]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::registerEditCommand):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
        (getIconSurfaceSynchronously):
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::registerEditCommand):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::registerEditCommand):
        * UIProcess/DefaultUndoController.cpp:
        (WebKit::DefaultUndoController::registerEditCommand):
        * UIProcess/DefaultUndoController.h:
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::create):
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
        (WebKit::GeolocationPermissionRequestManagerProxy::createRequest):
        * UIProcess/GeolocationPermissionRequestManagerProxy.h:
        * UIProcess/InspectorServer/HTTPRequest.cpp:
        (WebKit::HTTPRequest::parseHTTPRequestFromBuffer):
        * UIProcess/InspectorServer/HTTPRequest.h:
        * UIProcess/InspectorServer/WebInspectorServer.cpp:
        (WebKit::WebInspectorServer::didReceiveUnrecognizedHTTPRequest):
        (WebKit::WebInspectorServer::didReceiveWebSocketUpgradeHTTPRequest):
        (WebKit::WebInspectorServer::didEstablishWebSocketConnection):
        * UIProcess/InspectorServer/WebInspectorServer.h:
        * UIProcess/InspectorServer/WebSocketServerClient.h:
        (WebKit::WebSocketServerClient::didReceiveUnrecognizedHTTPRequest):
        (WebKit::WebSocketServerClient::didReceiveWebSocketUpgradeHTTPRequest):
        (WebKit::WebSocketServerClient::didEstablishWebSocketConnection):
        * UIProcess/InspectorServer/WebSocketServerConnection.cpp:
        (WebKit::WebSocketServerConnection::readHTTPMessage):
        (WebKit::WebSocketServerConnection::upgradeToWebSocketServerConnection):
        * UIProcess/InspectorServer/WebSocketServerConnection.h:
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
        (WebKit::NotificationPermissionRequestManagerProxy::createRequest):
        * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h:
        * UIProcess/Notifications/WebNotificationProvider.cpp:
        (WebKit::WebNotificationProvider::notificationPermissions):
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/PageClient.h:
        * UIProcess/Storage/LocalStorageDatabase.cpp:
        * UIProcess/WebContextMenuListenerProxy.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::unapply):
        (WebKit::WebEditCommandProxy::reapply):
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebGrammarDetail.cpp:
        (WebKit::WebGrammarDetail::create):
        * UIProcess/WebGrammarDetail.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::ExceededDatabaseQuotaRecords::createRecord):
        (WebKit::WebPageProxy::registerEditCommand):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::reachedApplicationCacheOriginQuota):
        (WebKit::WebPageProxy::takeViewSnapshot):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::plugInAutoStartOriginHashes):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (-[WKEditCommandObjC initWithWebEditCommandProxy:]):
        (WebKit::PageClientImpl::registerEditCommand):
        (WebKit::PageClientImpl::saveImageToLibrary):
        (WebKit::PageClientImpl::setDragImage):
        (WebKit::PageClientImpl::takeViewSnapshot):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKWebAllowDenyPolicyListener initWithPermissionRequestProxy:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::saveImageToLibrary):
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::registerEditCommand):
        (WebKit::PageClientImpl::setDragImage):
        (WebKit::PageClientImpl::setPromisedDataForImage):
        (WebKit::PageClientImpl::takeViewSnapshot):
        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _webHitTestResult]):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setDragImage):
        (WebKit::WebPageProxy::setPromisedDataForImage):
        * WebProcess/IconDatabase/WebIconDatabaseProxy.h:

2017-05-12  Jeremy Jones  <jeremyj@apple.com>

        Add UIClient callback for when picture-in-picture is activated.
        https://bugs.webkit.org/show_bug.cgi?id=172023

        Reviewed by Simon Fraser.

        Add WKUIPageClientV10 with setHasVideoInPictureInPicture.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::setHasVideoInPictureInPicture):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
        (WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
        (WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):

2017-05-12  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r213564): Flash audio playback failures
        https://bugs.webkit.org/show_bug.cgi?id=171876
        <rdar://problem/32082745>

        Reviewed by Alexey Proskuryakov.

        The IOKit property filters added in r213564 need to be expanded to support
        some Flash features.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

2017-05-12  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Add a mach-lookup exception for 'com.apple.analyticsd'
        https://bugs.webkit.org/show_bug.cgi?id=172040
        <rdar://problem/31765514>

        Reviewed by Alexey Proskuryakov.

        * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-05-12  Simon Fraser  <simon.fraser@apple.com>

        Add some logging for layer tree commits, and resize and orientation change events
        https://bugs.webkit.org/show_bug.cgi?id=172041

        Reviewed by Tim Horton.

        Add some logging that's useful during rotation investigations.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _didCommitLayerTree:]):

2017-05-12  Andy Estes  <aestes@apple.com>

        [Cocoa] Stop setting a status on PKPaymentRequestShippingContactUpdate when there are errors
        https://bugs.webkit.org/show_bug.cgi?id=172036
        <rdar://problem/31587957>

        Reviewed by Anders Carlsson.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):

2017-05-12  Chris Dumez  <cdumez@apple.com>

        Stop using PassRefPtr under WebKit2/Shared
        https://bugs.webkit.org/show_bug.cgi?id=172017

        Reviewed by Antti Koivisto.

        * Shared/API/APIDictionary.cpp:
        (API::Dictionary::add):
        (API::Dictionary::set):
        * Shared/API/APIDictionary.h:
        * Shared/API/APISecurityOrigin.h:
        (API::SecurityOrigin::createFromString):
        (API::SecurityOrigin::create):
        (API::SecurityOrigin::securityOrigin):
        (API::SecurityOrigin::SecurityOrigin):
        * Shared/API/APISerializedScriptValue.h:
        (API::SerializedScriptValue::create):
        (API::SerializedScriptValue::SerializedScriptValue):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::ProxyingRefPtr::ProxyingRefPtr):
        * Shared/APIWebArchiveResource.h:
        * Shared/APIWebArchiveResource.mm:
        (API::WebArchiveResource::create):
        (API::WebArchiveResource::WebArchiveResource):
        * Shared/AsyncRequest.h:
        (WebKit::AsyncRequestMap::add):
        * Shared/BlobDataFileReferenceWithSandboxExtension.cpp:
        (WebKit::BlobDataFileReferenceWithSandboxExtension::BlobDataFileReferenceWithSandboxExtension):
        * Shared/BlobDataFileReferenceWithSandboxExtension.h:
        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::setBackBuffer):
        (WebKit::CoordinatedBackingStore::updateTile):
        * Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::createUpdateAtlas):
        (WebKit::CoordinatedGraphicsScene::updateImageBacking):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::getOrCreate):
        * Shared/Plugins/Netscape/NetscapePluginModule.h:
        * Shared/VisitedLinkTable.cpp:
        (WebKit::VisitedLinkTable::setSharedMemory):
        * Shared/VisitedLinkTable.h:
        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::setSnapshot):
        * Shared/WebContextMenuItem.cpp:
        (WebKit::WebContextMenuItem::create):
        * Shared/WebContextMenuItem.h:
        * Shared/WebGeolocationPosition.h:
        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::create):
        (WebKit::WebRenderLayer::createArrayFromLayerList):
        (WebKit::WebRenderLayer::WebRenderLayer):
        * Shared/WebRenderLayer.h:
        * Shared/WebRenderObject.cpp:
        (WebKit::WebRenderObject::create):
        (WebKit::WebRenderObject::WebRenderObject):
        * Shared/WebRenderObject.h:
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::resizeTable):
        * WebProcess/WebPage/VisitedLinkTableController.cpp:
        (WebKit::VisitedLinkTableController::setVisitedLinkTable):

2017-05-11  Brady Eidson  <beidson@apple.com>

        [WKWebsiteDataStore removeDataOfTypes:...] doesn't work for IndexedDB if the data store has a custom IDB path.
        <rdar://problem/30612463> and https://bugs.webkit.org/show_bug.cgi?id=171994

        Reviewed by Andy Estes.
        Informal review by Maureen Daum.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::deleteWebsiteData): Instead of accessing the m_idbServers set directly, make
          the method call that creates the server on demand.
        (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): Ditto.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureDatabaseProcessAndWebsiteDataStore): Not only create the DatabaseProcess if necessary,
          but also notify it about the passed-in WebsiteDataStore.
        (WebKit::WebProcessPool::getDatabaseProcessConnection):
        (WebKit::WebProcessPool::ensureDatabaseProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToDatabaseProcessRelaunchingIfNecessary):

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchData):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::databaseProcessParameters):

2017-05-11  Dean Jackson  <dino@apple.com>

        Modern Media Controls shouldn't be an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=172004
        <rdar://problem/32146522>

        Reviewed by Simon Fraser.

        This is either always on or always off, so shouldn't
        show up in an Experimental Features menu.

        * Shared/WebPreferencesDefinitions.h: Move ModernMediaControlsEnabled
        to a normal preference.

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

        Mail spins launching spell checker when typing
        https://bugs.webkit.org/show_bug.cgi?id=171986
        <rdar://problem/26305327>

        Reviewed by Beth Dakin.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setEditable:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::didBecomeEditable):
        (WebKit::WebViewImpl::startObservingFontPanel): Deleted.
        Asynchronously pre-warm the spell checker when a WKWebView becomes editable.

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

        Stop using PassRefPtr in platform/graphics
        https://bugs.webkit.org/show_bug.cgi?id=171977

        Reviewed by Alex Christensen.

        Build fix.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded):
        (WebKit::CoordinatedGraphicsScene::removeBackingStoreIfNeeded):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<Cursor>::decode):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::createImageBackingIfNeeded):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayer):
        (WebKit::GraphicsLayerCARemote::createPlatformCAAnimation):
        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:
        * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
        (WebKit::PlatformCAAnimationRemote::copy):

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

        Data loss when saving a PDF form where only radio buttons/checkboxes were modified
        https://bugs.webkit.org/show_bug.cgi?id=171991
        <rdar://problem/32115945>

        Reviewed by Andy Estes.

        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFLayerControllerDelegate didChangeAnnotationState]):
        Mark the PDF as dirty (so we re-encode it when asked to save) if annotations
        that only PDFKit knows about change.

2017-05-11  Joseph Pecoraro  <pecoraro@apple.com>

        Remove Vibration API
        https://bugs.webkit.org/show_bug.cgi?id=171766

        Rubber-stamped by Alexey Proskuryakov.

        * CMakeLists.txt:
        * Shared/API/APIObject.h:
        * Shared/API/c/WKBase.h:
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetVibration): Deleted.
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/C/WKVibration.cpp: Removed.
        * UIProcess/API/C/WKVibration.h: Removed.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_weakPtrFactory):
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::vibration): Deleted.
        * UIProcess/WebVibrationProvider.cpp: Removed.
        * UIProcess/WebVibrationProvider.h: Removed.
        * UIProcess/WebVibrationProxy.cpp: Removed.
        * UIProcess/WebVibrationProxy.h: Removed.
        * UIProcess/WebVibrationProxy.messages.in: Removed.
        * WebProcess/WebCoreSupport/WebVibrationClient.cpp: Removed.
        * WebProcess/WebCoreSupport/WebVibrationClient.h: Removed.
        * WebProcess/WebPage/WebPage.cpp:

2017-05-11  Andy Estes  <aestes@apple.com>

        Fix a spelling mistake in ApplePayErrorCode
        https://bugs.webkit.org/show_bug.cgi?id=171981
        <rdar://problem/32136567>

        Reviewed by Beth Dakin.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentErrorCode):
        (WebKit::toPKPaymentAuthorizationStatus):

2017-05-11  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Enable configuration through preferences
        https://bugs.webkit.org/show_bug.cgi?id=171949
        <rdar://problem/31894518>

        Reviewed by Alex Christensen.

        * Shared/WebPreferencesDefinitions.h:
            Added ResourceLoadStatisticsTimeToLiveUserInteraction,
            ResourceLoadStatisticsTimeToLiveCookiePartitionFree, and
            ResourceLoadStatisticsReducedTimestampResolution.
        * UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm: Added.
        (WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            Now calls WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded().
        * WebKit2.xcodeproj/project.pbxproj:

2017-05-11  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] Remove notifications guards from GTK API layer
        https://bugs.webkit.org/show_bug.cgi?id=170014

        Reviewed by Michael Catanzaro.

        ENABLE_NOTIFICATIONS in the GTK port is a private option and
        disabling it is unsupported, hence remove its guards from the GTK API
        layer.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):

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

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.2 release.

        * gtk/NEWS: Add release notes for 2.17.2.

2017-05-11  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] JavaScript prompt uses title of page to be loaded rather than title of current page
        https://bugs.webkit.org/show_bug.cgi?id=152690

        Reviewed by Michael Catanzaro.

        webkit_web_view_get_uri() returns the page to be loaded, use
        internal api for this.
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewCreateJavaScriptDialog):

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

        Null deref in WebPage::dictionaryPopupInfoForRange
        https://bugs.webkit.org/show_bug.cgi?id=171959
        <rdar://problem/20886282>

        Reviewed by Beth Dakin.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        Speculative fix for non-reproducible crash when the startContainer of
        the range is in an anonymous node.

2017-05-09  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebProcessCreationParameters.cpp:
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        * WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
        * WebProcess/Notifications/NotificationPermissionRequestManager.h:
        * WebProcess/Notifications/WebNotificationManager.cpp:
        * WebProcess/Notifications/WebNotificationManager.h:
        * WebProcess/WebCoreSupport/WebNotificationClient.cpp:
        * WebProcess/WebCoreSupport/WebNotificationClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebProcess.cpp:
        Remove legacy notification specific code.

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

        Add an experimental feature flag for viewport-fit
        https://bugs.webkit.org/show_bug.cgi?id=171948
        <rdar://problem/31995518>

        Reviewed by Simon Fraser.

        * Shared/WebPreferencesDefinitions.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        Add an experimental feature flag.

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

        Include headers in WebKit.h
        https://bugs.webkit.org/show_bug.cgi?id=171943

        Reviewed by Dan Bernstein.

        * Shared/API/Cocoa/WebKit.h:

2017-05-10  Timothy Horton  <timothy_horton@apple.com>

        Disable block selection for dynamic selection granularity
        https://bugs.webkit.org/show_bug.cgi?id=171908
        <rdar://problem/32098024>

        Reviewed by Enrica Casucci.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _allowsBlockSelection]):
        (-[WKWebViewConfiguration _setAllowsBlockSelection:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Add a private configuration parameter to re-enable block selection.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _allowsBlockSelection]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::allowsBlockSelection):
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        Plumb allowsBlockSelection through from WKWebViewConfiguration to WebPage.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView useSelectionAssistantWithGranularity:]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _stopAssistingKeyboard]):
        (toUIWebSelectionMode): Deleted.
        (-[WKContentView useSelectionAssistantWithMode:]): Deleted.
        Stop needlessly converting to UIWebSelectionMode.
        
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::shouldSwitchToBlockModeForHandle):
        Don't switch to block selection unless allowsBlockSelection is set.

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

        Add an experimental feature flag for constant properties
        https://bugs.webkit.org/show_bug.cgi?id=171913
        <rdar://problem/31995518>

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferencesDefinitions.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):
        Add an experimental feature flag.

2017-05-09  Dean Jackson  <dino@apple.com>

        Disable WebGL2 by default
        https://bugs.webkit.org/show_bug.cgi?id=171894
        <rdar://problem/32089917>

        Reviewed by Tim Horton.

        Some WASM and WebGL2 content is failing because it
        detects our WebGL2RenderingContext, but doesn't realise
        that we don't implement enough of it to be useful.

        * Shared/WebPreferencesDefinitions.h:

2017-05-10  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r216563.

        Revision caused 2 api failures

        Reverted changeset:

        "[MediaStream] deviceId constraint doesn't work with
        getUserMedia"
        https://bugs.webkit.org/show_bug.cgi?id=171877
        http://trac.webkit.org/changeset/216563

2017-05-10  Claudio Saavedra  <csaavedra@igalia.com>

        [GTK] HTTP authentication dialog should focus on first input field
        https://bugs.webkit.org/show_bug.cgi?id=151349

        Reviewed by Michael Catanzaro.

        Setting focus on a widget before it's mapped does nothing. Move
        the call to the right place.

        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        (webkitAuthenticationDialogInitialize):
        (webkitAuthenticationDialogMap):

2017-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] -Wmissing-field-initializers triggered by RemoteInspectorServer.cpp:128
        https://bugs.webkit.org/show_bug.cgi?id=171273

        Reviewed by Carlos Garcia Campos.

        * UIProcess/glib/RemoteInspectorClient.cpp:
        (WebKit::RemoteInspectorClient::RemoteInspectorClient):

2017-05-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] deviceId constraint doesn't work with getUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=171877
        <rdar://problem/31899730>

        Reviewed by Jer Noble.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
        (IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
        completion handler, frame ID, and security origins.
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
        completion handler because we now sometimes request access info before calling gUM.
        (WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
        * UIProcess/UserMediaPermissionCheckProxy.h:

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
        UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
        (WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
        when origins don't match.
        (WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
        Don't set state for empty UIDs. Pass hash salt to web process.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        The device ID hash salt is now required to validate constraints, so get it first.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
        method used to get the device ID hash salt.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
        to use getUserMediaPermissionInfo.
        (WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
        hash salt parameter.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted): Ditto.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData 
        constructor.

2017-05-09  Alex Christensen  <achristensen@webkit.org>

        Buffer media in NetworkProcess to reduce IPC overhead
        https://bugs.webkit.org/show_bug.cgi?id=171834
        <rdar://problem/31485485>

        Reviewed by Jer Noble.

        I have measured a significant CPU usage reduction when buffering media data in the NetworkProcess,
        especially on arm64 processors.  Buffering data in the NetworkProcess introduces no additional data
        copies after r215686, and it reduces the number of messages sent from the NetworkProcess to the WebProcess,
        each of which must also be forwarded to mediaserverd by AVFoundation.  This reduces the number of messages
        from thousands per second to a maximum of 20 per second.  This adds 1/20 second additional latency in
        media loading, which will probably not be noticed by most users.  This also adds the possibility of large
        allocations when decoding IPC messages in the WebProcess, and if that becomes the source of crashes we can
        add a maximum buffered amount in addition to a maximum buffered time, but we are likely not to receive
        so much data in 1/20 second to have problems allocating the buffer.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):
        Buffer data in the NetworkProcess for up to 50ms before sending it to the WebProcess in one message.
        This value is used in NetworkResourceLoader::didReceiveBuffer to append to m_bufferedData instead of
        sending the small chunks immediately.

2017-05-09  Commit Queue  <commit-queue@webkit.org>

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

        Caused a test failure (Requested by eric_carlson on #webkit).

        Reverted changeset:

        "[MediaStream] deviceId constraint doesn't work with
        getUserMedia"
        https://bugs.webkit.org/show_bug.cgi?id=171877
        http://trac.webkit.org/changeset/216545

2017-05-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] deviceId constraint doesn't work with getUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=171877
        <rdar://problem/31899730>

        Reviewed by Jer Noble.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
        (IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
        completion handler, frame ID, and security origins.
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
        completion handler because we now sometimes request access info before calling gUM.
        (WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
        * UIProcess/UserMediaPermissionCheckProxy.h:

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
        UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
        (WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
        when origins don't match.
        (WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
        Don't set state for empty UIDs. Pass hash salt to web process.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        The device ID hash salt is now required to validate constraints, so get it first.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
        method used to get the device ID hash salt.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
        to use getUserMediaPermissionInfo.
        (WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
        hash salt parameter.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted): Ditto.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData 
        constructor.

2017-05-10  Dean Jackson  <dino@apple.com>

        Restrict SVG filters to accessible security origins
        https://bugs.webkit.org/show_bug.cgi?id=118689
        <rdar://problem/27362159>

        Reviewed by Brent Fulgham.

        Update parameter lists.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::paint):
        * WebProcess/Plugins/PluginView.h:

2017-05-09  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [Coordinated Graphics] Debug Visuals don't hide
        https://bugs.webkit.org/show_bug.cgi?id=162704

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        (IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::encode):
        (IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::decode):
        (IPC::ArgumentCoder<DebugVisuals>::encode):
        (IPC::ArgumentCoder<DebugVisuals>::decode):
        The encoder and decoder for DebugVisuals have been added.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::setLayerState):
        Update the debug visuals of a layer according to the DebugVisuals information
        if the debugVisualsChanged flag is set to true.

2017-05-09  Zan Dobersek  <zdobersek@igalia.com>

        Upstream the WPE port
        https://bugs.webkit.org/show_bug.cgi?id=171110

        Reviewed by Alex Christensen.

        webkit-dev thread:
        https://lists.webkit.org/pipermail/webkit-dev/2017-April/028923.html

        Existing files changed to properly use PLATFORM(WPE) build guards or other
        WPE-specific additions (e.g. pasteboard support).
        In-file changes removed from this ChangeLog entry for brevity.

        * Platform/IPC/glib/GSocketMonitor.cpp:
        * PlatformWPE.cmake: Added.
        * Scripts/generate-forwarding-headers.pl:
        * Shared/API/c/WKBase.h:
        * Shared/API/c/wpe/WKBaseWPE.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * Shared/API/c/wpe/WebKit.h: Added.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/DrawingAreaInfo.h:
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/NativeWebWheelEvent.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebPreferencesDefinitions.h:
        * Shared/wpe/NativeWebKeyboardEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * Shared/wpe/NativeWebMouseEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * Shared/wpe/NativeWebTouchEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * Shared/wpe/NativeWebWheelEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * Shared/wpe/ProcessExecutablePathWPE.cpp: Added.
        * Shared/wpe/WebEventFactory.cpp: Added.
        * Shared/wpe/WebEventFactory.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/wpe/WKAPICastWPE.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/C/wpe/WKView.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/C/wpe/WKView.h: Copied from Source/WebKit2/Shared/NativeWebWheelEvent.h.
        * UIProcess/API/wpe/CompositingManagerProxy.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/wpe/CompositingManagerProxy.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/wpe/CompositingManagerProxy.messages.in: Added.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Added.
        * UIProcess/API/wpe/DrawingAreaProxyWPE.h: Copied from Source/WebKit2/Shared/NativeWebWheelEvent.h.
        * UIProcess/API/wpe/PageClientImpl.cpp: Added.
        * UIProcess/API/wpe/PageClientImpl.h: Added.
        * UIProcess/API/wpe/ScrollGestureController.cpp: Added.
        * UIProcess/API/wpe/ScrollGestureController.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/wpe/WPEView.cpp: Added.
        * UIProcess/API/wpe/WPEView.h: Added.
        * UIProcess/API/wpe/WPEViewClient.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/wpe/WPEViewClient.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/API/wpe/WebKit2InspectorGResourceBundle.xml: Added.
        * UIProcess/ChildProcessProxy.cpp:
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp: Added.
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/wpe/TextCheckerWPE.cpp: Added.
        * UIProcess/wpe/WebInspectorProxyWPE.cpp: Added.
        * UIProcess/wpe/WebPageProxyWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/wpe/WebPasteboardProxyWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * UIProcess/wpe/WebPreferencesWPE.cpp: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
        * UIProcess/wpe/WebProcessPoolWPE.cpp: Added.
        * WebKit2.xcodeproj/project.pbxproj:
        * WebKit2Prefix.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/wpe/WebContextMenuClientWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp: Added.
        * WebProcess/WebCoreSupport/wpe/WebPopupMenuWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        * WebProcess/WebPage/DrawingArea.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/wpe/CompositingManager.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebPage/wpe/CompositingManager.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Added.
        * WebProcess/WebPage/wpe/DrawingAreaWPE.h: Added.
        * WebProcess/WebPage/wpe/WebInspectorUIWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebPage/wpe/WebInspectorWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * WebProcess/WebPage/wpe/WebPageWPE.cpp: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
        * WebProcess/wpe/WebProcessMainWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
        * wpe/wpe-webkit.pc.in: Added.

2017-05-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Building Webkit2Gtk without OpenGL fails.
        https://bugs.webkit.org/show_bug.cgi?id=170959

        Reviewed by Žan Doberšek.

        * UIProcess/gtk/HardwareAccelerationManager.cpp:
        (WebKit::HardwareAccelerationManager::HardwareAccelerationManager):

2017-05-08  Youenn Fablet  <youenn@apple.com>

        Follow-up to bug 171710: use more references and reject if either audio or video source creation is failing
        https://bugs.webkit.org/show_bug.cgi?id=171824

        Reviewed by Alex Christensen.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

2017-05-08  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r213564): Flash video playback failures
        https://bugs.webkit.org/show_bug.cgi?id=171840
        <rdar://problem/32041569>

        Reviewed by Alexey Proskuryakov.

        The sandbox restrictions added in r213564 to prevent access to unused iokit properties
        blocked some items needed for Flash video playback. This change relaxes the sandbox
        to allow this software to run properly.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

2017-05-08  Alex Christensen  <achristensen@webkit.org>

        Reduce PassRefPtr use in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=171831

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupCreateWithIdentifier):
        * UIProcess/GenericCallback.h:
        (WebKit::GenericCallback::create):
        (WebKit::CallbackMap::put):
        * UIProcess/StatisticsRequest.cpp:
        (WebKit::StatisticsRequest::StatisticsRequest):
        * UIProcess/StatisticsRequest.h:
        (WebKit::StatisticsRequest::create):
        * UIProcess/TextChecker.h:
        * UIProcess/TextCheckerCompletion.cpp:
        (WebKit::TextCheckerCompletion::create):
        * UIProcess/TextCheckerCompletion.h:
        * UIProcess/WebColorPicker.h:
        (WebKit::WebColorPicker::create):
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::create):
        * UIProcess/WebConnectionToWebProcess.h:
        * UIProcess/WebContextInjectedBundleClient.cpp:
        (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebContextMenuListenerProxy.h:
        (WebKit::WebContextMenuListenerProxy::create):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::create):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebEditCommandProxy.h:
        (WebKit::WebEditCommandProxy::create):
        * UIProcess/WebFormSubmissionListenerProxy.h:
        (WebKit::WebFormSubmissionListenerProxy::create):
        * UIProcess/WebFrameListenerProxy.h:
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::create):
        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::create):
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::create):
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebIconDatabase.cpp:
        (WebKit::WebIconDatabase::create):
        (WebKit::WebIconDatabase::iconDataForPageURL):
        * UIProcess/WebIconDatabase.h:
        * UIProcess/WebMediaSessionFocusManager.cpp:
        (WebKit::WebMediaSessionFocusManager::create):
        * UIProcess/WebMediaSessionFocusManager.h:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        (WebKit::WebOpenPanelResultListenerProxy::create):
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::create):
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::forceRepaint):
        (WebKit::WebPageProxy::computePagesForPrinting):
        (WebKit::WebPageProxy::drawRectToImage):
        (WebKit::WebPageProxy::drawPagesToPDF):
        (WebKit::WebPageProxy::drawPagesForPrinting):
        (WebKit::WebPageProxy::callAfterNextPresentationUpdate):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/TextCheckerIOS.mm:
        (WebKit::TextChecker::requestCheckingOfString):
        * UIProcess/mac/TextCheckerMac.mm:
        (WebKit::TextChecker::requestCheckingOfString):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
        (-[WKPrintingView _drawPreview:]):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::loadURL):
        (WebKit::NetscapePlugin::manualStreamDidReceiveResponse):
        * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
        (WebKit::NetscapePluginStream::NetscapePluginStream):
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        (WebKit::NetscapePluginStream::create):
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFormData):

2017-05-08  Youenn Fablet  <youenn@apple.com>

        Add support for reading and writing settings from UIProcess audio capture
        https://bugs.webkit.org/show_bug.cgi?id=171633

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setSettings):
        (WebKit::UserMediaCaptureManager::Source::applyConstraintsSucceeded):
        (WebKit::UserMediaCaptureManager::Source::applyConstraintsFailed):
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::sourceSettingsChanged):
        (WebKit::UserMediaCaptureManager::applyConstraints):
        (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
        (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
        (WebKit::UserMediaCaptureManager::Source::setMuted): Deleted.
        (WebKit::UserMediaCaptureManager::Source::setEnabled): Deleted.
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2017-05-08  Alex Christensen  <achristensen@webkit.org>

        Reduce PassRefPtr use
        https://bugs.webkit.org/show_bug.cgi?id=171809

        Reviewed by Chris Dumez.

        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::setInitializationReply):
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::destroyPlugin):
        (WebKit::WebProcessConnection::createPlugin):
        * PluginProcess/WebProcessConnection.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runOpenPanel):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):
        * WebProcess/WebPage/VisitedLinkTableController.cpp:
        (WebKit::VisitedLinkTableController::getOrCreate):
        * WebProcess/WebPage/VisitedLinkTableController.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::hitTest):
        (WebKit::WebFrame::createSelectionSnapshot):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebOpenPanelResultListener.cpp:
        (WebKit::WebOpenPanelResultListener::create):
        (WebKit::WebOpenPanelResultListener::WebOpenPanelResultListener):
        * WebProcess/WebPage/WebOpenPanelResultListener.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::unapplyEditCommand):
        (WebKit::WebPage::reapplyEditCommand):
        * WebProcess/WebPage/WebPageGroupProxy.cpp:
        (WebKit::WebPageGroupProxy::create):
        * WebProcess/WebPage/WebPageGroupProxy.h:
        * WebProcess/WebPage/WebUndoStep.cpp:
        (WebKit::WebUndoStep::create):
        * WebProcess/WebPage/WebUndoStep.h:
        (WebKit::WebUndoStep::step):
        (WebKit::WebUndoStep::WebUndoStep):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::create):
        (WebKit::PlatformCALayerRemote::clone):
        (WebKit::PlatformCALayerRemote::animationForKey):
        (WebKit::PlatformCALayerRemote::createCompatibleLayer):
        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
        * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::create):
        (WebKit::PlatformCALayerRemoteCustom::clone):

2017-05-08  Jer Noble  <jer.noble@apple.com>

        [Mac] Audio capture fails when shouldCaptureAudioInUIProcess is set.
        https://bugs.webkit.org/show_bug.cgi?id=171710

        Reviewed by Eric Carlson.

        RealtimeMediaSourceCenterMac's setUseAVFoundationAudioCapture() is now accessed via a singleton.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):

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

        [macOS] com.macromedia.Flash Player ESR.plugin.sb is installed outside of PlugInSandboxProfiles
        https://bugs.webkit.org/show_bug.cgi?id=171774

        Reviewed by Dan Bernstein.

        * WebKit2.xcodeproj/project.pbxproj:

2017-05-08  Youenn Fablet  <youenn@apple.com>

        Clean UserMediaCaptureManager::capabilities return value
        https://bugs.webkit.org/show_bug.cgi?id=171808

        Reviewed by Eric Carlson.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::capabilities):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

        Move 'style' from Element to HTMLElement / SVGElement and make it settable
        https://bugs.webkit.org/show_bug.cgi?id=171795

        Reviewed by Alex Christensen.

        Build fix.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::shouldApplyStyle):

2017-05-07  Simon Fraser  <simon.fraser@apple.com>

        [iOS] REGRESSION (r209409): getBoundingClientRect is wrong for fixed-position elements in resize/orientationchange
        https://bugs.webkit.org/show_bug.cgi?id=171140
        rdar://problem/31765167

        Reviewed by Sam Weinig.

        WebPage::dynamicViewportSizeUpdate() is called during rotation, and does a layout which needs to have
        an up-to-date layout viewport, since the layout viewport state is detectable in orientationchange and
        resize events via fetching the client rect of fixed elements. Normally we send in the layout viewport
        from the UI process, but in this case we need to compute one in the web process. So factor code
        into FrameView to do the computation, called from both places.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect):
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computeCustomFixedPositionRect):
        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::dynamicViewportSizeUpdate):

2017-05-07  Youenn Fablet  <youenn@apple.com>

        [MediaStream] r216197 caused some webrtc tests to fail
        https://bugs.webkit.org/show_bug.cgi?id=171728

        Reviewed by Eric Carlson.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Removing muting streams of the page requesting
        additional capture streams. This is now done in the WebProcess.

2017-05-07  Tim Horton  <timothy_horton@apple.com>

        Clean up some WebProcessProxy, WebPage, and message handler includes
        https://bugs.webkit.org/show_bug.cgi?id=171791

        Reviewed by Sam Weinig.

        This is worth another ~10% off WebKit2 clean build time on Mac.
        This time, the most impactful change is the removal of
        UserMediaPermissionRequestManager.h from WebPage.h, which completely
        eradicates JSC's VM.h (which is enormous) from WebPage.h (at least on Mac).

        * Scripts/webkit/messages.py:
        (headers_for_type):
        Stop specializing CompositionUnderline now that it has its own file.

        * Shared/API/c/WKDeprecatedFunctions.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        * UIProcess/Gamepad/UIGamepadProvider.cpp:
        * UIProcess/HiddenPageThrottlingAutoIncreasesCounter.h: Added.
        * UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        * UIProcess/PerActivityStateCPUUsageSampler.cpp:
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::toWebCore):
        * UIProcess/VisibleWebPageCounter.h: Added.
        * UIProcess/VisitedLinkStore.h:
        * UIProcess/WebPageGroup.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessLifetimeTracker.cpp:
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:
        Remove WebPageProxy and forward-declare a whole bunch of things.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted):
        (WebKit::WebPage::userMediaAccessWasDenied):
        (WebKit::WebPage::didCompleteMediaDeviceEnumeration):
        (WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
        (WebKit::WebPage::revokeUserMediaDeviceSandboxExtensions):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::userMediaPermissionRequestManager):
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
        (WebKit::RemoteLayerTreeContext::deviceScaleFactor): Deleted.
        (WebKit::RemoteLayerTreeContext::layerHostingMode): Deleted.
        * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::deviceScaleFactor):
        (WebKit::RemoteLayerTreeContext::layerHostingMode):

2017-05-06  Chris Dumez  <cdumez@apple.com>

        Align our IDL files with the latest DOM specification
        https://bugs.webkit.org/show_bug.cgi?id=171777

        Reviewed by Sam Weinig.

        GTK build fix.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
        (webkit_dom_document_get_ready_state):

2017-05-06  Tim Horton  <timothy_horton@apple.com>

        Reduce the number of includes in WebPage.h and WebProcess.h
        https://bugs.webkit.org/show_bug.cgi?id=171779

        Reviewed by Sam Weinig.

        * WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        * WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
        * WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        * WebProcess/WebPage/FindController.cpp:
        * WebProcess/WebPage/WebFrame.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::disableEnumeratingAllNetworkInterfaces):
        (WebKit::WebPage::enableEnumeratingAllNetworkInterfaces):
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::disableEnumeratingAllNetworkInterfaces): Deleted.
        (WebKit::WebPage::enableEnumeratingAllNetworkInterfaces): Deleted.
        * WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h:
        * WebProcess/WebProcess.cpp:
        * WebProcess/WebProcess.h:
        In my measurement, this improves WebKit2 debug clean build time by
        ~10% for Mac and ~5% for iOS. The most valuable change is the one to
        remove LibWebRTC headers..

2017-05-06  Alexey Proskuryakov  <ap@apple.com>

        REGRESSION (r216294): The new test fails on WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=171780

        Rolling back https://trac.webkit.org/r216294, https://trac.webkit.org/r216296,
        https://trac.webkit.org/216299, https://trac.webkit.org/216330

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::paint):
        * WebProcess/Plugins/PluginView.h:

2017-05-06  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Make rotation tests more reliable
        https://bugs.webkit.org/show_bug.cgi?id=171778

        Reviewed by Tim Horton.

        Switching between "safari-style" rotation and normal rotation left state on the WKWebView
        that would cause later viewport-sensitive tests to fail. The WKWebView would be left
        with override layout parameters, and an override orientation, and these caused viewport
        size to leak into later tests, and WebCore orientation to not get reset correctly.

        Also, WKWebView was unregistering for UIWindowDidRotateNotification notifications when
        an override orientation was set, and would never re-register, causing lost orientationchanged
        events.

        Fix by exposing WKWebView SPI to clear the various bits of overide state. Also don't unregister
        from the UIWindowDidRotateNotification notification; it's already ignored anyway if it fires.

        Also wait for a visible content rect update after resizing the WKWebVeiw between tests, to make sure
        the WebProcess is caught up before proceeding with the test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInterfaceOrientationOverride:]):
        (-[WKWebView _clearInterfaceOrientationOverride]):
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        (-[WKWebView _clearOverrideLayoutParameters]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2017-05-06  Konstantin Tokarev  <annulen@yandex.ru>

        Remove unused lambda capture
        https://bugs.webkit.org/show_bug.cgi?id=171772

        Reviewed by Yusuke Suzuki.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::fetchWebsiteData):

2017-05-06  David Kilzer  <ddkilzer@apple.com>

        messages_unittest.py should support a [-r|--reset-results] switch
        <https://webkit.org/b/171627>

        Reviewed by Daniel Bates.

        This change adds support for a [-r|--reset-results] switch when
        running messages_unittest.py to make it easy to update the
        expected file results.

        This also cleans up a lot of duplicate code in
        messages_unittest.py by extracting common code into new methods
        and by pushing code down into methods where it's actually used.

        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        * Scripts/webkit/LegacyMessages-expected.h:
        * Scripts/webkit/MessageReceiver-expected.cpp:
        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        * Scripts/webkit/Messages-expected.h:
        * Scripts/webkit/MessagesSuperclass-expected.h:
        - Update expected files using the new --reset-results switch.

        * Scripts/webkit/messages_unittest.py:
        - Remove what appears to be a debugging print statement.
        - Replace the code that reads in expected files with variables
          that contain the expected file names.  The code to read in the
          contents moved into
          GeneratedFileContentsTest.assertGeneratedFileContentsEqual().
        (ParsingTest.check_message):
        - Drive-by fix to change "!= None" to "is not None".
        (GeneratedFileContentsTest.assertGeneratedFileContentsEqual):
        - Add support for [-r|--reset-results] switch here.  This will
          write out updated expected file contents when the switch is
          used.
        - Push down most of the global code that reads in file contents
          into this method.
        - Change use of split('\n') into splitlines(False).
        (GeneratedFileContentsTest.assertHeaderEqual): Add.
        - Extracts common code from test_receiver_headers().
        (GeneratedFileContentsTest.assertImplementationEqual): Add.
        - Extracts common code from test_receiver_implementations().
        (HeaderTest):
        (HeaderTest.test_receiver_headers):
        - Rename from HeaderTest.test_header().
        - Simplify by calling assertHeaderEqual().
        (ReceiverImplementationTest):
        (ReceiverImplementationTest.test_receiver_implementations):
        - Rename from
          ReceiverImplementationTest.test_receiver_implementation().
        - Simplify by calling assertImplementationEqual().
        (add_reset_results_to_unittest_help): Add.
        - Inserts help text for [-r|--reset-results] switch.
        (parse_sys_argv): Add.
        - Parses [-r|--reset-results] switch, and then removes it from
          sys.argv.  We do this instead of using argparse so that the
          original help for the unittest module is still shown when
          using --help.

2017-05-05  Timothy Horton  <timothy_horton@apple.com>

        [Mac] Adjust cursor position for dragged link (and stop it from moving based on how fast you are dragging)
        https://bugs.webkit.org/show_bug.cgi?id=171764
        <rdar://problem/32005865>

        Reviewed by Simon Fraser.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::dragImageForView):
        Always use the last mouse down event to originate the drag; this was a 2004 hack
        to work around a seemingly-fixed macOS bug that somehow propagated into WebKit2.
        With WebKit2, this would cause trouble because currentEvent could move on
        during the bounce to the Web Content process and back, causing the delta between
        clientPoint and the mouse point to be dependent on timing, and thus causing the
        link to sit at timing-dependent distance from the cursor, instead of exactly
        where dragOffsetForLinkDragImage placed it.

2017-05-05  Brady Eidson  <beidson@apple.com>

        API test WebKit2.WebsiteDataStoreCustomPaths is failing on ios-simulator.
        <rdar://problem/31977294> and https://bugs.webkit.org/show_bug.cgi?id=171513

        Reviewed by Andy Estes.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::syncAllCookies):

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

        Restrict SVG filters to accessible security origins
        https://bugs.webkit.org/show_bug.cgi?id=118689
        <rdar://problem/27362159>

        Reviewed by Brent Fulgham.

        Update parameter lists.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::paint):
        * WebProcess/Plugins/PluginView.h:

2017-05-05  Beth Dakin  <bdakin@apple.com>

        Ensure NSColorPickerTouchBarItem only uses sRGB colors
        https://bugs.webkit.org/show_bug.cgi?id=171758
        -and corresponding-
        rdar://problem/28314183

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKTextTouchBarItemController itemForIdentifier:]):

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

        [WK2][iOS][macOS] Expand sandbox to access vm.footprint_suspend 
        https://bugs.webkit.org/show_bug.cgi?id=171749
        <rdar://problem/32019494>

        Reviewed by Geoffrey Garen.

        The 'sysctl' whitelist needs to be extended to support an additional VM-related feature.

        * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * WebProcess/com.apple.WebProcess.sb.in:

2017-05-05  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Don't cover in-memory and disk caches during website data removal
        https://bugs.webkit.org/show_bug.cgi?id=171741
        <rdar://problem/32020691>

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
            No longer removes WebsiteDataType::DiskCache or WebsiteDataType::MemoryCache.

2017-05-05  Brian Burg  <bburg@apple.com>

        CrashTracer: [USER] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::commonVMSlow + 57
        https://bugs.webkit.org/show_bug.cgi?id=171669
        <rdar://problem/31967684>

        Reviewed by Mark Lam.

        safaridriver's AutomaticInspection capability causes us to call WebInspectorProxy::connect()
        underneath the Automation.inspectBrowsingContext command. This fires a NeedDebuggerBreak
        interrupt for the web content's VM, but this is racy because the web content process may
        not yet be fully initialized when this interrupt is handled.

        To work around this, just don't deliver any interrupts if the VM singleton is still null.
        This is a reliable signal that the web content process is not fully initialized yet. Not delivering
        is harmless; the interrupt only exists to break out of infinite loops in JS code, but there
        could not be any such infinite loop yet if the web content process is not fully initialized.

        * WebProcess/WebPage/WebInspectorInterruptDispatcher.cpp:
        (WebKit::WebInspectorInterruptDispatcher::notifyNeedDebuggerBreak):

2017-05-05  Brian Burg  <bburg@apple.com>

        Web Automation: cookie-related commands don't work correctly
        https://bugs.webkit.org/show_bug.cgi?id=171713
        <rdar://problem/29829930>

        Reviewed by Alexey Proskuryakov.

        Commands that use WebCookieManager directly should complete when
        the manager's completion handler is called. Otherwise, this will race
        with subsequent accesses to cookies via the web process (document.cookie).

        Also, these commands need to use the active browsing context's session ID.
        They currently use the process pool's storage session, which is wrong
        since we specially configure automation instances with an ephemeral store.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::deleteAllCookies):

2017-05-05  Chris Dumez  <cdumez@apple.com>

        Rename webProcessDidCrashWithReason callback to webProcessDidTerminate and stop calling webProcessDidCrash for client terminations
        https://bugs.webkit.org/show_bug.cgi?id=171624

        Reviewed by Dan Bernstein.

        Follow-up fixes after r216129 based on feedback I have received:
        - Rename webProcessDidCrashWithReason callback function to webProcessDidTerminate given that this is called
          for non-crashes (e.g. terminations requested by the client).
        - Rename WKProcessCrashReason / ProcessCrashReason to WKProcessTerminationReason / ProcessTerminationReason
          for consistency with the new naming.
        - Stop calling processDidCrash / webProcessDidCrash for terminations requested by the client, to maintain
          pre-r216129 behavior. Those are not crashes (The client used an API such as WKPageTerminateProcess()).
          webProcessDidTerminate will still be called though.
        - Fix a bug where - for terminations due to resource limits - WebPageProxy::processDidCrash() was getting
          called twice: First by WebProcessProxy::requestTermination() with reason "RequestedByClient" then a
          second time by WebProcessProxy::terminateProcessDueToResourceLimits() with the proper reason.

        * Shared/ProcessTerminationReason.h: Renamed from Source/WebKit2/Shared/ProcessCrashReason.h.
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::processDidTerminate):
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toAPI):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageTerminate):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageNavigationClient.h:
        * UIProcess/API/C/WKProcessTerminationReason.h: Renamed from Source/WebKit2/UIProcess/API/C/WKProcessCrashReason.h.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _killWebContentProcessAndResetState]):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::processDidTerminate):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::requestTermination):
        (WebKit::WebProcessProxy::logDiagnosticMessageForResourceLimitTermination):
        (WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
        * UIProcess/WebProcessProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-05-05  Derek Schuff  <dschuff@chromium.org>

        Mac cmake buildfix after r216037
        https://bugs.webkit.org/show_bug.cgi?id=171558

        Reviewed by JF Bastien.

        * PlatformMac.cmake:

2017-05-05  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] Enable runtime flag for MediaDevices with enable-media-stream property.
        https://bugs.webkit.org/show_bug.cgi?id=171730

        Reviewed by Michael Catanzaro.

        After r215939 the MediaDevices runtime setting has to be enabled
        also to use MediaStream / WebRTC.

        Enable it as part of the enable-media-stream property of the
        WebKitGTK+ API.

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

2017-05-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Assertion failure in Inspector::RemoteInspector::setRemoteInspectorClient when disposing WebKitWebContext
        https://bugs.webkit.org/show_bug.cgi?id=171644

        Reviewed by Michael Catanzaro.

        Ensure that it's not possible to enable automation in more than one WebKitWebContext at the same time. Instead
        of creating the AutomationClient unconditionally when the context is constructed, it's now created only when
        automation is enabled, and deleted if it's disabled.

        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        (webkit_web_context_is_automation_allowed):
        (webkit_web_context_set_automation_allowed):
        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::AutomationClient):
        (WebKit::AutomationClient::~AutomationClient):

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

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

        Multiple LayoutTests crashing in Document::page() (Requested
        by ap on #webkit).

        Reverted changeset:

        "Remove support for legacy Notifications"
        https://bugs.webkit.org/show_bug.cgi?id=171487
        http://trac.webkit.org/changeset/216206

2017-05-04  Mark Lam  <mark.lam@apple.com>

        NeverDestroyed<String>(ASCIILiteral(...)) is not thread safe.
        https://bugs.webkit.org/show_bug.cgi?id=171586
        <rdar://problem/31873190>

        Reviewed by Yusuke Suzuki.

        * Shared/API/APIError.cpp:
        (API::Error::webKitErrorDomain):
        (API::Error::webKitNetworkErrorDomain):
        (API::Error::webKitPolicyErrorDomain):
        (API::Error::webKitPluginErrorDomain):
        (API::Error::webKitDownloadErrorDomain):
        (API::Error::webKitPrintErrorDomain):
        * Shared/WebPreferencesKeys.cpp:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::executeEditCommand):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::didBeginEditing):
        (WebKit::WebEditorClient::respondToChangedContents):
        (WebKit::WebEditorClient::respondToChangedSelection):
        (WebKit::WebEditorClient::didEndEditing):

2017-05-04  Jeremy Jones  <jeremyj@apple.com>

        Add mute to WebPlaybackSessionModel.
        https://bugs.webkit.org/show_bug.cgi?id=171592
        rdar://problem/31814074

        Reviewed by Jer Noble.

        Plumb through muted.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::toggleMuted):
        (WebKit::WebPlaybackSessionModelContext::setMuted):
        (WebKit::WebPlaybackSessionManagerProxy::setMuted):
        (WebKit::WebPlaybackSessionManagerProxy::toggleMuted):
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::mutedChanged):
        (WebKit::WebPlaybackSessionManager::mutedChanged):
        (WebKit::WebPlaybackSessionManager::toggleMuted):

2017-05-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Image action sheets sometimes do not dismiss when beginning data interaction
        https://bugs.webkit.org/show_bug.cgi?id=171687
        <rdar://problem/31996534>

        Reviewed by Beth Dakin.

        When presenting an image sheet using WKActionSheetAssistant, we may present the popover asynchronously. In this
        case, even if -cleanupSheet is invoked after -showImageSheet, the popover will still be presented. To fix this,
        add a flag, _hasPendingActionSheet, that is set to true when an image action sheet will be presented in the
        future.

        In cleanupSheet, we revert this flag to NO, and in the sheet presentation block, we first check to see if there
        is a pending action sheet. If there is not, then simply do not invoke the image sheet presentation block.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant cleanupSheet]):

2017-05-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add support for keeping the selection in a focused editable element when dragging begins
        https://bugs.webkit.org/show_bug.cgi?id=171585
        <rdar://problem/31544320>

        Reviewed by Beth Dakin and Zalan Bujtas.

        Minor adjustments and refactoring in WebKit2. See WebCore ChangeLog for more details.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::didStartDrag):

        Factor out code in WebPageProxy that sends a WebPage::DidStartDrag message to the web process into a separate
        helper, and tweak the places where we directly send this IPC message to the web process to instead call this
        helper.

        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setDragImage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didStartDrag):
        (WebKit::WebPage::dragCancelled):

        Clear out state in the web process and call out to the EventHandler to handle drag cancellation and the drag
        start response from the UI process.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::didStartDrag): Deleted.
        (WebKit::WebPage::dragCancelled): Deleted.

2017-05-04  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebProcessCreationParameters.cpp:
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        * WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
        * WebProcess/Notifications/NotificationPermissionRequestManager.h:
        * WebProcess/Notifications/WebNotificationManager.cpp:
        * WebProcess/Notifications/WebNotificationManager.h:
        * WebProcess/WebCoreSupport/WebNotificationClient.cpp:
        * WebProcess/WebCoreSupport/WebNotificationClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebProcess.cpp:
        Remove legacy notification specific code.

2017-05-04  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow host application to enable/disable media capture
        https://bugs.webkit.org/show_bug.cgi?id=171292
        <rdar://problem/31821492>

        Reviewed by Jer Noble.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetMediaCaptureEnabled): New.
        (WKPageGetMediaCaptureEnabled): New.
        * UIProcess/API/C/WKPagePrivate.h:

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

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
        and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
        and iOS.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        Initialize the rejection timer.
        (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
        Call invalidatePendingRequests.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
        pending requests.
        (WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
        schedule the timer if there are any others pending.
        (WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection): 
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
        prompt the user if capture is disabled.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
        (WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
        page on iOS.
        (WebKit::UserMediaProcessManager::setCaptureEnabled):
        * UIProcess/UserMediaProcessManager.h:

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

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::mediaCaptureEnabled):

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
        requests.
        (WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
        (WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

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

2017-05-04  Konstantin Tokarev  <annulen@yandex.ru>

        Fix compilation with ICU 59.1
        https://bugs.webkit.org/show_bug.cgi?id=171612

        Reviewed by Mark Lam.

        ICU 59.1 has broken source compatibility. Now it defines UChar as
        char16_t, which does not allow automatic type conversion from unsigned
        short in C++ code.

        * Shared/API/c/WKString.cpp:
        (WKStringGetCharacters):

2017-05-04  Dan Bernstein  <mitz@apple.com>

        [Cocoa] -[WKWebsiteDataStore httpCookieStore] is declared in the main @interface but implemented in a category
        https://bugs.webkit.org/show_bug.cgi?id=171657

        Reviewed by Sam Weinig.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore httpCookieStore]): Moved from the WKPrivate category into the main
          @implementation block.

2017-05-04  Andy Estes  <aestes@apple.com>

        [Cocoa] Add an optional width parameter to -[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]
        https://bugs.webkit.org/show_bug.cgi?id=171646
        <rdar://problem/30306321>

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]): Called
        -renderedImageWithOptions:width: with a nil width.
        (-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:width:]): Passed an optional width
        to InjectedBundleNodeHandle::renderedImage().
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::imageForRect): If a width is specified, create an image graphics context at that
        width, preserving the aspect ratio of paintingRect.
        (WebKit::InjectedBundleNodeHandle::renderedImage):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

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

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

        FTBFS for iOS due to missing WebPageProxy::stopMediaCapture()
        implementation. (Requested by ddkilzer on #webkit).

        Reverted changeset:

        "[MediaStream] Allow host application to enable/disable media
        capture"
        https://bugs.webkit.org/show_bug.cgi?id=171292
        http://trac.webkit.org/changeset/216172

2017-05-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted
        https://bugs.webkit.org/show_bug.cgi?id=171336

        Reviewed by Michael Catanzaro.

        We are assuming that all calls to ThreadedCompositor::renderLayerTree() happen because of an scheduled update,
        but that's not true in the case of ThreadedCompositor::forceRepaint(). In that case we never want to call
        CompositingRunLoop::updateCompleted().

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::forceRepaint):
        (WebKit::ThreadedCompositor::sceneUpdateFinished):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

2017-05-04  David Kilzer  <ddkilzer@apple.com>

        check-webkit-style exits with an error while parsing Source/WebKit2/Scripts/webkit/ directory: KeyError: 'st'
        <https://bugs.webkit.org/show_bug.cgi?id=171510>

        Reviewed by Daniel Bates.

        The problem was that 'import parser' was ambiguous since there
        is a built-in parser module that comes with Python.  Changing
        'import parser' to 'from webkit import parser' fixed the error
        in check-webkit-style (and pylint) by forcing it to load the
        local 'parser' module, but then running messages_unittest.py
        directly would fail because .../Source/WebKit2/Scripts was not
        in the module search path by default.  This is fixed by using
        sys.path.append() to add .../Source/WebKit2/Scripts to the
        module search path based on the path to messages_unittest.py.

        As an added bonus, this patch also fixes all webkit-style issues
        in Source/WebKit2/Scripts/webkit/*.py files.

        * Scripts/webkit/messages.py:
        - Separate local module imports from built-in modules for
          consistency.
        - Fix whitespace issues for check-webkit-style, and remove stray
          semi-colon.
        * Scripts/webkit/messages_unittest.py:
        - Update sys.path to find the 'webkit' module based on the path
          to messages_unittest.py.  This makes 'from webkit import ...'
          statements work when running messages_unittest.py directly.
        - Change 'messages' and 'parser' modules to use
          'from webkit import ...' format for consistency.
        - Fix whitespace issues for check-webkit-style.
        * Scripts/webkit/model.py:
        - Fix whitespace issue for check-webkit-style.
        * Scripts/webkit/parser.py:
        - Fix whitespace issue for check-webkit-style.

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

        [MediaStream] Allow host application to enable/disable media capture
        https://bugs.webkit.org/show_bug.cgi?id=171292
        <rdar://problem/31821492>

        Reviewed by Jer Noble.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetMediaCaptureEnabled): New.
        (WKPageGetMediaCaptureEnabled): New.
        * UIProcess/API/C/WKPagePrivate.h:

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

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
        and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
        and iOS.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        Initialize the rejection timer.
        (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
        Call invalidatePendingRequests.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
        pending requests.
        (WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
        schedule the timer if there are any others pending.
        (WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection): 
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
        prompt the user if capture is disabled.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
        (WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
        page on iOS.
        (WebKit::UserMediaProcessManager::setCaptureEnabled):
        * UIProcess/UserMediaProcessManager.h:

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

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::mediaCaptureEnabled):

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
        requests.
        (WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
        (WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

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

2017-05-03  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove all statistics for modifiedSince website data removals
        https://bugs.webkit.org/show_bug.cgi?id=171584
        <rdar://problem/24702576>

        Reviewed by Brent Fulgham.

        These are all test infrastructure changes.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerClearInMemoryAndPersistentStoreModifiedSinceHours):
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStoreModifiedSinceHours):
        * UIProcess/WebResourceLoadStatisticsManager.h:

2017-05-03  Timothy Horton  <timothy_horton@apple.com>

        Maintain interaction information imageURL as a URL, not a string
        https://bugs.webkit.org/show_bug.cgi?id=171639

        Reviewed by Sam Weinig.

        * Shared/ios/InteractionInformationAtPosition.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):
        (-[WKContentView _previewItemController:commitPreview:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):

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

        Unreviewed, rolling out r216160 and r216161.
        https://bugs.webkit.org/show_bug.cgi?id=171640

        These changes broke the iOS build. (Requested by mlewis13 on
        #webkit).

        Reverted changesets:

        "[MediaStream] Allow host application to enable/disable media
        capture"
        https://bugs.webkit.org/show_bug.cgi?id=171292
        http://trac.webkit.org/changeset/216160

        "[MediaStream] Allow host application to enable/disable media
        capture"
        https://bugs.webkit.org/show_bug.cgi?id=171292
        http://trac.webkit.org/changeset/216161

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

        [MediaStream] Allow host application to enable/disable media capture
        https://bugs.webkit.org/show_bug.cgi?id=171292
        <rdar://problem/31821492>

        Unreviewed build fix.

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

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

        [MediaStream] Allow host application to enable/disable media capture
        https://bugs.webkit.org/show_bug.cgi?id=171292
        <rdar://problem/31821492>

        Reviewed by Jer Noble.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetMediaCaptureEnabled): New.
        (WKPageGetMediaCaptureEnabled): New.
        (WKPageClearUserMediaState): Deleted, unused.
        * UIProcess/API/C/WKPagePrivate.h:

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

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
        and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
        and iOS.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        Initialize the rejection timer.
        (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
        Call invalidatePendingRequests.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
        pending requests.
        (WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
        schedule the timer if there are any others pending.
        (WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection): 
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
        prompt the user if capture is disabled.
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
        (WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
        page on iOS.
        (WebKit::UserMediaProcessManager::setCaptureEnabled):
        * UIProcess/UserMediaProcessManager.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setMediaCaptureEnabled):
        (WebKit::WebPageProxy::clearUserMediaState): Deleted.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::mediaCaptureEnabled):

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
        requests.
        (WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
        (WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

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

2017-05-03  Tim Horton  <timothy_horton@apple.com>

        Maintain interaction information URL as a URL, not a string
        https://bugs.webkit.org/show_bug.cgi?id=171623

        Reviewed by Simon Fraser.

        * Shared/ios/InteractionInformationAtPosition.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showAttachmentSheet]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView annotation:isBeingPressedAtPoint:controller:]):
        (-[WKPDFView actionSheetAssistant:performAction:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):

2017-05-03  Simon Fraser  <simon.fraser@apple.com>

        Have WKWebView call _updateVisibleContentRects for the current transaction if possible, rather than always delaying
        https://bugs.webkit.org/show_bug.cgi?id=171619
        
        Also fixes webkit.org/b/170153 and webkit.org/b/170195

        Reviewed by Tim Horton.

        In r214391 we started adding the pre-commit handler in a dispatch_async() to ensure that
        the handler would always run, since we couldn't reliably test the phase of the current
        transaction. Now that problem has been solved (rdar://problem/31253952) we can go back to
        checking the transaction phase on newer iOS versions. If we're too late for the current transaction
        we still need to dispatch_async() to get into the next one.

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

2017-05-03  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r216129): ASSERTION FAILED: m_process->state() == WebProcessProxy::State::Terminated
        https://bugs.webkit.org/show_bug.cgi?id=171616

        Reviewed by Brady Eidson.

        Stop calling resetStateAfterProcessExited() in WebPageProxy::terminateProcess() as the call to
        WebProcessProxy::requestTermination() already causes WebPageProxy::processDidCrash() to be called
        after r216129. WebPageProxy::processDidCrash() already takes care of calling
        resetStateAfterProcessExited().

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

2017-05-03  Brady Eidson  <beidson@apple.com>

        Handle KVO updating of the "hasOnlySecureContent" before a page results in an HTTP auth challenge.
        https://bugs.webkit.org/show_bug.cgi?id=171607

        Reviewed by Andy Estes.
        
        To test this fix we'd need the combination of an HTTPD inside API tests, so no test for now.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::hasOnlySecureContent): If the state is provisional, check the provisional URL instead.

2017-05-03  Chris Dumez  <cdumez@apple.com>

        [WK2] Extend processDidCrash delegate to let the client know the reason for the crash
        https://bugs.webkit.org/show_bug.cgi?id=171565
        <rdar://problem/31204417>

        Reviewed by Sam Weinig.

        Extend processDidCrash delegate to let the client know the reason for the crash. This
        is needed by some clients to distinguish actual crashes from terminations due to
        resource limits.

        * Shared/ProcessCrashReason.h: Added.
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::processDidCrash):
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toAPI):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageNavigationClient.h:
        * UIProcess/API/C/WKProcessCrashReason.h: Added.
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::processDidCrash):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidCrash):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::requestTermination):
        (WebKit::diagnosticLoggingKeyForTerminationReason):
        (WebKit::toProcessCrashReason):
        (WebKit::WebProcessProxy::terminateProcessDueToResourceLimits):
        (WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
        * UIProcess/WebProcessProxy.h:
        * WebKit2.xcodeproj/project.pbxproj:

2017-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add GTK+ implementation of WebAutomationSession
        https://bugs.webkit.org/show_bug.cgi?id=171431

        Reviewed by Michael Catanzaro.

        Add platform dependent methods for GTK+ to synthesize events.

        * PlatformGTK.cmake:
        * UIProcess/API/gtk/WebKitUIClient.cpp: Always resize the window for web views controlled by automation.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: Added.
        (WebKit::modifiersToEventState):
        (WebKit::mouseButtonToGdkButton):
        (WebKit::doMouseEvent):
        (WebKit::doMotionEvent):
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
        (WebKit::doKeyStrokeEvent):
        (WebKit::keyCodeForVirtualKey):
        (WebKit::WebAutomationSession::platformSimulateKeyStroke):
        (WebKit::WebAutomationSession::platformSimulateKeySequence):
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):

2017-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.1 release.

        * gtk/NEWS: Add release notes for 2.17.1.

2017-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Soup] Add request headers to network load metrics
        https://bugs.webkit.org/show_bug.cgi?id=171545

        Reviewed by Sergio Villar Senin.

        This will make the headers to appear in the web inspector.

        Fixes: http/tests/inspector/network/resource-request-headers.html

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::didGetHeaders):

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

        Dynamically added position:fixed element is in the wrong place
        https://bugs.webkit.org/show_bug.cgi?id=170280
        rdar://problem/31374008

        Reviewed by Tim Horton.

        Layers for position:fixed elements have their positions reconciled after scrolls
        via AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions() and GraphicsLayerCA::syncPosition(),
        which updates the GraphicsLayer's position, but does not push it to the PlatformCALayer.

        This bug was a case where a position:fixed element gained a fixed ancestor, so had a GraphicsLayerCA whose
        position had been updated via syncPosition() in the past. A subsequent layout updated the GraphicsLayerCA position,
        but to a value that was the same as its pre-sync position, so the PlatformCALayerRemote's position didn't change,
        but there was no signal to the UI process to restore the layer's pre-scrolled position.

        Fix by avoiding the early return in PlatformCALayerRemote::setPosition(), to ensure that GraphicsLayerCA
        geometry updates in the web process always send new positions to the UI process.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::setPosition):

2017-05-02  Gwang Yoon Hwang  <yoon@igalia.com>

        [GTK] Drop coordinated surfaces from the compositing thread as soon as possible
        https://bugs.webkit.org/show_bug.cgi?id=171544

        Reviewed by Žan Doberšek.

        Released coordinated surface from the main thread didn't be freed until
        next commit message because the deletion of coordinated surfaces is
        considered as a part of scene state.  We need to release corresponding
        surfaces whenever the compositing coordinator drops update atlases to
        reduce memory usages.

        No new tests, only an optimization.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
        Remove atlasesToRemove from the GraphicsState. it is not a commit
        state anymore.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::syncUpdateAtlases):
        (WebKit::CoordinatedGraphicsScene::releaseUpdateAtlases):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::CompositingCoordinator::releaseAtlases): Pass the list of
        released update atlases to the compositing thread right after cleaning
        up deactivated update atlases.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::clearPendingStateChanges):
        (WebKit::CompositingCoordinator::removeUpdateAtlas):
        (WebKit::CompositingCoordinator::releaseAtlases):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::releaseUpdateAtlases):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:

2017-05-02  Timothy Horton  <timothy_horton@apple.com>

        Inform clients when viewport-fit state changes, so they can recompute insets
        https://bugs.webkit.org/show_bug.cgi?id=171573
        <rdar://problem/31947614>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didChangeAvoidsUnsafeArea]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didChangeAvoidsUnsafeArea):
        For clients who use setObscuredInsets/setUnobscuredSafeAreaInsets
        themselves, we need to let them know when the current state of
        viewport-fit changes so that they can recompute the insets.

2017-05-02  Gwang Yoon Hwang  <yoon@igalia.com>

        [GTK] Recycle textures while handling tiles
        https://bugs.webkit.org/show_bug.cgi?id=171541

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::swapBuffers):
        Whenever we create new tiles or delete tiles, CoordGfx creates and
        deletes textures accordingly.  We should avoid this kind of heavy
        operations whenever possible.  This patch modifies to use the texture
        pool to reduce texture allocations.  Also this patch reduces number of
        resetting textures, which is also expensive operation.
        * Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:
        (WebKit::WebCoordinatedSurface::copyToTexture):
        Modified to pass BitmapTexture as a reference.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp:
        (WebKit::ThreadSafeCoordinatedSurface::copyToTexture): Ditto.

2017-05-02  David Kilzer  <ddkilzer@apple.com>

        Stop using strcpy() in WebProcess::registerWithStateDumper() in WebProcessCocoa.mm
        <https://webkit.org/b/171520>

        Reviewed by Chris Dumez.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::registerWithStateDumper): Switch from
        strcpy() to strlcpy(), removing comment in the process.

2017-05-02  Andrew Gold  <agold@apple.com>

        MediaDevices is not enabled for MobileSafari
        https://bugs.webkit.org/show_bug.cgi?id=171433
        <rdar://problem/31923178>

        Reviewed by Youenn Fablet.

        Added the Cocoa API for toggling this feature and removed API for toggling
        MediaStreamEnabled since it will always be on.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _mediaDevicesEnabled]):
        (-[WKPreferences _setMediaDevicesEnabled:]):
        (-[WKPreferences _mediaStreamEnabled]): Deleted.
        (-[WKPreferences _setMediaStreamEnabled:]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2017-05-02  Andy Estes  <aestes@apple.com>

        REGRESSION (r213036): Crash in -[WKContentView _webTouchEventsRecognized:] when a touch event arrives after a WebPageProxy has been invalidated
        https://bugs.webkit.org/show_bug.cgi?id=171539
        <rdar://problem/31614982>

        Reviewed by Tim Horton.

        Prior to r213036, the layer tree transaction at last touch start was tracked by
        WebPageProxy::handleTouchEventSynchronously(), which would ask the drawing area proxy for
        its most recent transaction ID after ensuring that the WebPageProxy was valid.

        r213036 moved the tracking up to -[WKContentView _webTouchEventsRecognized:], but failed to
        check if _page was valid before asking for its drawing area proxy's last transaction ID; the
        drawing area proxy is set to null on WebPageProxy invalidation.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _webTouchEventsRecognized:]): Added an early return if _page isn't valid.

2017-05-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: generate resizeWindowOfBrowsingContext and moveWindowOfBrowsingContext for all platforms
        https://bugs.webkit.org/show_bug.cgi?id=171107

        Reviewed by Brian Burg.

        The implementation is actually cross-platform, so it could be moved from WebAutomationSessionMac.mm to
        WebAutomationSession.cpp and simply return a NotImplemented error for iOS. This will allow to use these methods
        in other platforms.

        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): Deleted.
        (WebKit::WebAutomationSession::moveWindowOfBrowsingContext): Deleted.

2017-05-01  Chris Dumez  <cdumez@apple.com>

        Use RELEASE_LOG_ERROR() to do process termination logging
        https://bugs.webkit.org/show_bug.cgi?id=171521

        Reviewed by Andreas Kling.

        Use RELEASE_LOG_ERROR() to do process termination logging instead of RELEASE_LOG().
        This makes the issue more visible in Console.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
        (WebKit::WebProcessProxy::didExceedBackgroundCPULimit):

2017-05-01  Brady Eidson  <beidson@apple.com>

        Only try to get sandbox extension handle for IndexedDB directory if it is set.
        rdar://problem/31925828 and https://bugs.webkit.org/show_bug.cgi?id=171522

        Reviewed by Andy Estes.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

2017-05-01  Timothy Horton  <timothy_horton@apple.com>

        Expose viewport-fit instead of clip-to-safe-area
        https://bugs.webkit.org/show_bug.cgi?id=171503
        <rdar://problem/31918249>

        Reviewed by Simon Fraser.

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        (WebKit::VisibleContentRectUpdateInfo::unobscuredSafeAreaInsets):
        (WebKit::operator==):
        Plumb the safe area insets down from the UI process to the Web Content
        process inside the visible content rect update, alongside the obscured
        insets.

        * Shared/mac/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::avoidsUnsafeArea):
        (WebKit::RemoteLayerTreeTransaction::setAvoidsUnsafeArea):
        * Shared/mac/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode):
        (WebKit::RemoteLayerTreeTransaction::decode):
        (WebKit::RemoteLayerTreeTransaction::description):
        * UIProcess/PageClient.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didChangeAvoidsUnsafeArea):
        (WebKit::PageClientImpl::didChangeClipToSafeArea): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didCommitLayerTree):
        * UIProcess/mac/PageClientImpl.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::didChangeClipToSafeArea): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::willCommitLayerTree):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::viewportConfigurationChanged):
        (WebKit::WebPage::updateVisibleContentRects):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::setAvoidsUnsafeArea):
        (WebKit::WebPageProxy::setClipToSafeArea): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::avoidsUnsafeArea):
        (WebKit::WebPageProxy::clipToSafeArea): Deleted.
        * UIProcess/WebPageProxy.messages.in:
        Plumb the effective value of viewport-fit (whether or not to avoid
        the safe area for layout purposes) from the Web Content process
        to the UI process inside the layer tree transaction.
        Also, remove clip-to-safe-area plumbing.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _computedContentInset]):
        (-[WKWebView _computedUnobscuredSafeAreaInset]):
        (-[WKWebView _updateVisibleContentRects]):
        (-[WKWebView _updateScrollViewInsetAdjustmentBehavior]):
        (-[WKWebView _safeAreaShouldAffectObscuredInsets]):
        (-[WKWebView _unobscuredSafeAreaInsets]):
        (-[WKWebView _setUnobscuredSafeAreaInsets:]):
        (-[WKWebView _contentMayDrawInObscuredInsets]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Make use of the effective value of viewport-fit to decide whether to
        take the safe area into account when computing the obscured insets,
        and expose this to clients (in the case that they need to know
        because they push their own obscured insets down). Also expose a 
        safe area inset setter for that case as well.

        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        Remove a piece of the clip-to-safe-area implementation, and plumb
        safe area insets into the visible content rect update info.

        * UIProcess/ios/WKScrollView.h:
        * UIProcess/ios/WKScrollView.mm:
        (-[WKScrollView initWithFrame:]):
        (-[WKScrollView _contentInsetAdjustmentBehaviorWasExternallyOverridden]):
        (-[WKScrollView _setContentInsetAdjustmentBehavior:]):
        (-[WKScrollView _setContentInsetAdjustmentBehaviorInternal:]):
        Keep track of whether the client has ever touched the content inset adjustment
        behavior; if they have, we won't manage it ourselves.

2017-05-01  Brady Eidson  <beidson@apple.com>

        Update names in WKURLSchemeHandler/WKURLSchemeHandlerTask APIs.
        <rdar://problem/31824838> and https://bugs.webkit.org/show_bug.cgi?id=171508

        Reviewed by Andy Estes.

        This patch:
        - Renames WKURLSchemeHandlerTask to WKURLSchemeTask
        - Renames the method "startTask" to "startURLSchemeTask"
        - Renames the method "stopTask" to "stopURLSchemeTask"

        To those effects it's basically a global replace.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * UIProcess/API/APIURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.cpp.
        (API::URLSchemeTask::create):
        (API::URLSchemeTask::URLSchemeTask):
        * UIProcess/API/APIURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.h.
        * UIProcess/API/Cocoa/WKURLSchemeHandler.h:
        * UIProcess/API/Cocoa/WKURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.h.
        * UIProcess/API/Cocoa/WKURLSchemeTask.mm: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm.
        (raiseExceptionIfNecessary):
        (-[WKURLSchemeTaskImpl request]):
        (-[WKURLSchemeTaskImpl didReceiveResponse:]):
        (-[WKURLSchemeTaskImpl didReceiveData:]):
        (-[WKURLSchemeTaskImpl didFinish]):
        (-[WKURLSchemeTaskImpl didFailWithError:]):
        (-[WKURLSchemeTaskImpl _apiObject]):
        * UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTaskInternal.h.
        (WebKit::wrapper):
        * UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
        * UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
        (WebKit::WebURLSchemeHandlerCocoa::platformStartTask):
        (WebKit::WebURLSchemeHandlerCocoa::platformStopTask):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::stopURLSchemeTask):
        (WebKit::WebPageProxy::startURLSchemeHandlerTask): Deleted.
        (WebKit::WebPageProxy::stopURLSchemeHandlerTask): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.cpp.
        (WebKit::WebURLSchemeTask::create):
        (WebKit::WebURLSchemeTask::WebURLSchemeTask):
        (WebKit::WebURLSchemeTask::didReceiveResponse):
        (WebKit::WebURLSchemeTask::didReceiveData):
        (WebKit::WebURLSchemeTask::didComplete):
        (WebKit::WebURLSchemeTask::pageDestroyed):
        (WebKit::WebURLSchemeTask::stop):
        * UIProcess/WebURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.h.
        (WebKit::WebURLSchemeTask::identifier):
        (WebKit::WebURLSchemeTask::request):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::addURLSchemeTaskProxy):
        (WebKit::WebLoaderStrategy::removeURLSchemeTaskProxy):
        (WebKit::WebLoaderStrategy::remove):
        (WebKit::WebLoaderStrategy::addURLSchemeHandlerTaskProxy): Deleted.
        (WebKit::WebLoaderStrategy::removeURLSchemeHandlerTaskProxy): Deleted.
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::urlSchemeTaskDidReceiveResponse):
        (WebKit::WebPage::urlSchemeTaskDidReceiveData):
        (WebKit::WebPage::urlSchemeTaskDidComplete):
        (WebKit::WebPage::urlSchemeHandlerTaskDidReceiveResponse): Deleted.
        (WebKit::WebPage::urlSchemeHandlerTaskDidReceiveData): Deleted.
        (WebKit::WebPage::urlSchemeHandlerTaskDidComplete): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
        (WebKit::WebURLSchemeHandlerProxy::startNewTask):
        (WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
        (WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
        * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp.
        (WebKit::WebURLSchemeTaskProxy::WebURLSchemeTaskProxy):
        (WebKit::WebURLSchemeTaskProxy::startLoading):
        (WebKit::WebURLSchemeTaskProxy::stopLoading):
        (WebKit::WebURLSchemeTaskProxy::didReceiveResponse):
        (WebKit::WebURLSchemeTaskProxy::didReceiveData):
        (WebKit::WebURLSchemeTaskProxy::didComplete):
        (WebKit::WebURLSchemeTaskProxy::hasLoader):
        * WebProcess/WebPage/WebURLSchemeTaskProxy.h: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h.
        (WebKit::WebURLSchemeTaskProxy::request):
        (WebKit::WebURLSchemeTaskProxy::identifier):

2017-05-01  Chris Dumez  <cdumez@apple.com>

        Tweak how long we allow a process to go over its background CPU limit
        https://bugs.webkit.org/show_bug.cgi?id=170460
        <rdar://problem/31433141>

        Reviewed by Geoffrey Garen.

        Tweak how long we allow a process to go over its background CPU limit. We now use 8 minutes
        intervals (instead of previously 15). This is less conservative and aligned with our memory
        kills.

        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-05-01  Beth Dakin  <bdakin@apple.com>

        On-screen panel for candidate bar is in the wrong place when the caret is at the 
        start of a paragraph
        https://bugs.webkit.org/show_bug.cgi?id=171453
        -and corresponding-
        rdar://problem/29779764

        Reviewed by Tim Horton.

        This bug only happens when the caret is at the beginning of the paragraph, and it 
        is because Range::absoluteTextQuads() returns no quads in this case. I think it 
        might be correct that absoluteTextQuads() returns no quads in this case, so this 
        patch fixes the bug at the call site by using absoluteCaretBounds() in this case.

        SPI for testing.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _candidateRect]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Bug fix.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformEditorState):

2017-05-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add automation session API
        https://bugs.webkit.org/show_bug.cgi?id=171428

        Reviewed by Carlos Alberto Lopez Perez.

        Add new API to allow WebKitGTK+ to be controlled by automation. By default it's disabled, applications have to
        explicitly call webkit_web_context_set_automation_allowed() to enabled it. When a new automation session is
        requested, the signal WebKitWebContext::automation-started is emitted with a newly created
        WebKitAutomationSession, similar to how WebKitWebContext::download-started works. The user should connect to it
        have access to the WebKitAutomationSession and connect it its signals. When a new web view is requested to be
        created in a WebKitAutomationSession, the signal WebKitAutomationSession::create-web-view is emitted. The user
        should connect to it and return a WebKitWebView. The web views used for automation are special ones and need to
        be created with the new WebKitWebView:is-controlled-by-automation construct property enabled, otherwise we will
        refuse to create the requested browsing context.

        * PlatformGTK.cmake:
        * UIProcess/API/gtk/WebKitAutomationSession.cpp: Added.
        (webkitAutomationSessionSetProperty):
        (webkitAutomationSessionConstructed):
        (webkit_automation_session_class_init):
        (webkitAutomationSessionCreate):
        (webkitAutomationSessionGetSession):
        (webkit_automation_session_get_id):
        * UIProcess/API/gtk/WebKitAutomationSession.h: Added.
        * UIProcess/API/gtk/WebKitAutomationSessionPrivate.h: Added.
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        (webkit_web_context_class_init):
        (webkit_web_context_is_automation_allowed):
        (webkit_web_context_set_automation_allowed):
        (webkitWebContextCreatePageForWebView):
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/WebKitWebView.cpp:
        (webkitWebViewConstructed):
        (webkitWebViewSetProperty):
        (webkitWebViewGetProperty):
        (webkit_web_view_class_init):
        (webkit_web_view_is_controlled_by_automation):
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:

2017-05-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ debug build after r216002.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
        (WebKit::wrapClientRectList):

2017-04-30  Chris Dumez  <cdumez@apple.com>

        Drop support for legacy ClientRect / ClientRectList
        https://bugs.webkit.org/show_bug.cgi?id=171418

        Reviewed by Sam Weinig.

        GTK build fix.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
        (WebKit::kit):
        (WebKit::core):
        (WebKit::wrapClientRect):
        (webkit_dom_client_rect_constructed):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
        (ClientRectList::create):
        (ClientRectList::items):
        (ClientRectList::ClientRectList):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectPrivate.h:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
        (webkit_dom_element_get_bounding_client_rect):
        (webkit_dom_element_get_client_rects):

2017-04-30  Brady Eidson  <beidson@apple.com>

        More fixing after r215991
        https://bugs.webkit.org/show_bug.cgi?id=171483

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::syncAllCookies):

2017-04-30  Brady Eidson  <beidson@apple.com>

        Fix r215991
        https://bugs.webkit.org/show_bug.cgi?id=171483

        Unreviewed.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::syncAllCookies):

2017-04-30  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
        https://bugs.webkit.org/show_bug.cgi?id=171485

        Reviewed by Geoffrey Garen.

        * Platform/mac/MenuUtilities.mm:
        (WebKit::menuItemForTelephoneNumber):
        (WebKit::menuForTelephoneNumber):

2017-04-30  Brady Eidson  <beidson@apple.com>

        Updates to _WKWebsiteDataStoreConfiguration cookie storage location SPI.
        <rdar://problem/31906397> and https://bugs.webkit.org/show_bug.cgi?id=171483

        Reviewed by Geoff Garen (and kind of Andy Estes).
        
        Updates include:
        -Taking a file path as the config argument instead of a directory.
        -Proper sandbox extension handling.
        -Proper and thorough API test.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::syncAllCookies):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::syncAllCookies):

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _syncNetworkProcessCookies]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):

        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration _cookieStoragePath]):
        (-[_WKWebsiteDataStoreConfiguration _setCookieStoragePath:]):
        (-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]): Deleted.
        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]): Deleted.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::syncNetworkProcessCookies):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resolvedCookieStoragePath):
        (WebKit::WebsiteDataStore::resolvedCookieStorageDirectory): Deleted.

2017-04-30  Brady Eidson  <beidson@apple.com>

        Regression (r215941) Unexpected logging causes perf tests to fail.
        <rdar://problem/31907269> and https://bugs.webkit.org/show_bug.cgi?id=171482

        Reviewed by Alexey Proskuryakov.

        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::resolveAndCreateReadWriteDirectoryForSandboxExtension):

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::networkingCachesDirectory):
        (WebKit::WebProcessPool::webContentCachesDirectory):

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Only resolve the cookie storage directory
          if a custom one has been set.

2017-04-29  Youenn Fablet  <youenn@apple.com>

        Readd assertion removed accidentally in r215955
        https://bugs.webkit.org/show_bug.cgi?id=171466

        Reviewed by Eric Carlson.

        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::addItemFromUIProcess):

2017-04-29  Andy Estes  <aestes@apple.com>

        [macOS] Picture-in-picture should be disabled in WebPlaybackControlsManager during external media playback
        https://bugs.webkit.org/show_bug.cgi?id=171468
        <rdar://problem/31900349>

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateMediaTouchBar): Set canTogglePictureInPicture to YES by default
        on WebPlaybackControlsManager.

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

        Move WebCore CPUTime to WTF and implement it in all the platforms
        https://bugs.webkit.org/show_bug.cgi?id=171477

        Reviewed by Chris Dumez.

        We now hold Seconds in CPUTime instead of int64_t. It finally sends
        Seconds through WebKit2 IPC. We do not need to specialize ArgumentCoder
        for Seconds since Seconds just holds double.

        * UIProcess/PerActivityStateCPUUsageSampler.cpp:
        (WebKit::PerActivityStateCPUUsageSampler::PerActivityStateCPUUsageSampler):
        (WebKit::PerActivityStateCPUUsageSampler::reportWebContentCPUTime):
        (WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):
        * UIProcess/PerActivityStateCPUUsageSampler.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::reportWebContentCPUTime):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessPool.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::reportProcessCPUTime):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-04-28  Brady Eidson  <beidson@apple.com>

        Teach the DatabaseProcess to be fully SessionID aware
        https://bugs.webkit.org/show_bug.cgi?id=171451

        Reviewed by Geoffrey Garen.
        
        SessionIDs were already at the periphery of IDB and the DatabaseProcess.
        Getting a separate IDBServer per SessionID is a pretty straightforward improvement.

        * DatabaseProcess/DatabaseProcess.cpp:
        (WebKit::DatabaseProcess::idbServer):
        (WebKit::DatabaseProcess::initializeWebsiteDataStore):
        (WebKit::DatabaseProcess::fetchWebsiteData):
        (WebKit::DatabaseProcess::deleteWebsiteData):
        (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
        (WebKit::DatabaseProcess::indexedDatabaseOrigins):
        (WebKit::DatabaseProcess::initializeDatabaseProcess): Deleted.
        (WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Deleted.
        (WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Deleted.
        * DatabaseProcess/DatabaseProcess.h:
        (WebKit::DatabaseProcess::indexedDatabaseDirectory): Deleted.
        * DatabaseProcess/DatabaseProcess.messages.in:

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

        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::deleteDatabase):
        (WebKit::WebIDBConnectionToClient::openDatabase):
        (WebKit::WebIDBConnectionToClient::abortTransaction):
        (WebKit::WebIDBConnectionToClient::commitTransaction):
        (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
        (WebKit::WebIDBConnectionToClient::createObjectStore):
        (WebKit::WebIDBConnectionToClient::deleteObjectStore):
        (WebKit::WebIDBConnectionToClient::renameObjectStore):
        (WebKit::WebIDBConnectionToClient::clearObjectStore):
        (WebKit::WebIDBConnectionToClient::createIndex):
        (WebKit::WebIDBConnectionToClient::deleteIndex):
        (WebKit::WebIDBConnectionToClient::renameIndex):
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        (WebKit::WebIDBConnectionToClient::getRecord):
        (WebKit::WebIDBConnectionToClient::getAllRecords):
        (WebKit::WebIDBConnectionToClient::getCount):
        (WebKit::WebIDBConnectionToClient::deleteRecord):
        (WebKit::WebIDBConnectionToClient::openCursor):
        (WebKit::WebIDBConnectionToClient::iterateCursor):
        (WebKit::WebIDBConnectionToClient::establishTransaction):
        (WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
        (WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
        (WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
        (WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
        (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
        (WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
        * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:

        * Shared/Databases/DatabaseProcessCreationParameters.cpp:
        (WebKit::DatabaseProcessCreationParameters::encode):
        (WebKit::DatabaseProcessCreationParameters::decode):
        * Shared/Databases/DatabaseProcessCreationParameters.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureDatabaseProcess):
        (WebKit::WebProcessPool::resolvePathsForSandboxExtensions):
        (WebKit::WebProcessPool::pageAddedToProcess):
        * UIProcess/WebProcessPool.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::databaseProcessParameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory):

        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::create):
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:

        * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
        (WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):

2017-04-28  Youenn Fablet  <youenn@apple.com>

        getUserMedia video streams should follow device orientation
        https://bugs.webkit.org/show_bug.cgi?id=171284

        Reviewed by Eric Carlson.

        Refactoring to specialize CaptureFactory in VideoCaptureFactory and AudioCaptureFactory.
        Refactoring to return a CaptureSourceOrError instead of passing an out parameter in addition to returning a RefPtr.

        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::createMediaSourceForCaptureDeviceWithConstraints): Deleted.
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

        [iOS] We should not take a background assertion for the UIProcess when app is MobileMail
        https://bugs.webkit.org/show_bug.cgi?id=171435
        <rdar://problem/31132330>

        Reviewed by Geoffrey Garen.

        Add SPI to disable taking on background process assertions in the UIProcess.
        This is useful for MobileMail.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration shouldTakeUIBackgroundAssertion]):
        (-[_WKProcessPoolConfiguration setShouldTakeUIBackgroundAssertion:]):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertion::setClient):
        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::ProcessThrottler):
        (WebKit::m_shouldTakeUIBackgroundAssertion):
        (WebKit::ProcessThrottler::didConnectToProcess):
        * UIProcess/ProcessThrottler.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::WebProcessProxy):

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

        Unreviewed attempt to fix iOS build after r215943.

        * Configurations/Base.xcconfig:

2017-04-28  Andy Estes  <aestes@apple.com>

        [macOS] WebPlaybackControlsManager needs to know when the selected text or audio track changes
        https://bugs.webkit.org/show_bug.cgi?id=171434
        <rdar://problem/31887922>

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionIndex): Set
        m_audioMediaSelectedIndex and notified clients.
        (WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex): Ditto for
        m_legibleMediaSelectedIndex.
        (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionIndex): Called
        WebPlaybackSessionModelContext::setAudioMediaSelectionIndex().
        (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionIndex): Called
        WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex().
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionIndexChanged): Called
        WebPlaybackSessionManager:: audioMediaSelectionIndexChanged().
        (WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionIndexChanged): Called
        WebPlaybackSessionManager::legibleMediaSelectionIndexChanged().
        (WebKit::WebPlaybackSessionManager::audioMediaSelectionIndexChanged): Sent
        WebPlaybackSessionManagerProxy::SetAudioMediaSelectionIndex().
        (WebKit::WebPlaybackSessionManager::legibleMediaSelectionIndexChanged): Sent
        WebPlaybackSessionManagerProxy::SetLegibleMediaSelectionIndex().

2017-04-28  Brady Eidson  <beidson@apple.com>

        Start of support for multiple WebsiteDataStore/SessionIDs per process
        https://bugs.webkit.org/show_bug.cgi?id=171422

        Reviewed by Geoffrey Garen.

        * CMakeLists.txt:
        * WebKit2.xcodeproj/project.pbxproj:

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::destroyPrivateBrowsingSession): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

        * Shared/WebsiteDataStoreParameters.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.
        (WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters):
        (WebKit::WebsiteDataStoreParameters::encode):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::defaultDataStore):
        (API::WebsiteDataStore::createLegacy):
        (API::WebsiteDataStore::WebsiteDataStore):
        (API::WebsiteDataStore::create): Deleted.
        * UIProcess/API/APIWebsiteDataStore.h:

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):

        * UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
        (webkitWebsiteDataManagerCreate):
        (webkitWebsiteDataManagerGetDataStore):

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

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::pageAddedToProcess):
        (WebKit::WebProcessPool::pageRemovedFromProcess):

        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::create):
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::WebFrameNetworkingContext::storageSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::addWebsiteDataStore):
        (WebKit::WebProcess::destroySession):
        (WebKit::WebProcess::destroyPrivateBrowsingSession): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2017-04-28  Youenn Fablet  <youenn@apple.com>

        Adding a runtime flag specific to MediaDevices
        https://bugs.webkit.org/show_bug.cgi?id=171433

        Reviewed by Geoffrey Garen.

        Adding a preference for MediaDevices.
        Setting media devices runtime flag to false by default.
        Setting peer connection and media stream flags to true by default.
        Sending microphone sandbox extension based on media devices and not media stream flag.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetMediaDevicesEnabled):
        (WKPreferencesGetMediaDevicesEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-04-28  Brady Eidson  <beidson@apple.com>

        Teach WebProcessPool to track a map of SessionIDs to WebPageProxys to manage their lifetime
        https://bugs.webkit.org/show_bug.cgi?id=171408

        Reviewed by Alex Christensen.

        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::sessionID):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::close):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::pageAddedToProcess):
        (WebKit::WebProcessPool::pageRemovedFromProcess):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::removeWebPage):
        * UIProcess/WebProcessProxy.h:

2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move UUID from WebCore/platform to WTF
        https://bugs.webkit.org/show_bug.cgi?id=171372

        Reviewed by Michael Catanzaro.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::handleForWebPageProxy):
        (WebKit::WebAutomationSession::handleForWebFrameID):
        * UIProcess/gtk/WaylandCompositor.cpp:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::createUUID):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::openWithNativeApplication):

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

        Align colspan/rowspan limits with the latest HTML specification
        https://bugs.webkit.org/show_bug.cgi?id=171322

        Reviewed by Darin Adler.

        GTK build fix.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
        (webkit_dom_html_table_cell_element_get_col_span):
        (webkit_dom_html_table_cell_element_set_col_span):

2017-04-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        WKUIDelegatePrivate needs a hook to vend data used to initialize item providers for data interaction
        https://bugs.webkit.org/show_bug.cgi?id=171386
        <rdar://problem/31557237>

        Reviewed by Beth Dakin.

        Add a new WKUIDelegate hook, _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

2017-04-27  Brady Eidson  <beidson@apple.com>

        Refactor SessionID to support multiple non-ephemeral (persistent) sessions.
        https://bugs.webkit.org/show_bug.cgi?id=171367

        Reviewed by Andy Estes.

        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::initialize): Child processes should never be generating new SessionIDs,
          so enable generation protection.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<SessionID>::encode): Deleted.
        (IPC::ArgumentCoder<SessionID>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::createNonPersistent):
        (WebKit::generateNonPersistentSessionID): Deleted.

2017-04-27  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION(r213764): Async decoding of animated images is disabled for ImageDocument
        https://bugs.webkit.org/show_bug.cgi?id=170333

        Reviewed by Simon Fraser.

        Disbale the async decoding for large images for now.

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

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

        [WK2][macOS] Allow multi-touch related iokit-get-properties
        https://bugs.webkit.org/show_bug.cgi?id=171355
        <rdar://problem/31851928>

        Reviewed by Alexey Proskuryakov.

        During testing I've noticed Sandbox Violations being generated during some 'Force Touch' track pad use.
        The sandbox should allow these IOKit properties to be accessed.

        * WebProcess/com.apple.WebProcess.sb.in:

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

        Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=171399

        Reviewed by Brady Eidson.

        This SPI isn't hooked up yet, but it has a test that will need to be updated once it works.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKDraggableElementInfo.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resolvedCookieStorageDirectory):

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

        Element.getBoundingClientRect() / getClientRects() should return a DOMRect types
        https://bugs.webkit.org/show_bug.cgi?id=171226

        Reviewed by Simon Fraser.

        GTK build fix.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
        (toClientRect):
        (webkit_dom_element_get_bounding_client_rect):
        (webkit_dom_element_get_client_rects):

2017-04-27  Brady Eidson  <beidson@apple.com>

        Update NetworkStorageSession to support multiple persistent sessions and explicitly set cookie storages.
        https://bugs.webkit.org/show_bug.cgi?id=171365

        Reviewed by Andy Estes.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

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

        Modernize Frame.h
        https://bugs.webkit.org/show_bug.cgi?id=171357

        Reviewed by Andy Estes.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::isSelectTrailingWhitespaceEnabled):
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::contextMenuAtPointInWindow):
        (WebKit::handleContextMenuEvent):
        (WebKit::WebPage::isSelectTrailingWhitespaceEnabled):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::rangeForGranularityAtPoint):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):

2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remote inspector should support inspecting targets with previous version of backend commands
        https://bugs.webkit.org/show_bug.cgi?id=171267

        Reviewed by Michael Catanzaro.

        There's a FIXME for this in the code. The remote inspector proxy allows to pass a backend commands URL when
        inspecting a target. That URL, if not empty, is used as Protocol/InspectorBackendCommands.js in the inspector
        code instead of the local copy. We are currently assuming that both ends use the same version of that file.

        * UIProcess/glib/RemoteInspectorClient.cpp:
        (WebKit::RemoteInspectorProxy::load): Pass RemoteInspectorClient::backendCommandsURL() to load().
        (WebKit::RemoteInspectorClient::setupConnection): Get the local backend commands hash and pass it to
        SetupInspectorClient method. Extract the server backend commands from the result and call setBackendCommands().
        (WebKit::RemoteInspectorClient::setBackendCommands): Create a data URL for the server backend commands file
        conents if needed.
        * UIProcess/glib/RemoteInspectorClient.h:
        (WebKit::RemoteInspectorClient::backendCommandsURL):

2017-04-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebItemProviderPasteboard should not synchronously load provided data
        https://bugs.webkit.org/show_bug.cgi?id=171341
        <rdar://problem/31614010>

        Reviewed by Tim Horton.

        Adds plumbing for updatePreferredTypeIdentifiers through the WebPasteboardProxy. This allows the web process to
        signal to the UI process what UTIs the current drop target should accept and load. See WebCore ChangeLog for more
        details.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-04-26  Youenn Fablet  <youenn@apple.com>

        Unauthenticated CORS preflight requests should not use client certificates
        https://bugs.webkit.org/show_bug.cgi?id=171298

        Reviewed by Alex Christensen.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ensuring that session dedicated to requests that do not want to use credentials do not look for client credentials.

2017-04-26  Eric Carlson  <eric.carlson@apple.com>

        The current page is given a muted state when starting a media stream on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=171290
        <rdar://problem/31821427>

        Reviewed by Jer Noble.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Don't mute the current
        page on iOS either, that will prevent the new media stream from playing.

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

        Make user script injection more robust
        https://bugs.webkit.org/show_bug.cgi?id=171339
        <rdar://problem/30643691>

        Reviewed by Geoffrey Garen.

        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::forEachUserScript):
        (WebKit::WebUserContentController::forEachUserStyleSheet):
        (WebKit::WebUserContentController::forEachUserMessageHandler):
        * WebProcess/UserContent/WebUserContentController.h:

2017-04-26  Zalan Bujtas  <zalan@apple.com>

        RTL: recent searches popover is displayed in incorrect location
        https://bugs.webkit.org/show_bug.cgi?id=171338
        <rdar://problem/31377807>

        Reviewed by Dean Jackson.

        Add RTL support for the pop-under branch.

        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):

2017-04-26  Antti Koivisto  <antti@apple.com>

        Enable expired-only reload policy on Mac and iOS
        https://bugs.webkit.org/show_bug.cgi?id=171264
        <rdar://problem/31807637>

        Reviewed by Andreas Kling.

        Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
        The behavor is enabled in Safari and for other clients based on SDK version check.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageReload):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView reload]):
        * UIProcess/Cocoa/VersionChecks.h:

2017-04-26  Andy Estes  <aestes@apple.com>

        [macOS] Add picture-in-picture support to WebPlaybackControlsManager
        https://bugs.webkit.org/show_bug.cgi?id=171328
        <rdar://problem/29875010>

        Reviewed by Jer Noble.

        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::togglePictureInPicture): Added. Calls
        WebPlaybackSessionManagerProxy::togglePictureAndPicture().
        (WebKit::WebPlaybackSessionManagerProxy::togglePictureInPicture): Added. Sends
        TogglePictureInPicture to WebPlaybackSessionManager.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateMediaTouchBar): Called
        -[WebPlaybackControlsManager setAllowsPictureInPicturePlayback:YES] if
        WebPreferences::allowsPictureInPictureMediaPlayback() is true.
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionManager::togglePictureInPicture): Added. Sets a
        UserGestureIndicator and calls WebPlaybackSessionModel::togglePictureInPicture().

2017-04-26  Tim Horton  <timothy_horton@apple.com>

        WebKit calls AppKit NSCell API from a background queue
        https://bugs.webkit.org/show_bug.cgi?id=171318
        <rdar://problem/31798317>

        Reviewed by Anders Carlsson.

        * UIProcess/mac/ServicesController.mm:
        (WebKit::ServicesController::refreshExistingServices):
        Synchronously bounce to the main thread to do non-thread-safe NSCell related work.

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

        Encoded filename should be decoded for WKContentExtension.identifier
        https://bugs.webkit.org/show_bug.cgi?id=171316

        Reviewed by Andy Estes.

        * UIProcess/API/APIContentExtensionStore.cpp:
        (API::createExtension):
        (API::ContentExtensionStore::lookupContentExtension):
        (API::ContentExtensionStore::getAvailableContentExtensionIdentifiers):

2017-04-26  Andrew Gold  <agold@apple.com>

        Move mediaCaptureEnabled from WKWebViewConfiguration to WKPreferences
        https://bugs.webkit.org/show_bug.cgi?id=171294

        Reviewed by Eric Carlson.

        Since we now want the ability to toggle this setting dynamically, I have
        moved it from WKWebViewConfiguration to WKPreferences.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _mediaStreamEnabled]):
        (-[WKPreferences _setMediaStreamEnabled:]):

        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): No longer set mediaStream enabled from
        the configuration.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _mediaStreamEnabled]): Deleted.
        (-[WKWebViewConfiguration _setMediaStreamEnabled:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

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

        REGRESSION(206450): WebKit2PlatformMouseEvent m_modifierFlags not set
        https://bugs.webkit.org/show_bug.cgi?id=171297
        <rdar://problem/31530719>

        Reviewed by Geoffrey Garen.

        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

2017-04-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, speculative build fix

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

        For the time being, remove all references to UIItemProviders from this private header.
        This should be fixed to use unavailability macros in a followup. See <rdar://problem/31827095>.

2017-04-25  Brent Fulgham  <bfulgham@apple.com>

        Limit allowed size of document.title to avoid locking WebKit clients
        https://bugs.webkit.org/show_bug.cgi?id=165113
        <rdar://problem/28324389>

        Reviewed by Darin Adler.

        When a web application attempts to set an extremely long title, truncate the
        title to a more reasonable size.

        We do this at at the presentation layer, rather than in the DOM, so that we do
        not affect script function. Instead, we merely limit display to a level that is
        reasonable for normal GUI widgets. Anything else needs to be truncated in the UI
        layer, so it is a waste of effort to send across IPC.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2017-04-25  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Introduce shorter time-to-live for cookie partition whitelisting
        https://bugs.webkit.org/show_bug.cgi?id=171295
        <rdar://problem/31823818>

        Reviewed by Brent Fulgham.

        * UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
        (WKResourceLoadStatisticsManagerSetTimeToLiveCookiePartitionFree):
        (WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandler):
        (WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandlerForOneDomain):
            Changes and additions to test infrastructure.
        * UIProcess/API/C/WKResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandlerForOneDomain):
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
            Changes and additions to test infrastructure.
        * UIProcess/WebResourceLoadStatisticsManager.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
            No longer sends a boolean parameter to
            WebCore::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().

2017-04-25  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r213719): WebGL content on cubeslam.com is 1/4 expected size
        https://bugs.webkit.org/show_bug.cgi?id=171300
        rdar://problem/31051538

        Reviewed by Dean Jackson.

        Propagating the contentsScale to the UI process for canvas content layers causes
        scaling issues, so don't do it for contents-provided layers.
        
        No test because WebGL can't be tested in the iOS simulator.

        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):

2017-04-25  Brady Eidson  <beidson@apple.com>

        Update WebProcess(Pool) to assume there's always a WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=171299

        Reviewed by Alex Christensen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::warmInitialProcess):
        (WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
        (WebKit::WebProcessPool::createWebPage):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::create):
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::m_userMediaCaptureManagerProxy):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::websiteDataStore):

2017-04-25  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215730.

        The LayoutTest for this change is a flaky timeout on mac-wk1
        debug.

        Reverted changeset:

        "Enable expired-only reload policy on Mac and iOS"
        https://bugs.webkit.org/show_bug.cgi?id=171264
        http://trac.webkit.org/changeset/215730

2017-04-24  Matt Rajca  <mrajca@apple.com>

        Indicate presence of audio when handling autoplay events.
        https://bugs.webkit.org/show_bug.cgi?id=171227

        Reviewed by Alex Christensen.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::handleAutoplayEvent):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleAutoplayEvent):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::handleAutoplayEvent):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2017-04-25  Daniel Bates  <dabates@apple.com>

        [Cocoa][Win] Enable of X-Content-Type-Options: nosniff header
        https://bugs.webkit.org/show_bug.cgi?id=136452
        <rdar://problem/23412620>

        Reviewed by Brent Fulgham.

        Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

        * Configurations/FeatureDefines.xcconfig:

2017-04-25  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Clear network process cache when clearing store
        https://bugs.webkit.org/show_bug.cgi?id=171256
        <rdar://problem/31802347>

        Reviewed by Brent Fulgham.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
            Now takes and passes on the boolean parameter clearFirst to
            WebCore::NetworkStorageSession::setShouldPartitionCookiesForHosts().
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
            The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
            takes the boolean parameter clearFirst.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
            Now takes and passes on the boolean parameter clearFirst to
            Messages::NetworkProcess::ShouldPartitionCookiesForTopPrivatelyOwnedDomains.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
            The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
            takes the boolean parameter clearFirst.
        * UIProcess/WebResourceLoadStatisticsManager.cpp:
        (WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
            Now uses the boolean parameter clearFirst when calling
            WebCore::ResourceLoadObserver::fireShouldPartitionCookiesHandler().
        (WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
            No longer uses the deleted store getter.
        (WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
            No longer uses the deleted store getter.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
            No sends the boolean parameter clearFirst to
            ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
        (WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
            Now expects a handler with the boolean parameter clearFirst.
        (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
        * UIProcess/WebResourceLoadStatisticsStore.h:
            Now uses the new WebCore::ResourceLoadObserver::clearInMemoryStore().
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
            Now takes and passes on the boolean parameter clearFirst in its
            message to the network process.
        (WebKit::WebsiteDataStore::registerSharedResourceLoadObserver):
            Now expects a handler with the boolean parameter clearFirst.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Content-Disposition header filename is ignored when 'download' attribute is specified in HTML
        https://bugs.webkit.org/show_bug.cgi?id=171239
        <rdar://problem/31789855>

        Reviewed by Alex Christensen.

        Content-Disposition header filename is ignored when 'download' attribute is specified in HTML.
        This is not as per HTML specification:
        - https://html.spec.whatwg.org/#as-a-download (Step 2)

        Content-Disposition header filename is supposed to override the value of the download attribute.

        Firefox and Chrome follow the specification.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::findPendingDownloadLocation):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::didReceiveResponse):

2017-04-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add WebKitInspectorWindow to create inspector windows from local and remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=171261

        Reviewed by Michael Catanzaro.

        The code is currently duplicated in WebInspectorProxyGtk.cpp and RemoteWebInspectorProxyGtk.cpp. We can simplify
        it by using a common widget in both places.
        This patch also fixes the build when using GTK+ < 3.16.

        * PlatformGTK.cmake:
        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::updateWindowTitle):
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::createInspectorWindow):
        (WebKit::WebInspectorProxy::updateInspectorWindowTitle):
        * UIProcess/gtk/WebKitInspectorWindow.cpp: Added.
        (webkit_inspector_window_class_init):
        (webkit_inspector_window_init):
        (webkitInspectorWindowNew):
        (webkitInspectorWindowSetSubtitle):
        * UIProcess/gtk/WebKitInspectorWindow.h: Added.

2017-04-25  Antti Koivisto  <antti@apple.com>

        Enable expired-only reload policy on Mac and iOS
        https://bugs.webkit.org/show_bug.cgi?id=171264
        <rdar://problem/31807637>

        Reviewed by Andreas Kling.

        Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
        The behavor is enabled in Safari and for other clients based on SDK version check.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageReload):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView reload]):
        * UIProcess/Cocoa/VersionChecks.h:

2017-04-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support reading NSURL titles from the pasteboard when performing data interaction
        https://bugs.webkit.org/show_bug.cgi?id=171156
        <rdar://problem/31356937>

        Reviewed by Tim Horton.

        Adjust for interface changes in WebCore to support plumbing the title of an NSURL from the platform pasteboard
        back to WebCore. Additionally, implement WebEditorClient::hasRichlyEditableSelection (which previously returned
        false) to check whether the current selection is richly editable, or the drop caret is in richly editable content.
        See WebCore ChangeLog for more details.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::readURLFromPasteboard):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::readURLFromPasteboard):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::hasRichlyEditableSelection):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasRichlyEditableSelection):
        * WebProcess/WebPage/WebPage.h:

2017-04-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Respect fidelity order when reading web content from item providers
        https://bugs.webkit.org/show_bug.cgi?id=171155
        <rdar://problem/31356937>

        Reviewed by Tim Horton.

        Adjusts for changes in WebCore by adding plumbing to support Pasteboard::getTypesByFidelityForItemAtIndex. See
        WebCore/ChangeLog for more details.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getPasteboardTypesByFidelityForItemAtIndex):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getTypesByFidelityForItemAtIndex):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-04-24  Brady Eidson  <beidson@apple.com>

        WebProcessPools should always have a WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=171252

        Reviewed by Alex Christensen.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::registerSharedResourceLoadObserver): Deleted.
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetWebsiteDataStore):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::WebProcessPool):
        (WebKit::WebProcessPool::createWebPage):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::isAssociatedProcessPool):

2017-04-24  Youenn Fablet  <youenn@apple.com>

        Set defaults video getUserMedia constraints
        https://bugs.webkit.org/show_bug.cgi?id=171127

        Reviewed by Eric Carlson.

        Updated to cope with MediaStreamConstraintsImpl refactoring.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

2017-04-24  Chris Dumez  <cdumez@apple.com>

        Allow tabs with capturing audio or video to exceed background CPU limit
        https://bugs.webkit.org/show_bug.cgi?id=171249
        <rdar://problem/31796314>

        Reviewed by Geoffrey Garen.

        Allow tabs with capturing audio or video to exceed background CPU limit as this
        is a legit case of potentially high background CPU use.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedBackgroundCPULimit):

2017-04-24  Andy Estes  <aestes@apple.com>

        Try to fix the 32-bit macOS build.

        * UIProcess/Cocoa/WebViewImpl.mm:

2017-04-24  Andy Estes  <aestes@apple.com>

        [macOS] Enable media selection button on AVTouchBarScrubber
        https://bugs.webkit.org/show_bug.cgi?id=171149
        <rdar://problem/29875010>

        Reviewed by Beth Dakin.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateMediaTouchBar):

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

        Reduce copies and allocations in SharedBuffer::append
        https://bugs.webkit.org/show_bug.cgi?id=170956

        Reviewed by Andreas Kling.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
        * Platform/IPC/DataReference.cpp:
        (IPC::SharedBufferDataReference::encode):
        * Shared/ShareableResource.cpp:
        (WebKit::ShareableResource::wrapInSharedBuffer):
        * UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:
        (-[WKURLSchemeHandlerTaskImpl didReceiveData:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::addArchiveResource):
        (WebKit::PDFPlugin::liveResourceData):
        (WebKit::PDFPlugin::writeItemsToPasteboard):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::redeliverManualStream):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::cachedResponseDataForURL):

2017-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
        https://bugs.webkit.org/show_bug.cgi?id=166680

        Reviewed by Michael Catanzaro.

        Remove INSPECTOR_SERVER code and add new classes to implement REMOTE_INSPECTOR. The WebKitWebContext registers a
        custom protocol "inspector" that loads a page with the list of debuggable targets.

        * PlatformGTK.cmake: Add new files to compilation and remove the old ones.
        * UIProcess/API/gtk/WebKit2InspectorGResourceBundle.xml: Removed.
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: Added.
        (WebKit::RemoteInspectorProtocolHandler::RemoteInspectorProtocolHandler):
        (WebKit::RemoteInspectorProtocolHandler::~RemoteInspectorProtocolHandler):
        (WebKit::RemoteInspectorProtocolHandler::webViewDestroyed):
        (WebKit::RemoteInspectorProtocolHandler::userContentManagerDestroyed):
        (WebKit::RemoteInspectorProtocolHandler::handleRequest):
        (WebKit::RemoteInspectorProtocolHandler::inspect):
        (WebKit::RemoteInspectorProtocolHandler::targetListChanged):
        (WebKit::RemoteInspectorProtocolHandler::connectionClosed):
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.h: Added.
        * UIProcess/API/gtk/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        * UIProcess/InspectorServer/HTTPRequest.cpp: Add missing ENABLE(INSPECTOR_SERVER) ifdefs.
        * UIProcess/InspectorServer/HTTPRequest.h:
        * UIProcess/InspectorServer/WebInspectorServer.h:
        * UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp: Removed.
        * UIProcess/RemoteWebInspectorProxy.cpp:
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/glib/RemoteInspectorClient.cpp: Added.
        (WebKit::RemoteInspectorClient::RemoteInspectorClient):
        (WebKit::RemoteInspectorClient::~RemoteInspectorClient):
        (WebKit::dbusConnectionCallAsyncReadyCallback):
        (WebKit::RemoteInspectorClient::connectionClosedCallback):
        (WebKit::RemoteInspectorClient::setupConnection):
        (WebKit::RemoteInspectorClient::connectionClosed):
        (WebKit::RemoteInspectorClient::inspect):
        (WebKit::RemoteInspectorClient::sendMessageToBackend):
        (WebKit::RemoteInspectorClient::closeFromFrontend):
        (WebKit::RemoteInspectorClient::setTargetList):
        (WebKit::RemoteInspectorClient::sendMessageToFrontend):
        * UIProcess/glib/RemoteInspectorClient.h: Added.
        (WebKit::RemoteInspectorObserver::~RemoteInspectorObserver):
        (WebKit::RemoteInspectorClient::targets):
        (WebKit::RemoteInspectorClient::hostAndPort):
        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp: Added.
        (WebKit::RemoteWebInspectorProxy::updateWindowTitle):
        (WebKit::inspectorViewDestroyed):
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        (WebKit::RemoteWebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::RemoteWebInspectorProxy::platformBringToFront):
        (WebKit::RemoteWebInspectorProxy::platformSave):
        (WebKit::RemoteWebInspectorProxy::platformAppend):
        (WebKit::RemoteWebInspectorProxy::platformStartWindowDrag):
        (WebKit::RemoteWebInspectorProxy::platformOpenInNewTab):
        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::initializeRemoteInspectorServer):
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
        (didReceiveMessageToPage): Updated after the GRefPtr hash traitds changes.
        * config.h:

2017-04-23  Dan Bernstein  <mitz@apple.com>

        [macOS] WKWebInspectorProxyObjCAdapter has a public ivar
        https://bugs.webkit.org/show_bug.cgi?id=171200

        Reviewed by Geoffrey Garen.

        * UIProcess/API/C/mac/WKInspectorPrivateMac.h: Made ivar private.

2017-04-23  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r215657 and r215676.
        https://bugs.webkit.org/show_bug.cgi?id=171201

        Broke the build (Requested by ap on #webkit).

        Reverted changesets:

        "[macOS] Enable media selection button on AVTouchBarScrubber"
        https://bugs.webkit.org/show_bug.cgi?id=171149
        http://trac.webkit.org/changeset/215657

        "Build fix after r215657."
        http://trac.webkit.org/changeset/215676

2017-04-23  Alexey Proskuryakov  <ap@apple.com>

        Build fix after r215657.

        * UIProcess/Cocoa/WebViewImpl.mm:

2017-04-23  Andy Estes  <aestes@apple.com>

        [macOS] AVTouchBarMediaSelectionOptions should be created with the correct type
        https://bugs.webkit.org/show_bug.cgi?id=171192
        <rdar://problem/29875010>

        Reviewed by Wenson Hsieh.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaSelectionOption>::encode):
        (IPC::ArgumentCoder<MediaSelectionOption>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
        (WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionOptions):
        (WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionOptions):
        (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions):
        (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions):
        * WebProcess/cocoa/WebPlaybackSessionManager.h:
        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
        (WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManager::audioMediaSelectionOptionsChanged):
        (WebKit::WebPlaybackSessionManager::legibleMediaSelectionOptionsChanged):

2017-04-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support writing link titles to the pasteboard when beginning data interaction on a link
        https://bugs.webkit.org/show_bug.cgi?id=171154
        <rdar://problem/31356937>

        Reviewed by Andy Estes.

        Adds support for setting the _title attribute of NSURLs written to the pasteboard. See WebCore ChangeLog for more details.

        * Scripts/webkit/messages.py:
        (headers_for_type):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardURL>::encode):
        (IPC::ArgumentCoder<PasteboardURL>::decode):
        * Shared/WebCoreArgumentCoders.h:

        Teach PasteboardURL to be serialized in IPC. For now, we just send across the absolute string of the link and
        its title.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::writeURLToPasteboard):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:

        Add IPC plumbing for writing PasteboarURLs to the pasteboard.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::writeToPasteboard):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-04-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r215608.

        Hundreds of test failures on GTK bot

        Reverted changeset:

        "Reduce copies and allocations in SharedBuffer::append"
        https://bugs.webkit.org/show_bug.cgi?id=170956
        http://trac.webkit.org/changeset/215608

2017-04-21  Andy Estes  <aestes@apple.com>

        [macOS] Enable media selection button on AVTouchBarScrubber
        https://bugs.webkit.org/show_bug.cgi?id=171149
        <rdar://problem/29875010>

        Reviewed by Beth Dakin.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateMediaTouchBar):

2017-04-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add delegate hooks for overriding unhanded data interaction operations
        https://bugs.webkit.org/show_bug.cgi?id=171005
        <rdar://problem/31669646>

        Reviewed by Tim Horton.

        Adds support for overriding data interaction operations through two new delegate methods:
        _webView:willUpdateDataInteractionOperationToOperation:forSession:, and
        _webView:dataInteractionOperationWasHandled:forSession:. The former may be overridden to return a different
        operation type than what WebKit would originally have returned, and the latter may be overridden to run custom
        logic after the web process has handled a data interaction operation.

        Additionally, includes some minor cleanup around WKContentViewInteraction. With the new
        _webView:dataInteractionOperationWasHandled:forSession: delegate method, the last method on _WKTestingDelegate
        may be removed. This means _WKTestingDelegate is no longer needed, so this patch removes its header entirely.
        Also, relocates some state variables formerly on WKContentView to WKContentView's WKDataInteractionState struct
        instead, so that all state associated with data interaction may be cleaned up at the same time.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _testingDelegate]): Deleted.
        (-[WKWebView _setTestingDelegate:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKTestingDelegate.h: Removed.
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Add a new "handled" IPC argument to DidPerformDataInteractionControllerOperation. This lets the UI process
        know whether or not the data interaction operation was handled by the web process, and is eventually plumbed
        through to the UI delegate via the new SPI.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didPerformDataInteractionControllerOperation):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):

2017-04-21  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 5
        https://bugs.webkit.org/show_bug.cgi?id=171134
        rdar://problem/31589635

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentAuthorizationStatus):
        Remove this and add a new version that doesn't use any deprecated values.

        (WebKit::toPKPaymentAuthorizationStatus):
        New function that takes a WebCore::PaymentAuthorizationResult and converts it to a status, for older OSes.

        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
        Use the new toPKPaymentAuthorizationStatus versions.

        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
        Ditto.

        (WebKit::status): Deleted.

2017-04-21  David Kilzer  <ddkilzer@apple.com>

        Switch from -std=gnu++11 to -std=gnu++14 for consistency in DerivedSources.make
        <https://webkit.org/b/171122>

        Reviewed by Brent Fulgham.

        * DerivedSources.make: Switch to -std=gnu++14 for preprocessing
        headers to check for build settings.

2017-04-21  Jer Noble  <jer.noble@apple.com>

        [WK2][MediaCapture] Pass muted and enabled state across process boundary when capturing in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=170846

        Reviewed by Jon Lee.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::setMuted):
        (WebKit::UserMediaCaptureManagerProxy::setEnabled):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setMuted):
        (WebKit::UserMediaCaptureManager::Source::setEnabled):
        (WebKit::UserMediaCaptureManager::setMuted):
        (WebKit::UserMediaCaptureManager::setEnabled):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2017-04-21  Jer Noble  <jer.noble@apple.com>

        [WK2][MediaCapture] Remove now-unused WKWebViewConfiguration property for shouldCaptureAudioInUIProcess
        https://bugs.webkit.org/show_bug.cgi?id=170847

        Reviewed by Jon Lee.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _shouldCaptureAudioInUIProcess]): Deleted.
        (-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]): Deleted.

2017-04-21  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 4
        https://bugs.webkit.org/show_bug.cgi?id=171125
        rdar://problem/31589635

        Reviewed by Tim Horton.

        It doesn't really matter what we pass to these completion functions, since the sheet has already been dismissed at this point
        so just remove the status parameter.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):

2017-04-21  Andrew Gold  <agold@apple.com>

        -[WKUIDelegatePrivate _webView:requestUserMediaAuthorizationForMicrophone:camera:url:mainFrameURL:decisionHandler:] 
        decision handler should only have one parameter.
        https://bugs.webkit.org/show_bug.cgi?id=171081

        Reviewed by Tim Horton.

        Because user media authorization is all or nothing, we should not have separate booleans
        to indicate authorization. Additionally, rather than passing two separate booleans to the
        UIDelegate, we now pass an NS_OPTIONS parameter.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Added _WKCaptureDevice NS_OPTIONS.

        * UIProcess/Cocoa/UIDelegate.mm:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate): Uses new WKUIDelegatePrivate method.
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.

2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed, added missing file to PlatformMac.cmake

        * PlatformMac.cmake:

2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>

        Unreviewed follow-up for r215609

        * UIProcess/API/Cocoa/WKWebView.mm: Move internal header include too.

2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>

        Include iOS-specific headers inside preprocessor guard
        https://bugs.webkit.org/show_bug.cgi?id=171104

        Reviewed by Michael Catanzaro.

        This patch should fix Mac cmake build.

        * UIProcess/API/Cocoa/WKWebView.mm:

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

        Reduce copies and allocations in SharedBuffer::append
        https://bugs.webkit.org/show_bug.cgi?id=170956

        Reviewed by Andreas Kling.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
        * Platform/IPC/DataReference.cpp:
        (IPC::SharedBufferDataReference::encode):
        * Shared/ShareableResource.cpp:
        (WebKit::ShareableResource::wrapInSharedBuffer):
        * UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:
        (-[WKURLSchemeHandlerTaskImpl didReceiveData:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::addArchiveResource):
        (WebKit::PDFPlugin::liveResourceData):
        (WebKit::PDFPlugin::writeItemsToPasteboard):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::redeliverManualStream):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::cachedResponseDataForURL):

2017-04-20  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Define FORWARDING_HEADERS_DIR in WebKitFS and use it everywhere
        https://bugs.webkit.org/show_bug.cgi?id=171071

        Reviewed by Michael Catanzaro.

        "${DERIVED_SOURCES_DIR}/ForwardingHeaders" path occurs very often in the
        build system files. GTK-specifc FORWARDING_HEADERS_DIR variable should
        be available for all ports.

        * CMakeLists.txt:
        * PlatformMac.cmake:

2017-04-20  Brady Eidson  <beidson@apple.com>

        WebContent process becomes unresponsive after returning nil from async version of -webView:createWebViewWithConfiguration:...
        <rdar://problem/31739023> and https://bugs.webkit.org/show_bug.cgi?id=171090

        Reviewed by Andy Estes.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPageCommon): Handle the perfectly valid "nil webView" case correctly.

2017-04-20  Dan Bernstein  <mitz@apple.com>

        Disable header postprocessing when building for Sierra

        Absolutely rubber-stamped by Anders Carlsson.

        * Configurations/WebKit.xcconfig:

2017-04-20  Matt Rajca  <mrajca@apple.com>

        Cocoa: add private API for suppressing first responder changes
        https://bugs.webkit.org/show_bug.cgi?id=171069
        <rdar://problem/31658967>

        Reviewed by Tim Horton.

        Some clients may not want the web view to be programmatically made the first responder
        and invoking -makeFirstResponder: unconditionally posts 'first responder did change'
        notifications.

        Added API test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setShouldSuppressFirstResponderChanges:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setShouldSuppressFirstResponderChanges):
        * UIProcess/PageClient.h:
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::makeFirstResponder):

2017-04-20  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream iOS] Hold process assertion while media capture is active
        https://bugs.webkit.org/show_bug.cgi?id=171017
        <rdar://problem/31719177>

        Reviewed by Dean Jackson.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateActivityState): Update IsCapturingMedia when necessary.
        (WebKit::WebPageProxy::updateThrottleState): Hold a token when capture is active.
        (WebKit::WebPageProxy::setMuted): Capture state may change when the page is muted,
        so pass IsCapturingMedia to activityStateDidChange.
        (WebKit::WebPageProxy::isPlayingMediaDidChange): Ditto.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateThrottleState): Don't allow page suppression when capture
        is active. 

2017-04-20  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):

2017-04-20  Brady Eidson  <beidson@apple.com>

        Add CompletionHandlerCallChecker to SPI added in r215545.
        https://bugs.webkit.org/show_bug.cgi?id=171067

        Reviewed by Dan Bernstein.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPageCommon):

2017-04-20  Anders Carlsson  <andersca@apple.com>

        Replace isFinalStateStatus with isFinalStateResult
        https://bugs.webkit.org/show_bug.cgi?id=171072
        rdar://problem/31589635

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::completePaymentSession):

2017-04-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] -[WKContentView doAfterPositionInformationUpdate:atPosition:] should be robust against synchronous reentrancy
        https://bugs.webkit.org/show_bug.cgi?id=170922
        <rdar://problem/31634990>

        Reviewed by Tim Horton.

        Refactors part of the asynchronous position information mechanism introduced in
        <https://trac.webkit.org/changeset/215171>, and introduces infrastructure for unit testing UI-side position
        information requests.

        _invokeAndRemovePendingHandlersValidForCurrentPositionInformation is a helper method on WKContentView
        responsible for invoking queued position information handlers after receiving a position information response
        from the web process. Previously, this method would iterate over the list of pending callbacks and invoke all
        callbacks whose requests are satisfied by the incoming position information update, saving the indices of these
        handled callbacks in the process. At the end, it would then remove callbacks at these indices from the array of
        pending callbacks. This is problematic when a synchronous position update (via
        ensurePositionInformationIsUpToDate:) is triggered from within one of these callbacks, since
        _invokeAndRemovePendingHandlersValidForCurrentPositionInformation will be called from within itself, and then we
        will attempt to remove a callback at the same index twice.

        To fix this, we change the array of pending position information handlers to be an array of optionals instead.
        When invoking and removing pending handlers after a position information response arrives, we now mark callbacks
        as handled by setting them to std::nullopt. Then, when the top-level invocation to
        _invokeAndRemovePendingHandlersValidForCurrentPositionInformation is finished, we remove all marked handlers
        from the pending vector.

        Covered by 6 new unit tests:
        - PositionInformationTests.FindDraggableLinkAtPosition
        - PositionInformationTests.RequestDraggableLinkAtPosition
        - PositionInformationTests.FindDraggableLinkAtDifferentPositionWithinRequestBlock
        - PositionInformationTests.FindDraggableLinkAtSamePositionWithinRequestBlock
        - PositionInformationTests.RequestDraggableLinkAtSamePositionWithinRequestBlock
        - PositionInformationTests.RequestDraggableLinkAtDifferentPositionWithinRequestBlock

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView draggableElementAtPosition:]):
        (-[WKWebView requestDraggableElementAtPosition:completionBlock:]):

        Uses WKContentView's position information request helpers to search for draggable elements on the page. There
        are both synchronous and asynchronous versions of this, both of which retrieve a _WKDraggableElementInfo.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKDraggableElementInfo.h: Added.
        * UIProcess/API/Cocoa/_WKDraggableElementInfo.mm: Added.

        Exposes what elements are draggable at a given position as SPI (only for use in testing code, at the moment).

        (-[_WKDraggableElementInfo initWithInteractionInformationAtPosition:]):
        (-[_WKDraggableElementInfo copyWithZone:]):
        * UIProcess/API/Cocoa/_WKDraggableElementInfoInternal.h: Added.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _invokeAndRemovePendingHandlersValidForCurrentPositionInformation]):
        * WebKit2.xcodeproj/project.pbxproj:

2017-04-20  Anders Carlsson  <andersca@apple.com>

        Fix a PassKit function declaration typo
        https://bugs.webkit.org/show_bug.cgi?id=171068
        rdar://problem/31635008

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

2017-04-20  Jer Noble  <jer.noble@apple.com>

        [MediaCapture] gUM() with CoreAudio fails if capturing audio in the UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=171021

        Reviewed by Eric Carlson.

        Pass a deviceID rather than a CaptureDevice across the process boundary.

        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createMediaSourceForCaptureDeviceWithConstraints):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

        Fix assertions in webProcessProxyFromConnection
        https://bugs.webkit.org/show_bug.cgi?id=171025
        <rdar://problem/31184073>

        Reviewed by Brady Eidson.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::webProcessProxyFromConnection):
        If we have a Connection, then we have a valid process attached to that connection,
        unless it's a Connection to a different type of child process.
        Calling ChildProcessProxy::connection on other web processes that are in State::Launching,
        then we get an assertion.  Luckily, ChildProcessProxy::hasConnection was introduced in r210861
        for this reason.

2017-04-20  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Allow iokit-get-properties for IOAudioControlValue
        https://bugs.webkit.org/show_bug.cgi?id=171020
        <rdar://problem/30878974>

        Reviewed by Alexey Proskuryakov.

        * WebProcess/com.apple.WebProcess.sb.in: Add missing property name.

2017-04-19  Joseph Pecoraro  <pecoraro@apple.com>

        Remove WebKitTestRunner code for enabling features that are already enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=171033

        Reviewed by Ryosuke Niwa.

        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2017-04-19  Youenn Fablet  <youenn@apple.com>

        [Mac] Allow customizing H264 encoder
        https://bugs.webkit.org/show_bug.cgi?id=170829

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:
        * WebKit2.xcodeproj/project.pbxproj:

2017-04-19  Brady Eidson  <beidson@apple.com>

        Add asynchronous equivalent of -[<WKUIDelegate> webView:createWebViewWithConfiguration:...].
        <rdar://problem/30699851> and https://bugs.webkit.org/show_bug.cgi?id=171018

        Reviewed by Tim Horton.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPageAsync):

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::createNewPageCommon):
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::createNewPageAsync):

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

2017-04-19  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 3
        https://bugs.webkit.org/show_bug.cgi?id=171003
        rdar://problem/31589635

        Reviewed by Tim Horton.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::encode):
        (IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::decode):
        Don't encode/decode status.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::cancelPaymentSession):
        Hide the UI and report back.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        Add new member.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        Add new message.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
        Always pass success in the old code path. Stop using the deprecated method.

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::cancelPaymentSession):
        Send a message to the UI process.

        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        Add new member.

2017-04-19  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Limit capture to one tab at a time
        https://bugs.webkit.org/show_bug.cgi?id=171009

        Reviewed by Jon Lee.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): Deleted, not used.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Mute media streams
        on other pages.
        (WebKit::UserMediaProcessManager::willCreateMediaStream): Call willEnableMediaStreamInPage.
        * UIProcess/UserMediaProcessManager.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setMuted): If media streams in the page will be unmuted, call
        willEnableMediaStreamInPage so streams in other pages are muted first.

2017-04-19  Brady Eidson  <beidson@apple.com>

        REGRESSION (r213168): An extra Web Content process is spun up on launch and is never closed.
        <rdar://problem/30774839> and https://bugs.webkit.org/show_bug.cgi?id=171002

        Reviewed by Alex Christensen.

        The original change unnecessarily avoided using the initial warmed process if an explicit
        data store was set on the new WKWebView.
        
        Fixing that fixes the regression.
        
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _webProcessCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2017-04-19  Anders Carlsson  <andersca@apple.com>

        Rename cancelPayment to cancelPaymentSession
        https://bugs.webkit.org/show_bug.cgi?id=171007

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
        (WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession):
        (WebKit::WebPaymentCoordinatorProxy::didCancelPayment): Deleted.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewControllerDidFinish:]):
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::didCancelPaymentSession):
        (WebKit::WebPaymentCoordinator::didCancelPayment): Deleted.
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/ApplePay/WebPaymentCoordinator.messages.in:

2017-04-19  David Kilzer  <ddkilzer@apple.com>

        Stop using strcpy() in WebKit::EnvironmentUtilities::stripValuesEndingWithString()
        <https://webkit.org/b/170994>
        <rdar://problem/29889932>

        Reviewed by Brent Fulgham.

        * Platform/unix/EnvironmentUtilities.cpp:
        (WebKit::EnvironmentUtilities::stripValuesEndingWithString):
        Switch from using strcpy() to strlcpy().  Also switch from using
        strstr() to strnstr().
        * Platform/unix/EnvironmentUtilities.h: Switch to #pragma once.
        (WebKit::EnvironmentUtilities::stripValuesEndingWithString):
        Export function for testing.
        * WebKit2.xcodeproj/project.pbxproj:
        (EnvironmentUtilitiesTest.h): Make header private for testing.

2017-04-19  Eric Carlson  <eric.carlson@apple.com>

        Provide a way for clients to unmute a media stream.
        https://bugs.webkit.org/show_bug.cgi?id=170855
        <rdar://problem/31656855>

        Unreviewed, fix a typo missed in the review of r215420.

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

2017-04-19  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] WebKitAutocleanups.h regression in v2.16.1 release
        https://bugs.webkit.org/show_bug.cgi?id=170987

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/WebKitAutocleanups.h: Remove stray semicolon.

2017-04-18  Per Arne Vollan  <pvollan@apple.com>

        Dragging a few items over MiniBrowser has 0 in the red indicator.
        https://bugs.webkit.org/show_bug.cgi?id=170874

        Reviewed by Tim Horton.

        When WebKit does not accept the drag items, the drag count badge should not be updated.
        Also, if WebKit changes the drag count badge, it should be restored to its original
        value when the drag exits.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::draggingEntered):
        (WebKit::WebViewImpl::draggingUpdated):
        (WebKit::WebViewImpl::draggingExited):

2017-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add infrastructure and unit tests for file uploads using data interaction
        https://bugs.webkit.org/show_bug.cgi?id=170903
        <rdar://problem/31314689>

        Reviewed by Tim Horton.

        See Tools/ChangeLog for more details. Makes a small adjustment to _simulateDataInteractionUpdated: to return a
        BOOL indicating whether or not to allow the operation to proceed. This is necessary for testing scenarios where
        multiple files are being "data interacted" onto an element. See <https://bugs.webkit.org/show_bug.cgi?id=170880>
        for more details about the change this patch is testing.

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

2017-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support DataTransfer::files() when performing a DHTML data interaction
        https://bugs.webkit.org/show_bug.cgi?id=170880
        <rdar://problem/31314689>

        Reviewed by Tim Horton.

        See the WebCore ChangeLog for more details.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getFilenamesForDataInteraction):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformDragControllerAction):
        (WebKit::WebPageProxy::resetCurrentDragInformation):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::documentIsHandlingNonDefaultDrag):
        * UIProcess/WebPageProxy.messages.in:

        Adds an IPC argument to DidPerformDragControllerAction specifying whether the page prevented the default behavior.

        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:

        Adds IPC plumbing for the new filenamesForDataInteraction Pasteboard codepath.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getFilenamesForDataInteraction):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):

2017-04-18  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Check both origins and cookieHostNames for domain matches in data removal
        https://bugs.webkit.org/show_bug.cgi?id=170763
        <rdar://problem/31573091>

        Reviewed by Alex Christensen.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
            Move semantics for topPrivatelyControlledDomains vector.
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyOwnedDomainsInAllPersistentDataStores): Deleted.
            Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
            Move semantics for prevalentResourceDomains vector.
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::hostIsInDomain):
            Static convenience function.
        (WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain):
            Checks for matching cookieHostNames if types contains WebsiteDataType::Cookies.
            Also checks origins.
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
            Now makes use of the new function
            WebKit::WebsiteDataRecord::validForTopPrivatelyControlledDomain().
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains):
            Move semantics for topPrivatelyControlledDomains vector.
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyOwnedDomains): Deleted.
            Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyOwnedDomains): Deleted.
            Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2017-04-18  Brent Fulgham  <bfulgham@apple.com>

        [iOS][WK2] Prevent ephemeral files from being backed up
        https://bugs.webkit.org/show_bug.cgi?id=170963
        <rdar://problem/30470332>

        Reviewed by Brady Eidson.

        Tell the OS to skip temporary data files when performing backups.

        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm: Added.
        (WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup): Added.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
        (WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup): Add stub for
        non-iOS platforms.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * WebKit2.xcodeproj/project.pbxproj: Add new file.

2017-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Cannot select text on nytimes.com when the selection granularity is WKSelectionGranularityCharacter
        https://bugs.webkit.org/show_bug.cgi?id=170968
        <rdar://problem/31692560>

        Reviewed by Dan Bernstein.

        Makes a small adjustment to textInteractionGesture:shouldBeginAtPoint:. When determining whether to allow the
        text interaction assistant to recognize at a given point, instead of depending on whether or not the hit node is
        the same as the assisted node, only enforce this restriction when editing an assisted node. Otherwise, default
        to allowing the selection gesture.

        Note that character granularity selection was working on most pages before, due to the fact that
        nodeAtPositionIsAssistedNode was true in many cases when there is no assisted node at all. This is because, in
        WebPage.mm, we compute the hit-tested node responding to click events to be null, and then set
        nodeAtPositionIsAssistedNode to be equal to hitNode == m_assistedNode, which ends up being true because both of
        these values are null.

        This allowed text selection to work in the simple case when selection granularity character is used, but not
        when the node containing the selected point actually does respond to click events, since the comparison returns
        false.

        New layout test: LayoutTests/editing/selection/character-granularity-select-text-with-click-handler.html.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

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

        Add additional information when logging URL disposition in WebLoaderStrategy::scheduleLoad
        https://bugs.webkit.org/show_bug.cgi?id=170813

        Reviewed by Alex Christensen.

        There are a few logging statements in WebLoaderStrategy::scheduleLoad
        that report, for example, "URL will be loaded as data". These
        statements also log the address of the frame doing the loading and the
        identifier of the resource. For consistency with other logging and to
        make scripted analysis of the logs more robust, also include the
        pageID and frameID in the logging.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):

2017-04-18  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 2
        https://bugs.webkit.org/show_bug.cgi?id=170965

        Reviewed by Tim Horton.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::encode):
        (IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::decode):
        Remove the status member variable.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::status):
        New function to be used by older OSes. This will recreate a PKPaymentAuthorizationStatus given a ShippingContactUpdate.

        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
        Stop using the deprecated API.

2017-04-18  Timothy Horton  <timothy_horton@apple.com>

        Force scroll view insets to be respected regardless of rubber-banding state
        https://bugs.webkit.org/show_bug.cgi?id=170937
        <rdar://problem/31412788>

        Reviewed by Simon Fraser.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):

2017-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] Define priorities also for async network IO tasks
        https://bugs.webkit.org/show_bug.cgi?id=170905

        Reviewed by Žan Doberšek.

        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        (WebKit::NetworkCache::inputStreamReadReadyCallback):
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::outputStreamWriteReadyCallback):
        (WebKit::NetworkCache::IOChannel::write):
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::skipInputStreamForRedirection):
        (WebKit::NetworkDataTaskSoup::read):
        (WebKit::NetworkDataTaskSoup::requestNextPart):
        (WebKit::NetworkDataTaskSoup::writeDownload):
        (WebKit::NetworkDataTaskSoup::didFinishDownload):
        * UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestReadCallback):
        (webkit_uri_scheme_request_finish):

2017-04-17  Timothy Horton  <timothy_horton@apple.com>

        Plumb all four obscured insets to WebCore, instead of just top/left
        https://bugs.webkit.org/show_bug.cgi?id=170913

        Reviewed by Wenson Hsieh.

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        (WebKit::VisibleContentRectUpdateInfo::obscuredInsets):
        (WebKit::operator==):
        (WebKit::VisibleContentRectUpdateInfo::obscuredInset): Deleted.
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FloatRectInsets>::encode):
        (IPC::ArgumentCoder<FloatRectInsets>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        (-[WKWebView _restorePageScrollPosition:scrollOrigin:previousObscuredInset:scale:]):
        (-[WKWebView _updateVisibleContentRects]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::restorePageState):
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::restorePageState):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::restorePageState):
        (WebKit::WebPage::updateVisibleContentRects):
        Adopt FloatBoxExtent for obscuredInsets (and adjust pluralization).

2017-04-17  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Doesn't show size of compressed content correctly
        https://bugs.webkit.org/show_bug.cgi?id=155112
        <rdar://problem/25006728>

        Reviewed by Alex Christensen and Timothy Hatcher.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
        Include size information in network load metrics.

2017-04-17  Youenn Fablet  <youenn@apple.com>

        com.apple.WebKit.Networking.Development crashed in com.apple.WebKit: WebKit::NetworkRTCProvider::resolvedName
        https://bugs.webkit.org/show_bug.cgi?id=170889

        Reviewed by Alex Christensen.

        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::Resolver::~Resolver): Unschedule the host resolution in addition to cancelling it.
        Providing a test would need to stop the resolver between the time the resolver is created and gets
        data in the network process. Or we would need to change Resolver to be instantiated/tested on its own.
        * NetworkProcess/webrtc/NetworkRTCProvider.h:

2017-04-17  Brady Eidson  <beidson@apple.com>

        Make WKHTTPCookieStore public.
        <rdar://problem/31024691> and https://bugs.webkit.org/show_bug.cgi?id=170920

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        (-[WKHTTPCookieStore getAllCookies:]):
        (-[WKHTTPCookieStore allCookies:]): Deleted.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore httpCookieStore]):
        (-[WKWebsiteDataStore _httpCookieStore]): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

        * WebKit2.xcodeproj/project.pbxproj:

2017-04-17  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Fix typo in UIDelegate::mediaCaptureStateDidChange
        https://bugs.webkit.org/show_bug.cgi?id=170911

        Reviewed by Youenn Fablet.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::mediaCaptureStateDidChange): Fix typo.

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

        Move and update WebLoaderStrategy logging statement
        https://bugs.webkit.org/show_bug.cgi?id=170140

        Reviewed by Alex Christensen.

        WebLoaderStrategy::scheduleLoad has a logging statement that says, in
        part: "Resource has been queued for scheduling with the
        NetworkProcess". This statement is emitted after the
        ScheduleResourceLoad message has been successfully sent to the
        NetworkProcess. The logging statement was added at this location to
        indicate that the resource-load had been successfully handed off; it
        pairs a similar logging statement that is emitted if the sending of
        the ScheduleResourceLoad message fails.

        I think it would be better to move this logging statement before the
        ScheduleResourceLoad message is sent to the NetworkProcess (and change
        its wording to "Resource is being scheduled with the NetworkProcess").
        The reason for this change is to help make sure that the sequence of
        logging statements is more deterministic. In the current form, the
        message "Resource has been queued for scheduling with the
        NetworkProcess" normally appears before any NetworkProcess logging
        statements that indicate that the resource-loading is continuing
        there, but in rare occasions the logging statements can be reversed.
        This change in the ordering of the statements has caused a problem in
        a script I've written that examines the resource-loading process and
        looks for errors. By ensuring that the WebLoaderStrategy statement
        always appears before the NetworkResourceLoader statement, the flow
        makes better sense and the script can be more robust.

        In making this change, we are probably not giving up any assurance
        that the ScheduleResourceLoad message has been sent to the
        NetworkResourceLoader. If the message is successfully sent, we'll see
        logging in the NetworkProcess. If the message has not been sent, we'll
        see WebLoaderStrategy logging an error.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):

2017-04-17  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 1
        https://bugs.webkit.org/show_bug.cgi?id=170915
        rdar://problem/31589635

        Reviewed by Tim Horton.

        Stop using the PKPaymentRequestPaymentMethodUpdate initializer that takes a status, it's been deprecated
        and we always passed PKPaymentAuthorizationStatusSuccess anyway.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::encode):
        (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):

2017-04-17  Youenn Fablet  <youenn@apple.com>

        Disable outdated WritableStream API
        https://bugs.webkit.org/show_bug.cgi?id=170749
        <rdar://problem/31446233>

        Reviewed by Alex Christensen.

        Replacing READABLE_STREAM_API, READABLE_BYTE_STREAM_API and WRITABLE_STREAM_API compilation flag by:
        - A STREAMS_API compilation flag.
        - A ReadableByteStreamAPI and WritableStreamAPI runtime flags, turned off except for RWT and DRT.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2017-04-17  Tim Horton  <timothy_horton@apple.com>

        Provide a viewport parameter to disable clipping to the safe area
        https://bugs.webkit.org/show_bug.cgi?id=170766
        <rdar://problem/31564634>

        Reviewed by Beth Dakin.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::setClipToSafeArea):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::clipToSafeArea):
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::didChangeClipToSafeArea):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didChangeClipToSafeArea):
        * UIProcess/mac/PageClientImpl.h:
        Forward clip-to-safe-area changes from ChromeClient to WKWebView.
        Update visible content rects when it changes, which will
        result in a call to updateFixedClippingView, as below.
        Keep track of the current state in the UI process.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _contentMayDrawInObscuredInsets]):
        Expose the current state of the clip-to-safe-area bit as SPI.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView updateFixedClippingView:]):
        Disable fixed clipping when clip-to-safe-area is disabled.
        
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::viewportConfigurationChanged):
        Push the viewport's clip-to-safe-area bit onto the main frame's FrameView.

2017-04-17  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Move isNullFunctionPointer down into WTF
        https://bugs.webkit.org/show_bug.cgi?id=170892

        Reviewed by Sam Weinig.

        * Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp:
        (WebKit::ResourceLoadStatisticsClassifierCocoa::canUseCorePrediction): Changed to use
          WTF::isNullFunctionPointer.
        (WebKit::isNullFunctionPointer): Deleted.

2017-04-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Respect a new internal setting for defaulting to character selection granularity
        https://bugs.webkit.org/show_bug.cgi?id=170904
        <rdar://problem/31364280>

        Reviewed by Dan Bernstein.

        Respect a new WebKitDebugDefaultSelectionGranularityCharacter user default by initializing
        WKWebViewConfiguration with WKSelectionGranularityCharacter, but only when linked on or after the first iOS to
        use WKSelectionGranularityCharacter by default.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        * UIProcess/Cocoa/VersionChecks.h:

2017-04-17  Eric Carlson  <eric.carlson@apple.com>

        Provide a way for clients to unmute a media stream.
        https://bugs.webkit.org/show_bug.cgi?id=170855
        <rdar://problem/31656855>

        Reviewed by Jon Lee.

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

2017-04-17  Jeremy Jones  <jeremyj@apple.com>

        Refactor enumerateDevices to allow separate CaptureDeviceManagers for audio and video.
        https://bugs.webkit.org/show_bug.cgi?id=170778

        Reviewed by Tim Horton.

        setUseAVFoundationAudioCapture is moved from AVCaptureDeviceManager to RealtimeMediaSourceCenterMac.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):

2017-04-15  Keith Rollin  <krollin@apple.com>

        Include resource size in some existing logging
        https://bugs.webkit.org/show_bug.cgi?id=170866

        Reviewed by Alex Christensen.

        In order to correlate resource load times with resource size, we log
        when the resource is starting to be loaded and when the resource is
        finished loading. In NetworkResourceLoader::didReceiveResponse, we
        also log the expected resource length. However, we can only log the
        length if it is provided in Content-Length, which is not always the
        case. If it's not provided, we end up logging "length = -1". To make
        up for this, change NetworkResourceLoader::didFinishLoading and
        WebResourceLoader:: didFinishLoading to log the length once we know
        it.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        (WebKit::NetworkResourceLoader::didFinishLoading):
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didReceiveData):
        (WebKit::WebResourceLoader::didFinishResourceLoad):
        * WebProcess/Network/WebResourceLoader.h:

2017-04-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support data interaction of files into file inputs
        https://bugs.webkit.org/show_bug.cgi?id=170803
        <rdar://problem/31286130>

        Reviewed by Tim Horton.

        Implements remaining support for performing data interaction onto file inputs. There are two main changes at
        this layer: plumbing the number of files in the pasteboard to the web process, and pulling the implementation of
        createSandboxExtensionsIfNeeded out of Mac-specific WebViewImpl::createSandboxExtensionsIfNeeded and into
        WebPageProxy::createSandboxExtensionsIfNeeded.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DragData>::encode):
        (IPC::ArgumentCoder<DragData>::decode):

        Relax special-casing of encoding and decoding filenames to be PLATFORM(COCOA) rather than PLATFORM(MAC).

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getNumberOfFiles):

        More boilerplate plumbing to deliver the number of files in the pasteboard to the web process.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::performDragOperation):
        (WebKit::WebViewImpl::createSandboxExtensionsIfNeeded): Deleted.

        Move the logic in WebViewImpl::createSandboxExtensionsIfNeeded over to WebPageProxy::createSandboxExtensionsIfNeeded.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getNumberOfFiles):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2017-04-14  Mark Lam  <mark.lam@apple.com>

        Update architectures in xcconfig files.
        https://bugs.webkit.org/show_bug.cgi?id=170867
        <rdar://problem/31628104>

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:

2017-04-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support Icon creation from file URLs on iOS
        https://bugs.webkit.org/show_bug.cgi?id=170809
        <rdar://problem/31286130>

        Reviewed by Tim Horton.

        Refactors file icon generation logic to support showing an Icon representing the content at a list of file paths
        on iOS. Pulls out logic in WKFileUploadPanel responsible for generating the thumbnail image for a file input into
        separate helpers in WebIconUtilities, and then uses these utilities in both WKFileUploadPanel and
        WebChromeClientIOS.

        * Shared/ios/WebIconUtilities.h: Added.
        * Shared/ios/WebIconUtilities.mm: Added.
        (WebKit::squareCropRectForSize):
        (WebKit::squareImage):
        (WebKit::thumbnailSizedImageForImage):
        (WebKit::fallbackIconForFile):
        (WebKit::iconForImageFile):
        (WebKit::iconForVideoFile):
        (WebKit::iconForFile):

        Add logic for generating thumbnail icons, moved from WKFileUploadPanel.mm.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (squareCropRectForSize): Deleted.
        (squareImage): Deleted.
        (thumbnailSizedImageForImage): Deleted.
        (fallbackIconForFile): Deleted.
        (iconForImageFile): Deleted.
        (iconForVideoFile): Deleted.
        (iconForFile): Deleted.

        Remove logic for generating thumbnail icons.

        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::loadIconForFiles):
        (WebKit::WebChromeClient::createIconForFiles):

        Rather than call Icon::createIconForFiles directly, loadIconForFiles now consults ChromeClient::createIconForFiles
        instead. On other platforms, this just turns around and calls Icon::createIconForFiles, but on iOS, we use the
        utilities introduced in WebIconUtilities to generate a file icon.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::createIconForFiles):

2017-04-14  Brady Eidson  <beidson@apple.com>

        Fix basic WKURLSchemeHandler bugs.
        <rdar://problem/30647559> and https://bugs.webkit.org/show_bug.cgi?id=170862

        Reviewed by Andy Estes.

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

        * UIProcess/WebURLSchemeHandlerTask.cpp:
        (WebKit::WebURLSchemeHandlerTask::didReceiveResponse):

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::addURLSchemeHandlerTaskProxy):
        (WebKit::WebLoaderStrategy::removeURLSchemeHandlerTaskProxy):
        (WebKit::WebLoaderStrategy::remove):
        * WebProcess/Network/WebLoaderStrategy.h:

        * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
        (WebKit::WebURLSchemeHandlerProxy::startNewTask):
        (WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
        (WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.h:

        * WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp:
        (WebKit::WebURLSchemeHandlerTaskProxy::WebURLSchemeHandlerTaskProxy):
        (WebKit::WebURLSchemeHandlerTaskProxy::stopLoading):
        (WebKit::WebURLSchemeHandlerTaskProxy::didReceiveResponse):
        (WebKit::WebURLSchemeHandlerTaskProxy::didReceiveData):
        (WebKit::WebURLSchemeHandlerTaskProxy::didComplete):
        (WebKit::WebURLSchemeHandlerTaskProxy::hasLoader):
        * WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h:
        (WebKit::WebURLSchemeHandlerTaskProxy::identifier):

2017-04-14  Jer Noble  <jer.noble@apple.com>

        [MediaSource] Push capabilities across process boundary during UIProcess capture.
        https://bugs.webkit.org/show_bug.cgi?id=170814

        Reviewed by Eric Carlson.

        Make a new synchronous getter for capabilities(), moderated by only requesting the capabilities() cross-process
        the first time called.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::capabilities):
        (WebKit::UserMediaCaptureManagerProxy::supportedConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setCapabilities):
        (WebKit::UserMediaCaptureManager::capabilities):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2017-04-13  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Allow clients to specify in _WKProcessPoolConfiguration additional directory sandbox extensions
        https://bugs.webkit.org/show_bug.cgi?id=170387

        Reviewed by Sam Weinig.

        Test: TestWebKitAPI/Tests/WebKit2Cocoa/AdditionalReadAccessAllowedURLs.mm

        Added an additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode): Encode the new
          additionalSandboxExtensionHandles member.
        (WebKit::WebProcessCreationParameters::decode): Decode it.
        * Shared/WebProcessCreationParameters.h: Added additionalSandboxExtensionHandles member.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy): Copy new m_additionalReadAccessAllowedPaths member.
        * UIProcess/API/APIProcessPoolConfiguration.h: Added m_additionalReadAccessAllowedPaths
          member and accessor functions.

        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: Declared new
          additionalReadAccessAllowedURLs property whose value is an array of URLs to which the Web
          Content process will be given read access.
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration additionalReadAccessAllowedURLs]): New getter that returns
          an array of file URLs from the ProcessPoolConfiguration’s additionalReadAccessAllowedPaths().
        (-[_WKProcessPoolConfiguration setAdditionalReadAccessAllowedURLs:]): New setter that checks
          that the given URLs are file URLs and populates the ProcessPoolConfiguration’s
          additionalReadAccessAllowedPaths with their paths.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::resolvePathsForSandboxExtensions): Populate the new
          m_resolvedPaths.additionalWebProcessSandboxExtensionPaths with resolved paths from the
          ProcessPoolConfiguration’s additionalReadAccessAllowedPaths.
        (WebKit::WebProcessPool::createNewWebProcess): Populate the WebProcessCreationParameters’s
          additionalSandboxExtensionHandles member with read-only sandbox extensions created from
          the resolved paths.
        * UIProcess/WebProcessPool.h: Added additionalWebProcessSandboxExtensionPaths member to
          the Paths struct.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess): Consume the additional sandbox extensions.

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

        Fix CMake build
        https://bugs.webkit.org/show_bug.cgi?id=170815

        Reviewed by Beth Dakin.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]):

2017-04-12  Dan Bernstein  <mitz@apple.com>

        [Mac] Future-proof .xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=170802

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/Version.xcconfig:

2017-04-12  Brady Eidson  <beidson@apple.com>

        QuotaExceededError when saving to localStorage in private mode.
        https://bugs.webkit.org/show_bug.cgi?id=157010

        Reviewed by Alex Christensen.

        * WebProcess/Storage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::StorageAreaMap):
        (WebKit::StorageAreaMap::~StorageAreaMap):

        * WebProcess/Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::storageArea):
        (WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea):
        (WebKit::StorageNamespaceImpl::copy):
        * WebProcess/Storage/StorageNamespaceImpl.h:

        * WebProcess/Storage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        * WebProcess/Storage/WebStorageNamespaceProvider.h:

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

        Unreviewed, fix build failure on Ubuntu LTS GTK bot
        https://bugs.webkit.org/show_bug.cgi?id=170781

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):

2017-04-12  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] rename -[WKWebView _stopMediaCapture]
        https://bugs.webkit.org/show_bug.cgi?id=170791
        <rdar://problem/31589204>

        Reviewed by Youenn Fablet.

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

2017-04-12  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed build fix.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):

2017-04-12  Jer Noble  <jer.noble@apple.com>

        [WK2] Add a C-API for creating a WKContextConfigurationRef with legacy options.
        https://bugs.webkit.org/show_bug.cgi?id=170790

        Reviewed by Alex Christensen.

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationCreate):
        (WKContextConfigurationCreateWithLegacyOptions):
        * UIProcess/API/C/WKContextConfigurationRef.h:

2017-04-12  Jer Noble  <jer.noble@apple.com>

        [WK2] Do not pass microphone sandbox extension to WebProcess if capturing is happening in UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=170781

        Reviewed by Alex Christensen.

        Simultaneously, allow clients to configure whether capturing will occur in the UIProcess through
        _WKProcessPoolConfiguration.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationShouldCaptureAudioInUIProcess):
        (WKContextConfigurationSetShouldCaptureAudioInUIProcess):
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _shouldCaptureAudioInUIProcess]):
        (-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]):
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration shouldCaptureAudioInUIProcess]):
        (-[_WKProcessPoolConfiguration setShouldCaptureAudioInUIProcess:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):

2017-04-12  Keith Rollin  <krollin@apple.com>

        Add some missing NetworkResourceLoader logging
        https://bugs.webkit.org/show_bug.cgi?id=170139

        Reviewed by Alex Christensen.

        Once execution enters the lambda in
        NetworkResourceLoader::retrieveCacheEntry, there is little indication
        of which exit point was taken. If flow enters into startNetworkLoad,
        we'll get some logging from that function, but not from the others.
        Add some logging so that we know what the result was from looking up
        the resource in the cache.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):

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

        Tweak WebCore::setMetadataURL function
        https://bugs.webkit.org/show_bug.cgi?id=170786

        Reviewed by Beth Dakin.

        Update for WebCore changes.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::namesOfPromisedFilesDroppedAtDestination):

2017-04-12  Brent Fulgham  <bfulgham@apple.com>

        [WK2][Mac] Stop allowing access to disk arbitration process
        https://bugs.webkit.org/show_bug.cgi?id=170517
        <rdar://problem/31071151>

        Reviewed by Alex Christensen.

        * WebProcess/com.apple.WebProcess.sb.in:

2017-04-12  Beth Dakin  <bdakin@apple.com>

        32-bit build fix.

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

2017-04-12  Beth Dakin  <bdakin@apple.com>

        More 32-bit build fix.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _mediaPlaybackControlsView]):
        (-[WKWebView _addMediaPlaybackControlsView:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _mediaPlaybackControlsView]):
        (-[WKView _addMediaPlaybackControlsView:]):

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Another 32 bit build fix.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::mediaPlaybackControlsView):

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

        Stop using didReceiveDataArray callback on El Capitan
        https://bugs.webkit.org/show_bug.cgi?id=170780

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::supportsDataArray): Deleted.
        (WebKit::NetworkLoad::didReceiveDataArray): Deleted.
        * NetworkProcess/NetworkLoad.h:

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Speculative build fix.

        * UIProcess/API/Cocoa/WKViewPrivate.h:

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Attempted build fix.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Adopt AVKit name change from AVFunctionBar* to AVTouchBar*
        https://bugs.webkit.org/show_bug.cgi?id=170693
        -and corresponding-
        rdar://problem/31230018

        Reviewed by Sam Weinig.

        Since the new names only apply to some versions of macOS, this patch uses typedefs 
        for the older OS’s. SO:

        AVFunctionBarScrubber is now AVTouchBarScrubber

        AVFunctionBarPlaybackControlsProvider is now AVTouchBarPlaybackControlsProvider

        AVFunctionBarMediaSelectionOption is now AVTouchBarMediaSelectionOption

        And the protocol AVFunctionBarPlaybackControlsControlling is now 
        AVTouchBarPlaybackControlsControlling

        Use the new name.
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _mediaPlaybackControlsView]):
        (-[WKWebView _addMediaPlaybackControlsView:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _mediaPlaybackControlsView]):
        (-[WKView _addMediaPlaybackControlsView:]):
        * UIProcess/Cocoa/WebViewImpl.h:

        Soft links and allocations cannot use the typedefs.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::mediaPlaybackControlsView):
        (WebKit::WebViewImpl::updateMediaTouchBar):

2017-04-12  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Audio source in UI process not identified as capture source
        https://bugs.webkit.org/show_bug.cgi?id=170776

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp: Override isCaptureSource.

2017-04-12  Andrew Gold  <agold@apple.com>

        Allow iOS to toggle webRTCAPI legacy flag.
        https://bugs.webkit.org/show_bug.cgi?id=170735

        Reviewed by Eric Carlson.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _webRTCLegacyAPIEnabled]):
        (-[WKPreferences _setWebRTCLegacyAPIEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

        Unreviewed, build fix for GTK port after r215262
        https://bugs.webkit.org/show_bug.cgi?id=170758

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::didRead):

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

        [WTF] Introduce Thread class and use RefPtr<Thread> and align Windows Threading implementation semantics to Pthread one
        https://bugs.webkit.org/show_bug.cgi?id=170502

        Reviewed by Mark Lam.

        Mechanical change. Use Thread:: APIs.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        (WebKit::NetworkCache::IOChannel::readSyncInThread):
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::processIncomingMessage):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):
        * UIProcess/linux/MemoryPressureMonitor.cpp:
        (WebKit::MemoryPressureMonitor::MemoryPressureMonitor):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2017-04-10  Antti Koivisto  <antti@apple.com>

        Cache small media resources in disk cache
        https://bugs.webkit.org/show_bug.cgi?id=170676
        <rdar://problem/31532649>

        Reviewed by Andreas Kling.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeRetrieveDecision):

            Allow retrieving media resources.

        (WebKit::NetworkCache::expectedTotalResourceSizeFromContentRange):
        (WebKit::NetworkCache::expectedTotalResourceSize):
        (WebKit::NetworkCache::makeStoreDecision):

            Store media resource if we can figure out its total size and it is less than 5MB
            (and it is cacheable by the usual rules).

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

        Modernize vector adoption
        https://bugs.webkit.org/show_bug.cgi?id=170758

        Reviewed by Geoffrey Garen.

        * NetworkProcess/capture/NetworkCaptureEvent.cpp:
        (WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::decode):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::bufferForType):

2017-04-12  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ debug build fix. Drop an unused debug-only member
        variable in the CompositingRunLoop class.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:

2017-04-11  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] Use the DisplayRefreshMonitor facilities
        https://bugs.webkit.org/show_bug.cgi?id=170599

        Reviewed by Carlos Garcia Campos.

        ThreadedCompositor gains a DisplayRefreshMonitor member that it can use
        to better coordinate display refresh callbacks on the main thread. Still,
        because currently the GTK+ port doesn't have a reliable way of notifying
        the ThreadedCompositor of a vsync event, a timer targeting 60FPS is used
        in order to keep the updates at a reasonable rate. When the timer is fired,
        the ThreadedCompositor decides how to proceed based on state changes that
        might have occurred during composition or whether there's any display
        refresh callbacks that require handling on the main thread.

        CompositingRunLoop now stores its state in an atomic variable that's then
        inspected whenever a new update is scheduled or completed. When scheduled,
        if there's no update in progress, a new update is requested through the
        timer. If there's already an update in progress, a new update is marked
        as pending after the current one completes. In that case, when the update
        is completed, a new update is requested through the timer.

        ThreadedDisplayRefreshMonitor is used to coordinate updates between the
        main and the composition thread whenever the CoordinatedGraphics state
        demands it, or whenever there are clients registered to that monitor that
        require an update (e.g. a requestAnimationFrame() callback). After the
        update on the composition thread is finished, and the DisplayRefreshMonitor
        object requires an update, a callback at the same priority as the layer
        flush timer is scheduled on the main thread. In that callback we handle
        any clients registered for this DisplayRefreshMonitor before proceeding
        to handle any changes to the CoordinatedGraphics scene. In case the
        DisplayRefreshMonitor clients or the layer flushes already queued up
        any changes to the state, we immediately ask the ThreadedCompositor for
        an update.

        * PlatformGTK.cmake:
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::updateViewport):
        (WebKit::CoordinatedGraphicsScene::commitSceneState):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::CompositingRunLoop):
        (WebKit::CompositingRunLoop::isActive):
        (WebKit::CompositingRunLoop::scheduleUpdate):
        (WebKit::CompositingRunLoop::stopUpdates):
        (WebKit::CompositingRunLoop::updateCompleted):
        (WebKit::CompositingRunLoop::updateTimerFired):
        (WebKit::CompositingRunLoop::isCurrent):
        (WebKit::CompositingRunLoop::startUpdateTimer): Deleted.
        (WebKit::CompositingRunLoop::stopUpdateTimer): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        (): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::m_displayRefreshMonitor):
        (WebKit::ThreadedCompositor::invalidate):
        (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
        (WebKit::ThreadedCompositor::updateViewport):
        (WebKit::ThreadedCompositor::scheduleDisplayImmediately):
        (WebKit::ThreadedCompositor::renderLayerTree):
        (WebKit::ThreadedCompositor::sceneUpdateFinished):
        (WebKit::ThreadedCompositor::updateSceneState):
        (WebKit::ThreadedCompositor::displayRefreshMonitor):
        (WebKit::ThreadedCompositor::renderNextFrameIfNeeded):
        (WebKit::ThreadedCompositor::completeCoordinatedUpdateIfNeeded):
        (WebKit::ThreadedCompositor::coordinateUpdateCompletionWithClient):
        (WebKit::ThreadedCompositor::performFrameCompletion):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp: Added.
        (WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor):
        (WebKit::ThreadedDisplayRefreshMonitor::requestRefreshCallback):
        (WebKit::ThreadedDisplayRefreshMonitor::requiresDisplayRefreshCallback):
        (WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback):
        (WebKit::ThreadedDisplayRefreshMonitor::invalidate):
        (WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::createDisplayRefreshMonitor):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::createDisplayRefreshMonitor):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/LayerTreeHost.h:
        (WebKit::LayerTreeHost::createDisplayRefreshMonitor):

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

        Modernize and clean up code
        https://bugs.webkit.org/show_bug.cgi?id=170752

        Reviewed by Sam Weinig.

        * NetworkProcess/NetworkResourceLoader.h:
        * Shared/WebPreferencesStore.h:
        * UIProcess/API/APIHitTestResult.cpp:
        (API::HitTestResult::create):
        * UIProcess/API/APIHitTestResult.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesCreate):
        (WKPreferencesCreateWithIdentifier):
        (WKPreferencesCreateCopy):
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::createWithLegacyDefaults):
        (WebKit::WebPreferences::copy):
        * UIProcess/WebPreferences.h:
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::requestCheckingOfString):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addTextCheckingRequest):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::rangeForWebSelectionAtPosition):
        (WebKit::WebPage::rangeForBlockAtPoint):
        (WebKit::WebPage::expandedRangeFromHandle):
        (WebKit::WebPage::contractedRangeFromHandle):
        (WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):
        (WebKit::WebPage::changeBlockSelection):
        (WebKit::WebPage::rangeForGranularityAtPoint):
        (WebKit::WebPage::computePagesForPrintingAndDrawToPDF):

2017-04-11  Dean Jackson  <dino@apple.com>

        Disable outdated WritableStream API
        https://bugs.webkit.org/show_bug.cgi?id=170749
        <rdar://problem/31446233>

        Reviewed by Tim Horton.

        The API we implement is no longer accurate. Disable it until we
        are compatible with the new specification

        * Configurations/FeatureDefines.xcconfig:

2017-04-11  Dan Bernstein  <mitz@apple.com>

        [Cocoa] WebKit unnecessarily soft-links CorePrediction
        https://bugs.webkit.org/show_bug.cgi?id=170644

        Reviewed by Sam Weinig.

        * Configurations/BaseTarget.xcconfig: Defined HAVE_CORE_PREDICTION and added
          HAVE_CORE_PREDICTION to the preprocessor defintions when the former is YES.

        * Configurations/WebKit.xcconfig: Have the linker link against CorePrediction where
          available. On macOS, use weak linking, because CorePrediction is not available in the
          Base System.

        * Platform/classifier/cocoa/CorePredictionSoftLink.h: Removed.

        * Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Guarded with
          #if HAVE(CORE_PREDICTION).
        (WebKit::isNullFunctionPointer): Added this helper.
        (WebKit::ResourceLoadStatisticsClassifierCocoa::canUseCorePrediction): Replaced
          dlopen()-based runtime check with a null check.

        * Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Guarded with #if
          HAVE(CORE_PREDICTION).

        * Platform/spi/Cocoa/CorePredictionSPI.h: Added.

        * UIProcess/WebResourceLoadStatisticsStore.h: Updated guards to include HAVE(CORE_PREDICTION).

        * WebKit2.xcodeproj/project.pbxproj: pdated file references for removal and addition.

2017-04-11  David Quesada  <david_quesada@apple.com>

        Add SPI for handling geolocation authorization requests
        https://bugs.webkit.org/show_bug.cgi?id=170362
        rdar://problem/17508627

        Reviewed by Alex Christensen.

        Add a new WKUIDelegate method for the WKGeolocationProviderIOS to call when a web page
        requests geolocation access. To support testing this change, make it possible to override
        the CoreLocation abstraction WKGeolocationProviderIOS uses. There is now a configurable
        object on the process pool that implements a protocol for providing location updates for
        web views in the process pool. If the client doesn't provide this object,
        WKGeolocationProviderIOS falls back to an object that wraps the existing WebKit1
        WebGeolocationCoreLocationProvider and conforms to the new protocol.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/WebGeolocationPosition.h:
        (WebKit::WebGeolocationPosition::create):
        * UIProcess/API/C/WKGeolocationPosition.cpp:
        (WKGeolocationPositionCreate_b):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _coreLocationProvider]):
        (-[WKProcessPool _setCoreLocationProvider:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
        * UIProcess/API/Cocoa/_WKGeolocationPosition.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
        * UIProcess/API/Cocoa/_WKGeolocationPosition.mm: Added.
        (WebKit::if):
        (-[_WKGeolocationPosition dealloc]):
        (-[_WKGeolocationPosition _apiObject]):
        * UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
        (WebKit::wrapper):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (kit):
        (-[WKGeolocationProviderIOS initWithProcessPool:]):
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        (-[WKGeolocationProviderIOS positionChanged:]):
        (-[WKLegacyCoreLocationProvider setListener:]):
        (-[WKLegacyCoreLocationProvider requestGeolocationAuthorization]):
        (-[WKLegacyCoreLocationProvider start]):
        (-[WKLegacyCoreLocationProvider stop]):
        (-[WKLegacyCoreLocationProvider setEnableHighAccuracy:]):
        (-[WKLegacyCoreLocationProvider geolocationAuthorizationGranted]):
        (-[WKLegacyCoreLocationProvider geolocationAuthorizationDenied]):
        (-[WKLegacyCoreLocationProvider positionChanged:]):
        (-[WKLegacyCoreLocationProvider errorOccurred:]):
        (-[WKLegacyCoreLocationProvider resetGeolocation]):
        Implement a new class that bridges the currently used WebGeolocationCoreLocationProvider
        to conform to the _WKGeolocationCoreLocationProvider protocol that WKGeolocationProviderIOS
        expects.
        * WebKit2.xcodeproj/project.pbxproj:

2017-04-11  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Set correct audio session category when capturing audio
        https://bugs.webkit.org/show_bug.cgi?id=170736
        <rdar://problem/31559405>

        Reviewed by Jer Noble.

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

2017-04-11  Youenn Fablet  <youenn@apple.com>

        Activate WebRTC data channel tests for WK1
        https://bugs.webkit.org/show_bug.cgi?id=170710

        Reviewed by Eric Carlson.

        * WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure networking is not done in the Web process.

2017-04-11  Chris Fleizach  <cfleizach@apple.com>

        AX: PDF plugin needs to support PDF-DOM Mode
        https://bugs.webkit.org/show_bug.cgi?id=170589

        Reviewed by Tim Horton.

        Provide access to DOM objects with PDF document. This mean:
           1) Support a different set of attributes for WKPDFPluginAccessibilityObject.
                WKPDFPluginAccessibilityObject is now a group instead of forwarding attribute calls to the pdf layer.
           2) Connect the focused UI element to the active annotation if possible.
           3) Mark the PDF associated nodes with an attribute so they can be identified later so their correct parent can be found.

        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFPluginAccessibilityObject pdfLayerController]):
        (-[WKPDFPluginAccessibilityObject setPdfLayerController:]):
        (-[WKPDFPluginAccessibilityObject convertRectToScreenSpace:]):
        (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]):
        (-[WKPDFPluginAccessibilityObject accessibilityAttributeNames]):
        (-[WKPDFPluginAccessibilityObject accessibilityActionNames]):
        (-[WKPDFPluginAccessibilityObject accessibilityParameterizedAttributeNames]):
        (-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]):
        (-[WKPDFPluginAccessibilityObject accessibilityAssociatedControlForAnnotation:]):
        (-[WKPDFPluginAccessibilityObject accessibilityHitTest:]):
        (WebKit::PDFPlugin::convertFromRootViewToPDFView):
        (WebKit::PDFPlugin::convertFromPDFViewToScreen):
        (WebKit::PDFPlugin::pluginHandlesContentOffsetForAccessibilityHitTest):
        (WebKit::PDFPlugin::axObjectCache):
        (WebKit::PDFPlugin::accessibilityShadowPluginParentForElement):
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
        (WebKit::PDFPluginAnnotation::attach):
        * WebProcess/Plugins/Plugin.h:
        (WebKit::Plugin::accessibilityShadowPluginParentForElement):
        (WebKit::Plugin::pluginHandlesContentOffsetForAccessibilityHitTest):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::accessibilityShadowPluginParentForElement):
        * WebProcess/Plugins/PluginView.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

2017-04-11  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Attach popup menu to web view widget
        https://bugs.webkit.org/show_bug.cgi?id=145866

        Use gtk_menu_attach_to_widget() to let GTK+ know that popup menus belong to a certain web view.
        This improves the positioning choices that the toolkit can do, and solves a long-standing issue
        that caused long popup menus to hang outside of the available display area under Wayland.

        Based on a patch by Jonas Ådahl <jadahl@gmail.com>.

        Reviewed by Carlos Garcia Campos.

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

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

        Revert r215217
        https://bugs.webkit.org/show_bug.cgi?id=170703

        * Configurations/FeatureDefines.xcconfig:

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

        Continue enabling WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=170703

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:

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

        REGRESSION(r195479) First main resource load in new WebProcess bypasses content extensions
        https://bugs.webkit.org/show_bug.cgi?id=170707
        <rdar://problem/27788755>

        Reviewed by Tim Horton.

        We fix this by sending the UserContentController with the WebPageCreationParameters
        instead of in a IPC message immediately following creation.  By the time the WebPage
        receives its second message, it has already started loading the first main resource.
        
        I also changed all instances of calling ChildProcessProxy::connection() to send a message
        in favor of calling ChildProcessProxy::send, which does the same thing except if a child
        process has not started, it will put the message in a queue and send it when the process
        is finished launching.  This was necessary because the UserContentController is now connected
        to the process sooner, so there were some API tests that would try to send messages between
        initiating a process launch and finishing a process launch, and this change preserves the
        existing behavior in those cases.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/Databases/DatabaseProcessProxy.cpp:
        (WebKit::DatabaseProcessProxy::getDatabaseProcessConnection):
        (WebKit::DatabaseProcessProxy::didFinishLaunching):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::cancel):
        (WebKit::DownloadProxy::canAuthenticateAgainstProtectionSpace):
        (WebKit::DownloadProxy::willSendRequest):
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addProcess):
        (WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
        (WebKit::WebUserContentControllerProxy::removeUserContentWorldUses):
        (WebKit::WebUserContentControllerProxy::addUserScript):
        (WebKit::WebUserContentControllerProxy::removeUserScript):
        (WebKit::WebUserContentControllerProxy::removeAllUserScripts):
        (WebKit::WebUserContentControllerProxy::addUserStyleSheet):
        (WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
        (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
        (WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
        (WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
        (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):
        (WebKit::WebUserContentControllerProxy::addContentExtension):
        (WebKit::WebUserContentControllerProxy::removeContentExtension):
        (WebKit::WebUserContentControllerProxy::removeAllContentExtensions):
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::removeAll):
        (WebKit::VisitedLinkStore::pendingVisitedLinksTimerFired):
        (WebKit::VisitedLinkStore::sendTable):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::addWebUserContentControllerProxy):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_backgroundCPULimit):

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

        Add API to get available content extension identifiers in a WKContentExtensionStore
        https://bugs.webkit.org/show_bug.cgi?id=170093

        Reviewed by Geoffrey Garen.

        * UIProcess/API/APIContentExtensionStore.cpp:
        (API::constructedPathPrefix):
        (API::constructedPathFilter):
        (API::constructedPath):
        (API::ContentExtensionStore::getAvailableContentExtensionIdentifiers):
        * UIProcess/API/APIContentExtensionStore.h:
        * UIProcess/API/Cocoa/WKContentExtensionStore.h:
        * UIProcess/API/Cocoa/WKContentExtensionStore.mm:
        (-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:releasesArgument:]):
        (-[WKContentExtensionStore lookUpContentExtensionForIdentifier:completionHandler:]):
        (-[WKContentExtensionStore getAvailableContentExtensionIdentifiers:]):
        (-[WKContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):

2017-04-10  Jeremy Jones  <jeremyj@apple.com>

        Add CoreAudioCaptureSource.
        https://bugs.webkit.org/show_bug.cgi?id=170112
        rdar://problem/30293338

        Reviewed by Tim Horton.

        Add UseAVFoundationAudioCapture preference to switch back from the new default of CoreAudio.

        * Shared/WebPreferencesDefinitions.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetUseAVFoundationAudioCapture):
        (WKPreferencesGetUseAVFoundationAudioCapture):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2017-04-10  Brent Fulgham  <bfulgham@apple.com>

        [WK2][macOS] Block access to Apple Events before launch.
        https://bugs.webkit.org/show_bug.cgi?id=170626
        <rdar://problem/16079334>

        Reviewed by Alexey Proskuryakov.

        Clear the environment of the AppleEvent server name before initializing
        AppKit so we never bother connecting.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (main):

2017-04-10  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Misplaced right click menu on web page due to deprecated gtk_menu_popup()
        https://bugs.webkit.org/show_bug.cgi?id=170553

        Reviewed by Michael Catanzaro.

        Use gtk_menu_popup_at_pointer() and gtk_menu_popup_at_rect() when building with GTK+ 3.22 or
        newer. This allows the Wayland GTK+ backend to properly position popup menus, and also avoids
        using functions which were deprecated starting at that GTK+ release.

        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
        (WebKit::WebContextMenuProxyGtk::show): Use gtk_menu_popup_at_pointer() as there is always a
        pointer event that can be passed to it.
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Use gtk_menu_popup_at_rect(), using the coordinates
        of the control passed as reference rectangle. Some conditional code is needed because with newer
        GTK+ versions a relative offset instead of an absolute position is needed.

2017-04-10  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Opening a popup menu does not pre-select the active item
        https://bugs.webkit.org/show_bug.cgi?id=170680

        Reviewed by Michael Catanzaro.

        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Use gtk_menu_shell_select_item() to
        ensure that the active item appears selected right after popping up the menu.

2017-04-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Enable DOM timer throttling and CSS animations suspension
        https://bugs.webkit.org/show_bug.cgi?id=170669

        Reviewed by Žan Doberšek.

        * Shared/WebPreferencesDefinitions.h:

2017-04-10  Chris Dumez  <cdumez@apple.com>

        Drop Timer::startOneShot() overload taking a double
        https://bugs.webkit.org/show_bug.cgi?id=170659

        Reviewed by Yusuke Suzuki.

        Drop Timer::startOneShot() overload taking a double as people should use Seconds type now.

        * NetworkProcess/PingLoad.h:
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::startTimeout):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::ConnectionTerminationWatchdog::createConnectionTerminationWatchdog):
        (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
        (IPC::Connection::terminateSoon):
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::setMinimumLifetime):
        * PluginProcess/PluginProcess.h:
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::ChildProcess):
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::setTerminationTimeout):
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::startUpdateTimer):
        * Shared/Plugins/PluginProcessCreationParameters.h:
        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::initializeTimers):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:
        (API::SharedJSContext::ensureContext):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::shutDownProcess):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):
        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::discardBackingStoreSoon):
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::didDraw):
        * UIProcess/Gamepad/UIGamepadProvider.cpp:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        * UIProcess/ProcessThrottler.cpp:
        * UIProcess/ResponsivenessTimer.cpp:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        * UIProcess/gtk/GestureController.cpp:
        (WebKit::GestureController::DragGesture::begin):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::scheduleAnimation):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn):
        * WebProcess/WebProcess.cpp:

2017-04-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add infrastructure to perform actions after an asynchronous position information request finishes
        https://bugs.webkit.org/show_bug.cgi?id=170658
        <rdar://problem/31431450>

        Reviewed by Tim Horton.

        Introduces doAfterPositionInformationUpdate:forRequest:, which WKContentView can use internally to perform
        an action requiring InteractionInformationAtPosition asynchronously. See below for additional details.

        New API unit test: DataInteractionTests.UnresponsivePageDoesNotHangUI.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView _actionForLongPress]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):

        If current position information satisfies the request, then perform the given block immediately; otherwise, we
        save the block and request as a pair in a list of pending position information handlers, and then make a new
        request to the web process for position information if the currently outgoing request does not already satisfy
        the given request.

        (-[WKContentView ensurePositionInformationIsUpToDate:]):

        Fire all asynchronous position information handlers that are satisfied by the incoming position information.

        (-[WKContentView requestAsynchronousPositionInformationUpdate:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):

        Pulled out common logic for managing InteractionInformationRequests into separate helper methods.

        (-[WKContentView _invokeAndRemovePendingHandlersValidForCurrentPositionInformation]):
        (-[WKContentView gestureRecognizerShouldBegin:]):

        Refactored to use ensurePositionInformationIsUpToDate:. There is no behavior change here, but it makes sure that
        this particular request will also any valid pending position information handlers.

        (-[WKContentView _positionInformationDidChange:]):

        Fire all asynchronous position information handlers that are satisfied by the incoming position information.

        (-[WKContentView pointIsInDataInteractionContent:]): Deleted.

        We should no longer use this method, since it makes a synchronous request to the web process -- see
        positionInformationMayStartDataInteraction.

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

        Drop Timer::startRepeating() overload taking a double
        https://bugs.webkit.org/show_bug.cgi?id=170656

        Reviewed by Yusuke Suzuki.

        Drop Timer::startRepeating() overload taking a double as people should use Seconds type now.

        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::initializeTimers):
        * UIProcess/Cocoa/ViewGestureController.cpp:
        * UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
        * UIProcess/PerActivityStateCPUUsageSampler.cpp:
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::Timer::start):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::scheduleReleaseInactiveAtlases):

2017-04-09  Jon Lee  <jonlee@apple.com>

        [WK2][iOS] Add CoreMedia entitlement for WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=170623
        rdar://problem/30020073

        Reviewed by Youenn Fablet.

        * Configurations/WebContent-iOS.entitlements: Update entitlement to an array of strings instead of bool.

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

        Start dropping Timer API dealing with double
        https://bugs.webkit.org/show_bug.cgi?id=170649

        Reviewed by Yusuke Suzuki.

        Start dropping Timer API dealing with double as people should use Seconds now.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::scheduleFailure):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::resume):
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::destroy):
        (WebKit::PluginControllerProxy::startPaintTimer):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseScheduleUpdateActivityState):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::setViewExposedRect):
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        (WebKit::PluginInfoCache::updatePluginInfo):
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::addVisitedLinkHash):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::m_hiddenPageThrottlingAutoIncreasesCounter):
        * UIProcess/gtk/GestureController.cpp:
        (WebKit::GestureController::ZoomGesture::scaleChanged):
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::menuUnmappedCallback):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleInternallyFailedLoad):
        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
        (WebKit::NPRuntimeObjectMap::addToInvalidationQueue):
        * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
        (WebKit::NetscapePluginStream::deliverDataToPlugin):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::pendingURLRequestsTimerFired):
        (WebKit::PluginView::loadURL):
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeSoon):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::scheduleLayerFlush):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::scheduleDisplay):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateIsInWindow):
        (WebKit::WebPage::addPluginView):
        (WebKit::WebPage::setMayStartMediaWhenInWindow):
        (WebKit::WebPage::didFinishLoad):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::activityStateDidChange):

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

        Drop std::chrono support from Timer class
        https://bugs.webkit.org/show_bug.cgi?id=170645

        Reviewed by Sam Weinig.

        Drop std::chrono support from Timer class now that we prefer using Seconds type.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::Throttle::Throttle):
        (WebKit::NetworkLoad::didReceiveResponseNetworkSession):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::loadThrottleLatency):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::dispatchReadOperation):
        (WebKit::NetworkCache::Storage::store):
        * Shared/CacheModel.cpp:
        (WebKit::calculateMemoryCacheSizes):
        * Shared/CacheModel.h:
        * Shared/mac/RemoteLayerBackingStoreCollection.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):
        * WebProcess/Plugins/PluginView.cpp:
        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlushImmediately):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebProcess.cpp:
        (WebKit::m_resourceLoadStatisticsStore):
        (WebKit::WebProcess::setCacheModel):

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

        Unreviewed attempt to fix GTK build after r215138.

        * UIProcess/API/gtk/WebKitUIClient.cpp:

2017-04-08  Youenn Fablet  <youenn@apple.com>

        WebRTC tests gardening
        https://bugs.webkit.org/show_bug.cgi?id=170508

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

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

        Timer's nextFireInterval() / repeatInterval() should return Seconds
        https://bugs.webkit.org/show_bug.cgi?id=170639

        Reviewed by Simon Fraser.

        Timer's nextFireInterval() / repeatInterval() should return Seconds, not double.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::layerVolatilityTimerFired):
        (WebKit::WebPage::markLayersVolatile):

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

        Modernize WebPage.h
        https://bugs.webkit.org/show_bug.cgi?id=170633

        Reviewed by Joseph Pecoraro.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        * UIProcess/API/C/WKPage.cpp:
        (WebKit::RunBeforeUnloadConfirmPanelResultListener::create):
        (WebKit::RunJavaScriptAlertResultListener::create):
        (WebKit::RunJavaScriptConfirmResultListener::create):
        (WebKit::RunJavaScriptConfirmResultListener::RunJavaScriptConfirmResultListener):
        (WebKit::RunJavaScriptPromptResultListener::create):
        (WebKit::RunJavaScriptPromptResultListener::RunJavaScriptPromptResultListener):
        (WKPageSetPageUIClient):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadStringImpl):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::scaledSnapshotWithOptions):
        (WebKit::WebPage::SandboxExtensionTracker::willPerformLoadDragDestinationAction):
        (WebKit::WebPage::SandboxExtensionTracker::setPendingProvisionalSandboxExtension):
        * WebProcess/WebPage/WebPage.h:

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

        Use audit_token_t instead of pid_t for checking sandbox of other processes
        https://bugs.webkit.org/show_bug.cgi?id=170616
        <rdar://problem/31158189>

        Reviewed by Daniel Bates.

        pid's can be reused, so it's theoretically unsafe to use the pid of another process to check whether it's sandboxed.
        Use an audit_token_t instead to be more sure that we are not mistakenly checking a new process that has reused the
        old process's pid. For the current process, though, we have no xpc_connection_t to the process because we are the process.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::initializeSandbox):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::isClientSandboxed):
        * Shared/mac/SandboxUtilities.h:
        * Shared/mac/SandboxUtilities.mm:
        (WebKit::currentProcessIsSandboxed):
        (WebKit::connectedProcessIsSandboxed):
        (WebKit::processIsSandboxed): Deleted.
        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::platformIsBeingDebugged):
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldUsePlugin):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformGetLaunchOptions):

2017-04-07  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Add CoreMedia entitlement for WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=170623
        <rdar://problem/30020073>

        Reviewed by Youenn Fablet.

        Add new "com.apple.tcc.delegated-services" entitlement to allow CoreMedia
        to work properly in WebRTC.

        * Configurations/WebContent-iOS.entitlements:

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

        Private browsing sessions should not look in keychain for client certificates
        https://bugs.webkit.org/show_bug.cgi?id=170618
        <rdar://problem/18457427>

        Reviewed by Dan Bernstein.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::configurationForSessionID):

2017-04-07  Chris Dumez  <cdumez@apple.com>

        We should log how much CPU a background process was using when killing it due to CPU limiting
        https://bugs.webkit.org/show_bug.cgi?id=170619

        Reviewed by Andreas Kling.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateBackgroundCPUMonitorState):

2017-04-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Missing conversion from window to content coordinates when adjusting unobscured content rects for input view
        https://bugs.webkit.org/show_bug.cgi?id=170603

        Reviewed by Simon Fraser.

        Refactors -[WKContentView _computeUnobscuredContentRectRespectingInputViewBounds:unobscuredContentRect:inputViewBounds:scale:]
        to convert the input view bounds into content coordinates instead of using the zoom scale to adjust the height of inputViewBounds.
        Covered by the existing LayoutTest, fixed-element-on-bottom-with-keyboard.html.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _computeUnobscuredContentRectRespectingInputViewBounds:unobscuredContentRect:inputViewBounds:scale:]):

2017-04-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Various build errors when plugin support is disabled
        https://bugs.webkit.org/show_bug.cgi?id=170015

        Reviewed by Carlos Garcia Campos.

        * PluginProcess/unix/PluginControllerProxyUnix.cpp:
        * UIProcess/API/gtk/WebKitWebsiteData.cpp:
        (recordContainsSupportedDataTypes):
        (toWebKitWebsiteDataTypes):
        * UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
        (toWebsiteDataTypes):

2017-04-07  John Wilander  <wilander@apple.com>

        WebSocket streams should have network usage attributed to correct process
        https://bugs.webkit.org/show_bug.cgi?id=170322
        <rdar://problem/26413551>

        Reviewed by Alex Christensen.

        Changes here are due to the added WebCore::SourceApplicationAuditToken parameter
        in WebCore::SocketStreamHandleImpl::create().
        WebKit::NetworkSocketStream takes it and passes it on.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::createSocketStream):
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::create):
        (WebKit::NetworkSocketStream::NetworkSocketStream):
        * NetworkProcess/NetworkSocketStream.h:

2017-04-07  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix missing return value warning

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::diagnosticLoggingKeyForSimulatedCrashReason):

2017-04-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Update the priorities used in glib main loop sources
        https://bugs.webkit.org/show_bug.cgi?id=170457

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::CompositingRunLoop):
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::DrawingMonitor):
        * UIProcess/gtk/WaylandCompositor.cpp:
        (WebKit::createWaylandLoopSource):
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::CompositingCoordinator):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::DrawingAreaImpl):

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

        Add WKContentExtensionStore.h and WKContentExtension.h to public WebKit.h
        https://bugs.webkit.org/show_bug.cgi?id=170533

        Reviewed by Daniel Bates.

        * Shared/API/Cocoa/WebKit.h:
        In r213696 I added two public headers.  All public headers in WebKit are included with
        #import <WebKit/WebKit.h>

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Hangs when loading under SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics
        https://bugs.webkit.org/show_bug.cgi?id=170575

        Rubber-stamped by Brian Burg.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics): Deleted.
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
        m_networkLoad is a wrapper around `this` as the client, so we would infinite loop here.

2017-04-06  Commit Queue  <commit-queue@webkit.org>

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

        Causes issues in Safari (Requested by bradee-oh on #webkit).

        Reverted changeset:

        "Refactor so WebsiteDataStores always have a StorageManager."
        https://bugs.webkit.org/show_bug.cgi?id=170521
        http://trac.webkit.org/changeset/214973

2017-04-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215046.

        This change broke internal builds.

        Reverted changeset:

        "WebRTC tests gardening"
        https://bugs.webkit.org/show_bug.cgi?id=170508
        http://trac.webkit.org/changeset/215046

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
        https://bugs.webkit.org/show_bug.cgi?id=170525

        Reviewed by Youenn Fablet.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
        Only collect extra metrics if the WebProcess this load is for has enabled
        collecting extra metrics.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled):
        * WebProcess/Network/WebLoaderStrategy.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::captureExtraNetworkLoadMetricsEnabled):
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        New bool state toggled through the loader policy.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/NetworkDataTask.h:
        (WebKit::NetworkDataTaskClient::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadClient.h:
        (WebKit::NetworkLoadClient::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
        Default handling for network loads is to not include extra data. Thread
        client messages back from the NetworkLoads / SpeculativeLoads to check
        the NetworkConnectionToWebProcess state on whether or not we should collect
        extra metrics.

2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
        https://bugs.webkit.org/show_bug.cgi?id=16531
        <rdar://problem/5712895>

        Reviewed by Timothy Hatcher.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
        Include a complete list of the request headers sent for this load.
        There may be headers that WebCore did not know about and developer
        tools should be informed of.

2017-04-06  Anders Carlsson  <andersca@apple.com>

        OptionSet options need to be powers of two
        https://bugs.webkit.org/show_bug.cgi?id=170565

        Reviewed by Chris Dumez.

        Change Cache::Option to be powers of two.

        * NetworkProcess/cache/NetworkCache.h:

2017-04-06  Youenn Fablet  <youenn@apple.com>

        WebRTC tests gardening
        https://bugs.webkit.org/show_bug.cgi?id=170508

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2017-04-06  Antti Koivisto  <antti@apple.com>

        Implement testing mode for disk cache
        https://bugs.webkit.org/show_bug.cgi?id=170547

        Reviewed by Andreas Kling.

        Disable read timeouts and cache shrinking in TestRunner to eliminate potential sources of randomness.

        Cache directories are deleted by TestRunner so lack of shrinking does not consume the disk.

        This is enabled by the existing WKContextUseTestingNetworkSession SPI.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::initialize):
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::open):
        (WebKit::NetworkCache::Storage::Storage):
        (WebKit::NetworkCache::Storage::dispatchReadOperation):
        (WebKit::NetworkCache::Storage::shrinkIfNeeded):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

2017-04-06  Chris Dumez  <cdumez@apple.com>

        [WK2] Add C private API to toggle invisibleAutoplayNotPermitted setting
        https://bugs.webkit.org/show_bug.cgi?id=170524
        <rdar://problem/31461472>

        Reviewed by Eric Carlson.

        Add C private API to toggle invisibleAutoplayNotPermitted setting.

        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetInvisibleMediaAutoplayPermitted):
        (WKPreferencesGetInvisibleMediaAutoplayPermitted):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

2017-04-06  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Fix build with MEDIA_CAPTURE enabled
        https://bugs.webkit.org/show_bug.cgi?id=170539

        Reviewed by Carlos Garcia Campos.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
        (webkit_dom_html_input_element_get_capture): Add missing namespace in usage of WebCore::MediaCaptureTypeNone.

2017-04-05  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Remove access to features not present on iOS 
        https://bugs.webkit.org/show_bug.cgi?id=170531
        <rdar://problem/31352258>

        Reviewed by Alexey Proskuryakov.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2017-04-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Host application should be able to mute and unmute media streams
        https://bugs.webkit.org/show_bug.cgi?id=170519
        <rdar://problem/31174326>

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetMediaState): Support new media stream state flags.
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Ditto.
        * UIProcess/Cocoa/UIDelegate.mm: Ditto.

2017-04-05  Brady Eidson  <beidson@apple.com>

        Refactor so WebsiteDataStores always have a StorageManager.
        https://bugs.webkit.org/show_bug.cgi?id=170521

        Reviewed by Geoff Garen.

        This basically involves teaching StorageManager how to work without a LocalStorageDatabaseTracker,
        since there will never be ephemeral bits on disk to track.
        
        * UIProcess/Storage/StorageManager.cpp:
        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded):
        (WebKit::StorageManager::createEphemeral):
        (WebKit::StorageManager::StorageManager):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        * UIProcess/Storage/StorageManager.h:
        
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):

2017-04-05  Brent Fulgham  <bfulgham@apple.com>

        [WK2][iOS] Add entitlements to enable audio/video capture in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=170507
        <rdar://problem/31121248>

        Reviewed by Youenn Fablet.

        Add two entitlements that are required to access audio/video capture on iOS.

        * Configurations/WebContent-iOS.entitlements:

2017-04-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        Show a log message when an invalid message is received in non cocoa ports
        https://bugs.webkit.org/show_bug.cgi?id=170506

        Reviewed by Michael Catanzaro.

        We just crash, but without knowing the details about the message it's impossible to debug.

        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::didReceiveInvalidMessage):

2017-04-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move WebErrors from WebProcess to Shared and get rid of ErrorsGtk in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=156974

        Reviewed by Sam Weinig.

        WebErrors are not only used by the frame loader client in the web process, but also by the network process. So,
        move them to Shared make most of the implementation cross-platform.

        * CMakeLists.txt: Add new files to compilation.
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::download): Use WebErrors directly instead of platform methods that are no longer needed.
        (WebKit::NetworkDataTaskSoup::writeDownloadCallback): Ditto.
        (WebKit::NetworkDataTaskSoup::didFinishDownload): Ditto.
        (WebKit::NetworkDataTaskSoup::didFail): Ditto.
        * PlatformGTK.cmake: Add new files to compilation and remove DownloadSoupErrorsGtk.cpp
        * PlatformMac.cmake:
        * Shared/API/APIError.cpp: Add error domains used by glib based ports.
        (API::Error::webKitNetworkErrorDomain):
        (API::Error::webKitPolicyErrorDomain):
        (API::Error::webKitPluginErrorDomain):
        (API::Error::webKitDownloadErrorDomain):
        (API::Error::webKitPrintErrorDomain):
        * Shared/API/APIError.h:
        * Shared/Cocoa/WebErrorsCocoa.mm: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebErrors.h.
        (WebKit::createNSError):
        (WebKit::cancelledError):
        (WebKit::fileDoesNotExistError):
        * Shared/WebErrors.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebErrorsGtk.cpp.
        (WebKit::blockedError):
        (WebKit::blockedByContentBlockerError):
        (WebKit::cannotShowURLError):
        (WebKit::interruptedForPolicyChangeError):
        (WebKit::blockedByContentFilterError):
        (WebKit::cannotShowMIMETypeError):
        (WebKit::pluginWillHandleLoadError):
        (WebKit::internalError):
        * Shared/WebErrors.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebErrors.h.
        * Shared/glib/WebErrorsGlib.cpp: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebErrorsGtk.cpp.
        (WebKit::cancelledError):
        (WebKit::fileDoesNotExistError):
        * Shared/gtk/WebErrorsGtk.cpp: Copied from Source/WebKit2/NetworkProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp.
        (WebKit::printError):
        (WebKit::printerNotFoundError):
        (WebKit::invalidPageRangeToPrint):
        * Shared/soup/WebErrorsSoup.cpp: Renamed from Source/WebKit2/NetworkProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp.
        (WebKit::downloadNetworkError):
        (WebKit::downloadCancelledByUserError):
        (WebKit::downloadDestinationError):
        * UIProcess/API/gtk/WebKitDownload.cpp:
        * UIProcess/API/gtk/WebKitError.cpp:
        (webkit_network_error_quark):
        (webkit_policy_error_quark):
        (webkit_plugin_error_quark):
        (webkit_download_error_quark):
        (webkit_print_error_quark):
        * UIProcess/API/gtk/WebKitPrivate.cpp:
        (toWebKitError):
        (toWebCoreError):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/mac/WebErrorsMac.mm: Removed.
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:

2017-04-04  Youenn Fablet  <youenn@apple.com>

        [Mac] Add back web audio support for getUserMedia MediaStreamTrack
        https://bugs.webkit.org/show_bug.cgi?id=170482

        Reviewed by Eric Carlson.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setStorage):

2017-04-04  Tim Horton  <timothy_horton@apple.com>

        [Mac] -[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps
        https://bugs.webkit.org/show_bug.cgi?id=165801
        <rdar://problem/29649535>

        Reviewed by Wenson Hsieh.

        Previously, when doing an incremental find that wrapped, we would 
        say that it did not, leading NSTextFinder to not provide its usual
        wrapping UI, and other clients of the NSTextFinderClient protocol to
        get confused by the lack of wrapping.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFindString):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/API/APIFindClient.h:
        (API::FindClient::didFindString):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageFindClient):
        * UIProcess/Cocoa/FindClient.h:
        * UIProcess/Cocoa/FindClient.mm:
        (WebKit::FindClient::didFindString):
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::updateFindUIAfterPageScroll):
        (WebKit::FindController::findString):
        * WebProcess/WebPage/FindController.h:
        Plumb DidWrap from FindController's call to findString back through
        the DidFindString message.

        * UIProcess/mac/WKTextFinderClient.mm:
        (-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]):
        (-[WKTextFinderClient didFindStringMatchesWithRects:]): Deleted.
        Make use of the new DidWrap information to stop lying to NSTextFinder
        about whether a wrap actually occurred.

2017-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Data interaction should register type identifiers in order of priority
        https://bugs.webkit.org/show_bug.cgi?id=170428
        <rdar://problem/30633296>

        Reviewed by Tim Horton.

        Serialize PasteboardWebContent.dataInAttributedStringFormat when sending over IPC. Refer to WebCore ChangeLog
        for more details.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardWebContent>::encode):
        (IPC::ArgumentCoder<PasteboardWebContent>::decode):
        * UIProcess/API/Cocoa/WKWebView.mm:

2017-04-03  Joseph Pecoraro  <pecoraro@apple.com>

        Remove no longer needed forward declarations
        https://bugs.webkit.org/show_bug.cgi?id=170415

        Reviewed by Dan Bernstein.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:

2017-04-03  Anders Carlsson  <andersca@apple.com>

        Tweak ApplePaySession API
        https://bugs.webkit.org/show_bug.cgi?id=170409
        rdar://problem/31405459

        Reviewed by Tim Horton.

        Update for WebCore changes.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSError):

2017-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] URI Fragment is lost after redirect
        https://bugs.webkit.org/show_bug.cgi?id=170058

        Reviewed by Michael Catanzaro.

        In case of redirection check if the current request has a fragment identifier and apply it to the redirection
        only when it doesn't have a fragment identifier yet.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
        (WebKit::NetworkDataTaskSoup::createRequest):
        (WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
        * NetworkProcess/soup/NetworkDataTaskSoup.h:

2017-04-03  Antti Koivisto  <antti@apple.com>

        Mutex may be freed too late in NetworkCache::Storage::traverse
        https://bugs.webkit.org/show_bug.cgi?id=170400
        <rdar://problem/30515865>

        Reviewed by Carlos Garcia Campos and Andreas Kling.

        Fix a race.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::traverse):

            Ensure the mutex is not accessed after we dispatch to the main thread.
            The main thread call deletes the owning TraverseOperation.

2017-04-01  Dan Bernstein  <mitz@apple.com>

        [iOS] <input type=file> label should be specified using plural rules
        https://bugs.webkit.org/show_bug.cgi?id=170388

        Reviewed by Alexey Proskuryakov.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _processMediaInfoDictionaries:atIndex:processedResults:processedImageCount:processedVideoCount:successBlock:failureBlock:]):
          Instead of calling -_displayStringForPhotos:videos:, use
          +[NSString localizedStringWithFormat:] with the new format string "%lu photo(s) and
          %lu video(s)" for which there are plural rules.
        (-[WKFileUploadPanel _displayStringForPhotos:videos:]): Deleted.

2017-04-01  Dan Bernstein  <mitz@apple.com>

        [Xcode] In engineering builds, linker warns about libwebrtc.dylib’s install name being invalid
        https://bugs.webkit.org/show_bug.cgi?id=170385

        Reviewed by Tim Horton.

        * Configurations/WebKit.xcconfig: When WebKit is relocatable, tell the linker that it’s
          not going to be in the shared cache, even if its install name implies that it might be.

2017-03-31  Simon Fraser  <simon.fraser@apple.com>

        Remove a logging statement left in by mistake.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::restoreViewState):

2017-03-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        Address post-review feedback after r214692
        https://bugs.webkit.org/show_bug.cgi?id=170328

        Reviewed by Dan Bernstein.

        Clearing the selection when UIKit calls into WKContentView to set its selected text range to nil is a rule
        that should be applied when using a text interaction assistant, not just when using character granularity
        for selecting text.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setSelectedTextRange:]):

2017-03-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Tapping away to dismiss the selection does not update the selected DOM range using character granularity
        https://bugs.webkit.org/show_bug.cgi?id=170328
        <rdar://problem/30904558>

        Reviewed by Tim Horton.

        When UIKit clears the selection while in text interaction mode, it notifies its document view (i.e., the
        WKContentView) by setting its selected text range to nil. When character granularity selection is enabled, use
        this as a cue to notify the web process that the selection is being cleared out.

        -setSelectedTextRange: is a noop in the general case because the web process acts as the source of truth for what
        the selection currently consists of, and notifies the UI process and UIKit via WKTextPosition and WKTextRange.
        However, in the case of character granularity selections, tapping away to clear the selection is handled by
        UIKit's text gesture recognizer cluster, which then informs the document (via -setSelectedTextRange:) that the
        selection should be cleared out.

        Adds a new Layout test: editing/selection/character-granularity-selected-range-after-dismissing-selection.html.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setSelectedTextRange:]):

2017-03-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Tapping editable text inside of a range selection no longer changes the selection to a caret
        https://bugs.webkit.org/show_bug.cgi?id=170327
        <rdar://problem/31363816>

        Reviewed by Tim Horton.

        Currently, we're forcing all text interaction gestures to duck in lieu of data interaction gestures
        when we should only be doing so for gestures that begin a loupe. This prevents other gestures, such as
        single taps, from changing the selection when they should be allowed to.

        Hooks into new UIKit SPI to make this tweak.
        Introduces a new LayoutTest: editing/selection/caret-after-tap-in-editable-selection.html.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView pointIsInAssistedNode:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

2017-03-31  Tim Horton  <timothy_horton@apple.com>

        Mail can get stuck underneath FindController::findStringMatches after searching in a long message
        https://bugs.webkit.org/show_bug.cgi?id=170326
        <rdar://problem/30330395>

        Reviewed by Simon Fraser.

        * UIProcess/mac/WKTextFinderClient.mm:
        (-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]):
        Cap the number of find matches at 1000, the same maximum that Safari uses.

2017-03-31  Brady Eidson  <beidson@apple.com>

        Clean up the "StorageType" enum.
        https://bugs.webkit.org/show_bug.cgi?id=170349

        Reviewed by Tim Horton.

        * WebProcess/Storage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::StorageAreaMap):
        (WebKit::StorageAreaMap::dispatchStorageEvent):
        (WebKit::StorageAreaMap::dispatchSessionStorageEvent):
        (WebKit::StorageAreaMap::dispatchLocalStorageEvent):
        
        * WebProcess/Storage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace):

2017-03-31  Tim Horton  <timothy_horton@apple.com>

        Remove bundle checks for attachmentElementEnabled
        https://bugs.webkit.org/show_bug.cgi?id=170329
        <rdar://problem/25135244>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        Remove bundle checks.

2017-03-29  Anders Carlsson  <andersca@apple.com>

        Adopt PKCanMakePaymentsWithMerchantIdentifierAndDomainAndSourceApplication
        https://bugs.webkit.org/show_bug.cgi?id=170257
        rdar://problem/31289764

        Reviewed by Beth Dakin.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

2017-03-31  Csaba Osztrogonác  <ossy@webkit.org>

        Mac cmake buildfix after r214403
        https://bugs.webkit.org/show_bug.cgi?id=170346

        Unreviewed speculative buildfix.

        * UIProcess/API/Cocoa/WKWebView.mm:

2017-03-31  Brady Eidson  <beidson@apple.com>

        Remove erroneously committed changes from r214078

        Unreviewed.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess): Whoops!

2017-03-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        Modern media controls should never be enabled in non cocoa ports
        https://bugs.webkit.org/show_bug.cgi?id=170338

        Reviewed by Michael Catanzaro.

        It's currently enabled, because it uses the default value for all other runtime features, but modern media
        controls are not a cross-platform feature. I think this is why media/video-click-dblckick-standalone.html
        started to fail in GTK+ port after r214426. I can't reprouduce the failure locally, so I can't confirm it,
        though.

        * Shared/WebPreferencesDefinitions.h:

2017-03-30  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ build fix. List WebCore before JavaScriptCore as the
        two WebKit2 dependency libraries to avoid WTF directiories being
        listed for inclusion before WebCore directories at compile-time.

        * CMakeLists.txt:

2017-03-30  Megan Gardner  <megan_gardner@apple.com>

        Allow for extended color in snapshots
        https://bugs.webkit.org/show_bug.cgi?id=170314
        <rdar://problem/28676092> WKImageCreateCGImage should support WideGamut in WebKit2 on macOS

        Reviewed by Simon Fraser.

        Piping options through snapshots to allow for wide gamut support.

        * Shared/API/c/WKImage.h:
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::snapshotOptionsFromImageOptions):
        * Shared/ImageOptions.h:
        (WebKit::snapshotOptionsToImageOptions):
        * Shared/WebImage.cpp:
        (WebKit::WebImage::create):

2017-03-30  Sam Weinig  <sam@webkit.org>

        Expose the WKView SPI, _prepareForMoveToWindow:withCompletionHandler as WKWebView SPI
        <rdar://problem/31350588>
        https://bugs.webkit.org/show_bug.cgi?id=170315

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _prepareForMoveToWindow:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Copy SPI to WKWebView. Remove 'with' prefix to match conventions.

2017-03-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Touches should not cancel when showing a custom action sheet while data interaction is active
        https://bugs.webkit.org/show_bug.cgi?id=170291
        <rdar://problem/31301388>

        Reviewed by Tim Horton.

        Currently, when presenting a custom popover, we will cancel all touches in the application. This makes data
        interaction when a custom popover is shown impossible -- to address this, we should only cancel touches when
        the view is not an active data interaction source.

        New API test: DataInteractionTests.CustomActionSheetPopover.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):

2017-03-30  Youenn Fablet  <youenn@apple.com>

        NetworkConnectionToWebProcess should stop web sockets when being destroyed
        https://bugs.webkit.org/show_bug.cgi?id=170286

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::~NetworkSocketStream): Stopping the socket handle if not done already.
        * NetworkProcess/NetworkSocketStream.h:

2017-03-29  Tim Horton  <timothy_horton@apple.com>

        Remove unused PageClient::removeNavigationGestureSnapshot
        https://bugs.webkit.org/show_bug.cgi?id=170249

        Reviewed by Beth Dakin.

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::removeNavigationGestureSnapshot): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/PageClientImpl.h:
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::removeNavigationGestureSnapshot): Deleted.

2017-03-29  Antti Koivisto  <antti@apple.com>

        Increment the last stable network cache version on Mac
        https://bugs.webkit.org/show_bug.cgi?id=170248
        <rdar://problem/31326040>

        Reviewed by Chris Dumez.

        Bump to the latest release.

        * NetworkProcess/cache/NetworkCacheStorage.h:

2017-03-28  Timothy Horton  <timothy_horton@apple.com>

        Stop overriding scroll view inset defaults
        https://bugs.webkit.org/show_bug.cgi?id=170221
        <rdar://problem/31260325>

        Reviewed by Simon Fraser.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        The default behavior is sufficient for us.

2017-03-28  Timothy Horton  <timothy_horton@apple.com>

        Safari crashes when attempting to close tab that is displaying PDF
        https://bugs.webkit.org/show_bug.cgi?id=170201
        <rdar://problem/31242019>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _doAfterNextStablePresentationUpdate:]):
        Adopt BlockPtr to fix a leak.

        (-[WKWebView _firePresentationUpdateForPendingStableStatePresentationCallbacks]):
        dispatch_async in the doAfterNextPresentationUpdate callback; since this
        recursively calls itself, in cases where doAfterNextPresentationUpdate
        returns synchronously (e.g. if the Web Process is missing), we would
        recurse infinitely.

2017-03-27  Youenn Fablet  <youenn@apple.com>

        Remove WebPage::m_shouldDoICECandidateFiltering
        https://bugs.webkit.org/show_bug.cgi?id=170150

        Reviewed by Sam Weinig.

        It is redundant with RTCController::m_shouldFilterICECandidates.
        Manually tested on webrtc test samples.
        This code path is currently untested by rwt as we hook it to getUserMedia which is mocked in rwt.
        Additional testing will be added as a follow-up patch.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::disableICECandidateFiltering):
        (WebKit::WebPage::enableICECandidateFiltering):
        * WebProcess/WebPage/WebPage.h:

2017-03-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] UIKit assertion when rotating device after dismissing popover
        https://bugs.webkit.org/show_bug.cgi?id=170159
        <rdar://problem/31283829>

        Reviewed by Tim Horton.

        Ensure that when we are finished presenting a WKActionSheet, we unregister with the shared notifications center.

        * UIProcess/ios/WKActionSheet.mm:
        (-[WKActionSheet dealloc]):
        (-[WKActionSheet _cleanup]):
        (-[WKActionSheet doneWithSheet:]):

2017-03-27  Andy Estes  <aestes@apple.com>

        [iOS] Suppress page count recalc when setting a snapshot paper rect
        https://bugs.webkit.org/show_bug.cgi?id=170156
        <rdar://problem/30787872>

        Reviewed by Tim Horton.

        When _WKWebViewPrintFormatter computes a page count for snapshotting, it updates the paper
        rect, which triggers UIKit to ask for the page count again while we're in the middle of
        printing, putting us in a bad state.

        Suppress page count recalc while setting the new paper rect, since we know this will not
        cause it to change.

        * UIProcess/_WKWebViewPrintFormatter.mm:
        (-[_WKWebViewPrintFormatter _setSnapshotPaperRect:]): Temporarily set
        _suppressPageCountRecalc to YES before updating the paper rect.
        (-[_WKWebViewPrintFormatter _setNeedsRecalc]): Only call [super _setNeedsRecalc] if
        _suppressPageCountRecalc is NO.
        * UIProcess/_WKWebViewPrintFormatterInternal.h: Declared -_setNeedsRecalc.

2017-03-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Callout Bar should be dismissed during data interaction
        https://bugs.webkit.org/show_bug.cgi?id=170109
        <rdar://problem/31171570>

        Reviewed by Tim Horton.

        Minor tweak to get the callout bar to duck during data interaction. Import a new UIKit SPI header in WebKit2.

        * Platform/spi/ios/UIKitSPI.h:

2017-03-27  Keith Rollin  <krollin@apple.com>

        Update NetworkResourceLoader logging statement
        https://bugs.webkit.org/show_bug.cgi?id=170126

        Reviewed by Alex Christensen.

        NetworkResourceLoader contains a logging statement that prints, in
        part: "start: Retrieving resource from cache". This is misleading,
        since it's not necessarily the case that the resource will be loaded
        from the cache. What is actually happening at the point where that is
        logged is that the cache is being checked for the resource. It still
        remains to be seen if the resource will be found in it. To address
        this, change the logging to say "start: Checking cache for resource".

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):

2017-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Saving files should not suggest the top level directory
        https://bugs.webkit.org/show_bug.cgi?id=170085
        <rdar://problem/30197794>

        Reviewed by Matt Baker.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformSave):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformSave):
        Don't set panel.directoryURL unless we have a good suggestion.

2017-03-27  Yongjun Zhang  <yongjun_zhang@apple.com>

        Add delegate method to let an WebKit client provide a custom image preview controller.
        https://bugs.webkit.org/show_bug.cgi?id=170076
        rdar://problem/31153051

        Add a new delegate method (_webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:) to
        WKUIDelegatePrivate, an client can use this method to provide a custom image preview view controller if the image
        has alternated URL or custom image info.

        Reviewed by Beth Dakin.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add delegate method _webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _presentedViewControllerForPreviewItemController:]): If the image has alternated URL or custom info, try to use the client-provided
            preview view controller. Otherwise, use the default WKImagePreviewViewController.

2017-03-27  Anders Carlsson  <andersca@apple.com>

        Fix uses of deprecated API
        https://bugs.webkit.org/show_bug.cgi?id=170138
        rdar://problem/28882449

        Reviewed by Tim Horton.

        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKContactFields):
        (WebKit::toPKAddressField):
        (WebKit::toPKPaymentRequest):
        Don't use deprecated APIs.

        (WebKit::toNSError):
        Don't try to insert nil in a dictionary.

2017-03-27  Alex Christensen  <achristensen@webkit.org>

        Make WebSockets work in network process
        https://bugs.webkit.org/show_bug.cgi?id=169930

        Reviewed by Youenn Fablet.

        This adds WebSocketStream, which is a SocketStreamHandle that sends asynchronous 
        messages to a NetworkSocketStream in the NetworkProcess.  WebKit1 uses a SocketStreamHandleImpl
        still, but WebKit2 now has a SocketStreamHandleImpl in the NetworkProcess owned by the 
        NetworkSocketStream, which is a SocketStreamHandleClient that sends asynchronous messages back
        to the WebProcess.  WebSocketStream's implementation of SocketStreamHandle::platformSend is special
        because it stores the completion handler in a map and asynchronously reports to the caller whether
        it succeeded or not.  If the network processes crashes before the completion handlers are called,
        then they are called indicating failure and an error is reported, but that never happens, right?

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::createSocketStream):
        (WebKit::NetworkConnectionToWebProcess::destroySocketStream):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setAllowsAnySSLCertificateForWebSocket):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSocketStream.cpp: Added.
        (WebKit::NetworkSocketStream::create):
        (WebKit::NetworkSocketStream::NetworkSocketStream):
        (WebKit::NetworkSocketStream::sendData):
        (WebKit::NetworkSocketStream::close):
        (WebKit::NetworkSocketStream::didOpenSocketStream):
        (WebKit::NetworkSocketStream::didCloseSocketStream):
        (WebKit::NetworkSocketStream::didReceiveSocketStreamData):
        (WebKit::NetworkSocketStream::didFailToReceiveSocketStreamData):
        (WebKit::NetworkSocketStream::didUpdateBufferedAmount):
        (WebKit::NetworkSocketStream::didFailSocketStream):
        (WebKit::NetworkSocketStream::messageSenderConnection):
        (WebKit::NetworkSocketStream::messageSenderDestinationID):
        * NetworkProcess/NetworkSocketStream.h: Added.
        * NetworkProcess/NetworkSocketStream.messages.in: Added.
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetAllowsAnySSLCertificateForWebSocketTesting):
        (WKContextTerminateNetworkProcess):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendSyncToNetworkingProcess):
        (WebKit::WebProcessPool::setAllowsAnySSLCertificateForWebSocket):
        (WebKit::WebProcessPool::terminateNetworkProcess):
        * UIProcess/WebProcessPool.h:
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        * WebProcess/Network/WebSocketProvider.cpp:
        (WebKit::WebSocketProvider::createSocketStreamHandle):
        * WebProcess/Network/WebSocketStream.cpp: Added.
        (WebKit::globalWebSocketStreamMap):
        (WebKit::WebSocketStream::streamWithIdentifier):
        (WebKit::WebSocketStream::networkProcessCrashed):
        (WebKit::WebSocketStream::create):
        (WebKit::WebSocketStream::WebSocketStream):
        (WebKit::WebSocketStream::~WebSocketStream):
        (WebKit::WebSocketStream::messageSenderConnection):
        (WebKit::WebSocketStream::messageSenderDestinationID):
        (WebKit::WebSocketStream::platformSend):
        (WebKit::WebSocketStream::didSendData):
        (WebKit::WebSocketStream::platformClose):
        (WebKit::WebSocketStream::bufferedAmount):
        (WebKit::WebSocketStream::didOpenSocketStream):
        (WebKit::WebSocketStream::didCloseSocketStream):
        (WebKit::WebSocketStream::didReceiveSocketStreamData):
        (WebKit::WebSocketStream::didFailToReceiveSocketStreamData):
        (WebKit::WebSocketStream::didUpdateBufferedAmount):
        (WebKit::WebSocketStream::didFailSocketStream):
        * WebProcess/Network/WebSocketStream.h: Added.
        * WebProcess/Network/WebSocketStream.messages.in: Added.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):

2017-03-27  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] NetscapePluginX11::m_windowID is unused/unneeded
        https://bugs.webkit.org/show_bug.cgi?id=170115

        Reviewed by Michael Catanzaro.

        * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
        (WebKit::NetscapePluginX11::NetscapePluginX11):
        Remove the unneeded NetscapePluginX11::m_windowID member.
        * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:
        Remove the unneeded NetscapePluginX11::m_windowID member.

2017-03-25  Andy Estes  <aestes@apple.com>

        [iOS] Use snapshotting instead of printing to draw single-page PDFs
        https://bugs.webkit.org/show_bug.cgi?id=170103
        <rdar://problem/30542960>

        Reviewed by Tim Horton.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::paintSnapshotAtSize): Moved the painting logic from WebPage::snapshotAtSize() to here.
        (WebKit::WebPage::snapshotAtSize): Changed to call paintSnapshotAtSize() with the
        WebImage's graphics context.
        (WebKit::WebPage::pdfSnapshotAtSize): Created a CGPDFGraphicsContext, passed it to
        paintSnapshotAtSize(), and returned the context's data.
        * WebProcess/WebPage/WebPage.h: Made snapshotAtSize() and snapshotNode() private, changed
        their return values from PassRefPtr to RefPtr, and declared pdfSnapshotAtSize().
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::computePagesForPrintingAndDrawToPDF): If snapshotting the first page,
        returned a page count of 1 and created a PDF using pdfSnapshotAtSize().

2017-03-25  John Wilander  <wilander@apple.com>

        Re-enable the web process' keychain access to fix client certificate authentication
        https://bugs.webkit.org/show_bug.cgi?id=170074
        <rdar://problem/31095987>

        Reviewed by Brent Fulgham.

        This is a follow-up patch to
        https://trac.webkit.org/changeset/214389/webkit
        since according to Alexey Proskuryakov, resource
        loading has always required identical sandbox
        rules in WebContent and Networking processes.

        * WebProcess/com.apple.WebProcess.sb.in:
            Reverted remaining change from
            https://trac.webkit.org/changeset/208702/webkit and
            https://trac.webkit.org/changeset/208707/webkit.

2017-03-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop
        https://bugs.webkit.org/show_bug.cgi?id=169168
        <rdar://problem/30688374>

        Reviewed by Tim Horton.

        Support customizing the set of allowed actions on drop in WebKit2 by introducing a new method to WKUIDelegatePrivate
        that returns a WKDragDestinationAction given platform dragging info. These flags are then used to initialize the
        DragData sent over to the web process, where they update DragController's view of the allowed destination actions.

        Moving forward, the default action mask for WKWebViews will include everything except WKDragDestinationActionLoad,
        though for applciations linked on or before 10.12, we will still default to WKDragDestinationActionAny to mitigate
        any compatibility risk.

        * Shared/API/Cocoa/WKDragDestinationAction.h:

        Introduce WK2 client-facing versions of WebCore::DragDestinationAction flags.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DragData>::encode):
        (IPC::ArgumentCoder<DragData>::decode):

        Serialize DragData's destination actions when sending DragData over IPC.

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

        For WKWebView, allow all drag destination actions except for loading (i.e. drop-to-navigate).

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

        For WKView, allow all types of drag destination actions.

        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::draggingEntered):
        (WebKit::WebViewImpl::draggingUpdated):
        * WebKit2.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebDragClient.cpp:
        (WebKit::WebDragClient::actionMaskForDrag):
        * WebProcess/WebCoreSupport/WebDragClient.h:

2017-03-24  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Move from a pre-commit handler to dispatch_async for visible content rect updates
        https://bugs.webkit.org/show_bug.cgi?id=170091
        rdar://problem/30682584

        Reviewed by Tim Horton.
        
        [CATransaction addCommitHandler:forPhase:] is sometimes not called when running inside another
        commit callback (rdar://problem/31253952), and we don't yet have a reliable way to detect this.

        So dispatch_async() to postpone the call to [CATransaction addCommitHandler:forPhase:] to a known-
        good time.

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

2017-03-24  John Wilander  <wilander@apple.com>

        Re-enable the network process' keychain access to fix client certificate authentication
        https://bugs.webkit.org/show_bug.cgi?id=170074
        <rdar://problem/31095987>

        Reviewed by Brent Fulgham.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
            Reverted remaining change from
            https://trac.webkit.org/changeset/208702/webkit and
            https://trac.webkit.org/changeset/208707/webkit.

2017-03-24  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] "ideal" constraints passed to getUserMedia should affect fitness score
        https://bugs.webkit.org/show_bug.cgi?id=170056

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): When
        short-circuiting the user prompt because the page is already authorized, return the first
        audio and/or video device because so the page gets the one with the best fitness distance.

2017-03-24  Simon Fraser  <simon.fraser@apple.com>

        Make UI-side compositing on macOS a bit more usable
        https://bugs.webkit.org/show_bug.cgi?id=170073

        Reviewed by Tim Horton.
        
        Mach port as layer contents doesn't work on macOS, so don't use it there.

        Also remove two assertions that hit with UI-side compositing in MiniBrowser.

        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::createFence):
        * UIProcess/mac/PageClientImpl.mm:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/mac/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):

2017-03-24  Alex Christensen  <achristensen@webkit.org>

        Fix assertions after r214358.
        https://bugs.webkit.org/show_bug.cgi?id=169167

        * UIProcess/API/APIContentExtensionStore.cpp:
        (API::ContentExtensionStore::compileContentExtension):
        AtomicString::init must be called for the first time from the main thread.
        We were calling it for the first time from a non-main thread sometimes.
        Call it from the main thread before initiating compiling on another thread.

== Rolled over to ChangeLog-2017-03-23 ==
