ChangeLog   [plain text]


2019-03-08  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r242629. rdar://problem/48716549

    Crash under RemoteLayerTreePropertyApplier::applyProperties
    https://bugs.webkit.org/show_bug.cgi?id=195448
    <rdar://problem/48588226>
    
    Reviewed by Simon Fraser.
    
    * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
    (WebKit::RemoteLayerTreeHost::updateLayerTree):
    Under some currently-unknown circumstances, the UI process is receiving
    commits referring to layers that it does not know about.
    One understood case of this was fixed in r241899, but there seem to be
    cases remaining that are not understood.
    Also, add a release log so that we can identify any downstream effects.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242629 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Crash under RemoteLayerTreePropertyApplier::applyProperties
            https://bugs.webkit.org/show_bug.cgi?id=195448
            <rdar://problem/48588226>

            Reviewed by Simon Fraser.

            * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
            (WebKit::RemoteLayerTreeHost::updateLayerTree):
            Under some currently-unknown circumstances, the UI process is receiving
            commits referring to layers that it does not know about.
            One understood case of this was fixed in r241899, but there seem to be
            cases remaining that are not understood.
            Also, add a release log so that we can identify any downstream effects.

2019-03-06  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r242554. rdar://problem/48538837

    REGRESSION (r238490): YouTube.com: Returning PiP to Safari after sleeping device loses page
    https://bugs.webkit.org/show_bug.cgi?id=195364
    <rdar://problem/48538837>
    
    Reviewed by Geoffrey Garen.
    
    Make sure we unset the LayerTreeFreezeReason::ProcessSuspended layer tree freeze reason
    when WebPage::applicationWillEnterForeground() is called. This restores pre-r238490
    behavior and addresses the issue with PiP on youtube.com.
    
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::applicationWillEnterForeground):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242554 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            REGRESSION (r238490): YouTube.com: Returning PiP to Safari after sleeping device loses page
            https://bugs.webkit.org/show_bug.cgi?id=195364
            <rdar://problem/48538837>

            Reviewed by Geoffrey Garen.

            Make sure we unset the LayerTreeFreezeReason::ProcessSuspended layer tree freeze reason
            when WebPage::applicationWillEnterForeground() is called. This restores pre-r238490
            behavior and addresses the issue with PiP on youtube.com.

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

2019-03-05  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r242394. rdar://problem/48591281

    Unreviewed build fix after r242378
    
    * UIProcess/ios/EditableImageController.mm:
    (WebKit::EditableImageController::associateWithAttachment):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242394 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-03-04  Brent Fulgham  <bfulgham@apple.com>

            Unreviewed build fix after r242378

            * UIProcess/ios/EditableImageController.mm:
            (WebKit::EditableImageController::associateWithAttachment):

2019-03-05  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r242378. rdar://problem/48591281

    Check contextIDs when handling WebContent messages
    https://bugs.webkit.org/show_bug.cgi?id=195289
    <rdar://problem/48475870>
    
    Reviewed by Alex Christensen.
    
    The WebContent process is untrusted because it handles arbitrary markup and javascript from untrusted sources.
    We should handle its messages with suspicion, and make sure the arguments are valid and usable before honoring them.
    
    This patch hardens the message passing layer by performing MESSAGE_CHECK in places that had been overlooked.
    
    * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
    (WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID):
    (WebKit::PlaybackSessionManagerProxy::currentTimeChanged):
    (WebKit::PlaybackSessionManagerProxy::bufferedTimeChanged):
    (WebKit::PlaybackSessionManagerProxy::seekableRangesVectorChanged):
    (WebKit::PlaybackSessionManagerProxy::canPlayFastReverseChanged):
    (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionOptionsChanged):
    (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionOptionsChanged):
    (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionIndexChanged):
    (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionIndexChanged):
    (WebKit::PlaybackSessionManagerProxy::externalPlaybackPropertiesChanged):
    (WebKit::PlaybackSessionManagerProxy::wirelessVideoPlaybackDisabledChanged):
    (WebKit::PlaybackSessionManagerProxy::mutedChanged):
    (WebKit::PlaybackSessionManagerProxy::volumeChanged):
    (WebKit::PlaybackSessionManagerProxy::durationChanged):
    (WebKit::PlaybackSessionManagerProxy::playbackStartedTimeChanged):
    (WebKit::PlaybackSessionManagerProxy::rateChanged):
    (WebKit::PlaybackSessionManagerProxy::pictureInPictureSupportedChanged):
    (WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged):
    (WebKit::PlaybackSessionManagerProxy::handleControlledElementIDResponse const):
    * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
    (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
    (WebKit::UserMediaCaptureManagerProxy::startProducingData):
    (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
    (WebKit::UserMediaCaptureManagerProxy::end):
    (WebKit::UserMediaCaptureManagerProxy::capabilities):
    (WebKit::UserMediaCaptureManagerProxy::setMuted):
    (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
    (WebKit::VideoFullscreenManagerProxy::setHasVideo):
    (WebKit::VideoFullscreenManagerProxy::setVideoDimensions):
    (WebKit::VideoFullscreenManagerProxy::enterFullscreen):
    (WebKit::VideoFullscreenManagerProxy::exitFullscreen):
    (WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode):
    (WebKit::VideoFullscreenManagerProxy::setInlineRect):
    (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer):
    (WebKit::VideoFullscreenManagerProxy::cleanupFullscreen):
    (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):
    (WebKit::VideoFullscreenManagerProxy::preparedToExitFullscreen):
    * UIProcess/ios/EditableImageController.mm:
    (WebKit::EditableImageController::didCreateEditableImage):
    (WebKit::EditableImageController::didDestroyEditableImage):
    (WebKit::EditableImageController::associateWithAttachment):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242378 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-03-04  Brent Fulgham  <bfulgham@apple.com>

            Check contextIDs when handling WebContent messages
            https://bugs.webkit.org/show_bug.cgi?id=195289
            <rdar://problem/48475870>

            Reviewed by Alex Christensen.

            The WebContent process is untrusted because it handles arbitrary markup and javascript from untrusted sources.
            We should handle its messages with suspicion, and make sure the arguments are valid and usable before honoring them.

            This patch hardens the message passing layer by performing MESSAGE_CHECK in places that had been overlooked.

            * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
            (WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID):
            (WebKit::PlaybackSessionManagerProxy::currentTimeChanged):
            (WebKit::PlaybackSessionManagerProxy::bufferedTimeChanged):
            (WebKit::PlaybackSessionManagerProxy::seekableRangesVectorChanged):
            (WebKit::PlaybackSessionManagerProxy::canPlayFastReverseChanged):
            (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionOptionsChanged):
            (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionOptionsChanged):
            (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionIndexChanged):
            (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionIndexChanged):
            (WebKit::PlaybackSessionManagerProxy::externalPlaybackPropertiesChanged):
            (WebKit::PlaybackSessionManagerProxy::wirelessVideoPlaybackDisabledChanged):
            (WebKit::PlaybackSessionManagerProxy::mutedChanged):
            (WebKit::PlaybackSessionManagerProxy::volumeChanged):
            (WebKit::PlaybackSessionManagerProxy::durationChanged):
            (WebKit::PlaybackSessionManagerProxy::playbackStartedTimeChanged):
            (WebKit::PlaybackSessionManagerProxy::rateChanged):
            (WebKit::PlaybackSessionManagerProxy::pictureInPictureSupportedChanged):
            (WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged):
            (WebKit::PlaybackSessionManagerProxy::handleControlledElementIDResponse const):
            * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
            (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
            (WebKit::UserMediaCaptureManagerProxy::startProducingData):
            (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
            (WebKit::UserMediaCaptureManagerProxy::end):
            (WebKit::UserMediaCaptureManagerProxy::capabilities):
            (WebKit::UserMediaCaptureManagerProxy::setMuted):
            (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
            (WebKit::VideoFullscreenManagerProxy::setHasVideo):
            (WebKit::VideoFullscreenManagerProxy::setVideoDimensions):
            (WebKit::VideoFullscreenManagerProxy::enterFullscreen):
            (WebKit::VideoFullscreenManagerProxy::exitFullscreen):
            (WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode):
            (WebKit::VideoFullscreenManagerProxy::setInlineRect):
            (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer):
            (WebKit::VideoFullscreenManagerProxy::cleanupFullscreen):
            (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):
            (WebKit::VideoFullscreenManagerProxy::preparedToExitFullscreen):
            * UIProcess/ios/EditableImageController.mm:
            (WebKit::EditableImageController::didCreateEditableImage):
            (WebKit::EditableImageController::didDestroyEditableImage):
            (WebKit::EditableImageController::associateWithAttachment):

2019-03-04  Null  <null@apple.com>

        Cherry-pick r242302. rdar://problem/48520362

    Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
    https://bugs.webkit.org/show_bug.cgi?id=195229
    <rdar://problem/48520362>
    
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
    but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.
    
    Functionality verified by manual testing.  See radar.
    Added an API test that verifies the setter restrictions work as expected.
    
    * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
    (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
    (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
    (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
    (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
    * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
    * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
    (WebKit::toPKPaymentRequest):
    * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
    (WebKit::WebsiteDataStore::parameters):
    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
    (WebKit::WebsiteDataStore::WebsiteDataStore):
    (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
    (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
    * UIProcess/WebsiteData/WebsiteDataStore.h:
    (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
    (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
    (TEST):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242302 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
            https://bugs.webkit.org/show_bug.cgi?id=195229
            <rdar://problem/48520362>

            Reviewed by Chris Dumez.

            Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
            but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.

            Functionality verified by manual testing.  See radar.
            Added an API test that verifies the setter restrictions work as expected.

            * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
            (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
            (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
            (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
            (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
            * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
            * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
            (WebKit::toPKPaymentRequest):
            * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
            (WebKit::WebsiteDataStore::parameters):
            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
            (WebKit::WebsiteDataStore::WebsiteDataStore):
            (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
            (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
            * UIProcess/WebsiteData/WebsiteDataStore.h:
            (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
            (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):

2019-03-04  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r242355. rdar://problem/48563891

    [iOS] Fullscreen "stay in page" option breaks video playback
    https://bugs.webkit.org/show_bug.cgi?id=195277
    <rdar://problem/48537317>
    
    Reviewed by Eric Carlson.
    
    Source/WebCore:
    
    Add a LOG entry when playback is rejected due to media playback suspension.
    
    * html/MediaElementSession.cpp:
    (WebCore::MediaElementSession::playbackPermitted const):
    
    Source/WebKit:
    
    Make sure we resume media playback when the user chooses "stay in page" from the deceptive
    website warning dialog.
    
    * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
    (-[WKFullScreenViewController _showPhishingAlert]):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242355 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-03-04  Jer Noble  <jer.noble@apple.com>

            [iOS] Fullscreen "stay in page" option breaks video playback
            https://bugs.webkit.org/show_bug.cgi?id=195277
            <rdar://problem/48537317>

            Reviewed by Eric Carlson.

            Make sure we resume media playback when the user chooses "stay in page" from the deceptive
            website warning dialog.

            * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
            (-[WKFullScreenViewController _showPhishingAlert]):

2019-02-27  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/48429676

    2019-02-27  Alex Christensen  <achristensen@webkit.org>

            Move ephemeral local storage from WebProcess to UIProcess
            https://bugs.webkit.org/show_bug.cgi?id=195074
            <rdar://problem/47937975>

            Reviewed by Geoff Garen.

            Before PSON, a page could navigate to another domain that navigates back and still have its local storage.
            Since PSON makes it unreliable to retain the state in the WebProcess, move it to the process with the rest of the local storage.
            If it's ephemeral, we obviously can't use the SQLite on-disk storage implementation, so use the same WebCore::StorageMap we used to in the WebProcess.

            * UIProcess/WebStorage/StorageManager.cpp:
            (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace):
            (WebKit::StorageManager::StorageManager):
            (WebKit::StorageManager::createLocalStorageMap):
            (WebKit::StorageManager::createTransientLocalStorageMap):
            (WebKit::StorageManager::createSessionStorageMap):
            (WebKit::StorageManager::destroyStorageMap):
            (WebKit::StorageManager::getValues):
            (WebKit::StorageManager::setItem):
            (WebKit::StorageManager::removeItem):
            (WebKit::StorageManager::clear):
            * UIProcess/WebStorage/StorageManager.h:
            * UIProcess/WebStorage/StorageManager.messages.in:
            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
            (WebKit::WebsiteDataStore::WebsiteDataStore):
            * WebProcess/WebStorage/StorageAreaMap.cpp:
            (WebKit::StorageAreaMap::StorageAreaMap):
            (WebKit::StorageAreaMap::setItem):
            (WebKit::StorageAreaMap::removeItem):
            (WebKit::StorageAreaMap::clear):
            (WebKit::StorageAreaMap::loadValuesIfNeeded):
            * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
            (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
            (WebKit::StorageNamespaceImpl::storageArea):
            (WebKit::StorageNamespaceImpl::copy):
            (): Deleted.
            (WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea): Deleted.
            * WebProcess/WebStorage/StorageNamespaceImpl.h:

2019-02-27  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r242099. rdar://problem/48429675

    [iOS] Regression(PSON) Scroll position is no longer restored when navigating back to reddit.com
    https://bugs.webkit.org/show_bug.cgi?id=195054
    <rdar://problem/48330549>
    
    Reviewed by Geoff Garen.
    
    Source/WebCore:
    
    Add MaintainMemoryCache flag to indicate that the memory cache should not get purged.
    
    * page/MemoryRelease.cpp:
    (WebCore::releaseNoncriticalMemory):
    (WebCore::releaseCriticalMemory):
    (WebCore::releaseMemory):
    * page/MemoryRelease.h:
    
    Source/WebKit:
    
    We attempt to restore the scroll position twice, on first layout and then on load completion.
    Before PSON, the scroll position would fail to get restored on first layout but would succeed
    on load completion because the view is tall enough by then. With PSON however, we would
    fail to restore the scroll position on load completion because the view would not be tall
    enough yet by this point. The reason is that the dynamic resources would not be in the memory cache
    and would then get reloaded abd finish loading *after* the load event.
    
    To address the issue, we now make sure to not purge the memory cache on process suspension on
    iOS if there is currently a SuspendedPageProxy in the UIProcess for this process.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::incrementSuspendedPageCount):
    (WebKit::WebProcessProxy::decrementSuspendedPageCount):
    * UIProcess/WebProcessProxy.h:
    * WebProcess/WebProcess.cpp:
    (WebKit::WebProcess::initializeWebProcess):
    (WebKit::WebProcess::setHasSuspendedPageProxy):
    * WebProcess/WebProcess.h:
    * WebProcess/WebProcess.messages.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242099 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-26  Chris Dumez  <cdumez@apple.com>

            [iOS] Regression(PSON) Scroll position is no longer restored when navigating back to reddit.com
            https://bugs.webkit.org/show_bug.cgi?id=195054
            <rdar://problem/48330549>

            Reviewed by Geoff Garen.

            We attempt to restore the scroll position twice, on first layout and then on load completion.
            Before PSON, the scroll position would fail to get restored on first layout but would succeed
            on load completion because the view is tall enough by then. With PSON however, we would
            fail to restore the scroll position on load completion because the view would not be tall
            enough yet by this point. The reason is that the dynamic resources would not be in the memory cache
            and would then get reloaded abd finish loading *after* the load event.

            To address the issue, we now make sure to not purge the memory cache on process suspension on
            iOS if there is currently a SuspendedPageProxy in the UIProcess for this process.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::incrementSuspendedPageCount):
            (WebKit::WebProcessProxy::decrementSuspendedPageCount):
            * UIProcess/WebProcessProxy.h:
            * WebProcess/WebProcess.cpp:
            (WebKit::WebProcess::initializeWebProcess):
            (WebKit::WebProcess::setHasSuspendedPageProxy):
            * WebProcess/WebProcess.h:
            * WebProcess/WebProcess.messages.in:

2019-02-27  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r242089. rdar://problem/48429668

    WebPageProxy should nullify m_userMediaPermissionRequestManager after resetting the media state
    https://bugs.webkit.org/show_bug.cgi?id=195028
    <rdar://problem/48243733>
    
    Reviewed by Eric Carlson.
    
    Source/WebKit:
    
    Covered by API test.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::resetState):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242089 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-26  Youenn Fablet  <youenn@apple.com>

            WebPageProxy should nullify m_userMediaPermissionRequestManager after resetting the media state
            https://bugs.webkit.org/show_bug.cgi?id=195028
            <rdar://problem/48243733>

            Reviewed by Eric Carlson.

            Covered by API test.

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

2019-02-27  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r242098. rdar://problem/48429674

    [iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
    https://bugs.webkit.org/show_bug.cgi?id=195037
    <rdar://problem/48154508>
    
    Reviewed by Antti Koivisto.
    
    Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
    as this has been an issue when I was able to reproduce the issue locally.
    
    Also added release logging to help diagnose the issue in the future.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::freezeLayerTree):
    (WebKit::WebPage::unfreezeLayerTree):
    (WebKit::WebPage::didCompletePageTransition):
    * WebProcess/WebProcess.cpp:
    (WebKit::WebProcess::freezeAllLayerTrees):
    (WebKit::WebProcess::unfreezeAllLayerTrees):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242098 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-26  Ryosuke Niwa  <rniwa@webkit.org>

            [iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
            https://bugs.webkit.org/show_bug.cgi?id=195037
            <rdar://problem/48154508>

            Reviewed by Antti Koivisto.

            Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
            as this has been an issue when I was able to reproduce the issue locally.

            Also added release logging to help diagnose the issue in the future.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::freezeLayerTree):
            (WebKit::WebPage::unfreezeLayerTree):
            (WebKit::WebPage::didCompletePageTransition):
            * WebProcess/WebProcess.cpp:
            (WebKit::WebProcess::freezeAllLayerTrees):
            (WebKit::WebProcess::unfreezeAllLayerTrees):

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241963. rdar://problem/48350367

    Regression(PSON) Unable to preview password-protected documents on iCloud.com
    https://bugs.webkit.org/show_bug.cgi?id=194954
    <rdar://problem/48127957>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    Make sure the ProvisionalPageProxy forwards to the WebPageProxy the QuickLook-related
    IPC on iOS.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    * UIProcess/ProvisionalPageProxy.h:
    * UIProcess/WebPageProxy.h:
    * UIProcess/ios/WebPageProxyIOS.mm:
    (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
    (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
    (-[PSONNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
    (-[PSONNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241963 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-22  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Unable to preview password-protected documents on iCloud.com
            https://bugs.webkit.org/show_bug.cgi?id=194954
            <rdar://problem/48127957>

            Reviewed by Alex Christensen.

            Make sure the ProvisionalPageProxy forwards to the WebPageProxy the QuickLook-related
            IPC on iOS.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            * UIProcess/ProvisionalPageProxy.h:
            * UIProcess/WebPageProxy.h:
            * UIProcess/ios/WebPageProxyIOS.mm:
            (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
            (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared):

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241950. rdar://problem/48317455

    REGRESSION(PSON) Scroll position is sometimes not restored on history navigation
    https://bugs.webkit.org/show_bug.cgi?id=194924
    <rdar://problem/48216125>
    
    Reviewed by Geoffrey Garen.
    
    Source/WebKit:
    
    When process-swapping, we would create a new WebPage in the new process, which would
    call restoreSessionInternal() to restore the HistoryItems based on the UIProcess's
    backforward list. The issue is that this session restoring would send HistoryItem
    updates back to the UIProcess. Without PSON, this would be unnecessary but harmless.
    With PSON though, this may end up overwriting values set by the previous process,
    such as the scroll position.
    
    Address the issue by temporarily disabling the HistoryItem update notifications to
    the UIProcess while restoring a session.
    
    * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
    (-[WKBackForwardListItem _scrollPosition]):
    * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::restoreSessionInternal):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241950 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-22  Chris Dumez  <cdumez@apple.com>

            REGRESSION(PSON) Scroll position is sometimes not restored on history navigation
            https://bugs.webkit.org/show_bug.cgi?id=194924
            <rdar://problem/48216125>

            Reviewed by Geoffrey Garen.

            When process-swapping, we would create a new WebPage in the new process, which would
            call restoreSessionInternal() to restore the HistoryItems based on the UIProcess's
            backforward list. The issue is that this session restoring would send HistoryItem
            updates back to the UIProcess. Without PSON, this would be unnecessary but harmless.
            With PSON though, this may end up overwriting values set by the previous process,
            such as the scroll position.

            Address the issue by temporarily disabling the HistoryItem update notifications to
            the UIProcess while restoring a session.

            * UIProcess/API/Cocoa/WKBackForwardListItem.mm:
            (-[WKBackForwardListItem _scrollPosition]):
            * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::restoreSessionInternal):

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241928. rdar://problem/48317429

    Discard cached processes when clearing website data store
    https://bugs.webkit.org/show_bug.cgi?id=194894
    
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    Clear the process cache when clearing the website data store so that there is no way to infer
    which site the user had visited by observing for which sites WebContent processes had been cached.
    
    There is one sublty in WebsiteDataStore::removeData that we have to delay the clearing of
    the web process cache until the next run loop because SuspendedPageProxy::~SuspendedPageProxy
    invokes WebProcessProxy::maybeShutDown in the next run loop. We also have to disable the process
    cache during this time as it would otherwise trigger the responsiveness check of WebContent process
    can take arbitrarily long time.
    
    * UIProcess/API/Cocoa/WKProcessPool.mm:
    (-[WKProcessPool _processCacheCapacity]): Added for testing.
    * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
    * UIProcess/WebProcessCache.cpp:
    (WebKit::WebProcessCache::addProcess): Avoid adding web processes to the cache while the suspended
    pages are being cleared.
    * UIProcess/WebProcessCache.h:
    (WebKit::WebProcessCache::disabled const): Added.
    (WebKit::WebProcessCache::setDisabled): Added.
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::handleMemoryPressureWarning):
    (WebKit::WebProcessPool::clearSuspendedPages): Added.
    * UIProcess/WebProcessPool.h:
    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
    (WebKit::WebsiteDataStore::removeData):
    
    Tools:
    
    Added a test case.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (TestWebKitAPI.ProcessSwap.NumberOfCachedProcesses): Added.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241928 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-21  Ryosuke Niwa  <rniwa@webkit.org>

            Discard cached processes when clearing website data store
            https://bugs.webkit.org/show_bug.cgi?id=194894

            Reviewed by Chris Dumez.

            Clear the process cache when clearing the website data store so that there is no way to infer
            which site the user had visited by observing for which sites WebContent processes had been cached.

            There is one sublty in WebsiteDataStore::removeData that we have to delay the clearing of
            the web process cache until the next run loop because SuspendedPageProxy::~SuspendedPageProxy
            invokes WebProcessProxy::maybeShutDown in the next run loop. We also have to disable the process
            cache during this time as it would otherwise trigger the responsiveness check of WebContent process
            can take arbitrarily long time.

            * UIProcess/API/Cocoa/WKProcessPool.mm:
            (-[WKProcessPool _processCacheCapacity]): Added for testing.
            * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
            * UIProcess/WebProcessCache.cpp:
            (WebKit::WebProcessCache::addProcess): Avoid adding web processes to the cache while the suspended
            pages are being cleared.
            * UIProcess/WebProcessCache.h:
            (WebKit::WebProcessCache::disabled const): Added.
            (WebKit::WebProcessCache::setDisabled): Added.
            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::handleMemoryPressureWarning):
            (WebKit::WebProcessPool::clearSuspendedPages): Added.
            * UIProcess/WebProcessPool.h:
            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
            (WebKit::WebsiteDataStore::removeData):

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241899. rdar://problem/48317463

    Crash under RemoteLayerTreePropertyApplier::applyProperties when reattaching to old process
    https://bugs.webkit.org/show_bug.cgi?id=194845
    <rdar://problem/47944579>
    
    Reviewed by Antti Koivisto.
    
    Source/WebKit:
    
    New test: ProcessSwap.PageOverlayLayerPersistence
    
    * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
    (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged):
    Keep track of all properties that have ever changed on a layer, so we
    can re-send them if a layer moves between contexts.
    
    * WebProcess/WebPage/DrawingArea.cpp:
    (WebKit::DrawingArea::~DrawingArea):
    (WebKit::DrawingArea::removeMessageReceiverIfNeeded):
    * WebProcess/WebPage/DrawingArea.h:
    (WebKit::DrawingArea::layerHostDidFlushLayers):
    Make it possible to tear down DrawingArea's MessageReceiver before it is destroyed,
    so that we can keep two DrawingAreas alive in a single process for a short time.
    
    (WebKit::DrawingArea::adoptLayersFromDrawingArea):
    Add adoptLayersFromDrawingArea; see below for its only useful implementation.
    
    * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
    (WebKit::GraphicsLayerCARemote::GraphicsLayerCARemote):
    (WebKit::GraphicsLayerCARemote::~GraphicsLayerCARemote):
    (WebKit::GraphicsLayerCARemote::createPlatformCALayer):
    (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
    (WebKit::GraphicsLayerCARemote::moveToContext):
    * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
    Make it possible to move a GraphicsLayerCARemote between RemoteLayerTreeContexts.
    
    * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
    (WebKit::PlatformCALayerRemote::create):
    (WebKit::PlatformCALayerRemote::createForEmbeddedView):
    (WebKit::PlatformCALayerRemote::~PlatformCALayerRemote):
    (WebKit::PlatformCALayerRemote::moveToContext):
    * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
    * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
    (WebKit::PlatformCALayerRemoteCustom::create):
    (WebKit::PlatformCALayerRemoteCustom::clone const):
    Make it possible to move a PlatformCALayerRemote between RemoteLayerTreeContexts.
    
    * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
    * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
    (WebKit::RemoteLayerTreeContext::~RemoteLayerTreeContext):
    (WebKit::RemoteLayerTreeContext::adoptLayersFromContext):
    (WebKit::RemoteLayerTreeContext::layerDidEnterContext):
    (WebKit::RemoteLayerTreeContext::layerWillLeaveContext):
    (WebKit::RemoteLayerTreeContext::graphicsLayerDidEnterContext):
    (WebKit::RemoteLayerTreeContext::graphicsLayerWillLeaveContext):
    (WebKit::RemoteLayerTreeContext::layerWasCreated): Deleted.
    (WebKit::RemoteLayerTreeContext::layerWillBeDestroyed): Deleted.
    Keep track of all GraphicsLayerCARemote instances in the context, like we
    do for PlatformCALayerRemote, so that we can update their context backpointers if needed.
    
    Also make it possible to move all outstanding layers to a new context.
    
    * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
    * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
    (WebKit::RemoteLayerTreeDrawingArea::adoptLayersFromDrawingArea):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::reinitializeWebPage):
    When doing a DrawingArea swap, transition all layers from the old context
    to the new one. In order to do this, we temporarily keep both DrawingAreas
    alive, but make use of the new mechanism to remove the old one's MessageReceiver
    before installing the new one, so that destroying the old one later doesn't
    remove it (avoiding re-introducing bug 189481).
    
    Tools:
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241899 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-21  Tim Horton  <timothy_horton@apple.com>

            Crash under RemoteLayerTreePropertyApplier::applyProperties when reattaching to old process
            https://bugs.webkit.org/show_bug.cgi?id=194845
            <rdar://problem/47944579>

            Reviewed by Antti Koivisto.

            New test: ProcessSwap.PageOverlayLayerPersistence

            * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
            (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged):
            Keep track of all properties that have ever changed on a layer, so we
            can re-send them if a layer moves between contexts.

            * WebProcess/WebPage/DrawingArea.cpp:
            (WebKit::DrawingArea::~DrawingArea):
            (WebKit::DrawingArea::removeMessageReceiverIfNeeded):
            * WebProcess/WebPage/DrawingArea.h:
            (WebKit::DrawingArea::layerHostDidFlushLayers):
            Make it possible to tear down DrawingArea's MessageReceiver before it is destroyed,
            so that we can keep two DrawingAreas alive in a single process for a short time.

            (WebKit::DrawingArea::adoptLayersFromDrawingArea):
            Add adoptLayersFromDrawingArea; see below for its only useful implementation.

            * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
            (WebKit::GraphicsLayerCARemote::GraphicsLayerCARemote):
            (WebKit::GraphicsLayerCARemote::~GraphicsLayerCARemote):
            (WebKit::GraphicsLayerCARemote::createPlatformCALayer):
            (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
            (WebKit::GraphicsLayerCARemote::moveToContext):
            * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
            Make it possible to move a GraphicsLayerCARemote between RemoteLayerTreeContexts.

            * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
            (WebKit::PlatformCALayerRemote::create):
            (WebKit::PlatformCALayerRemote::createForEmbeddedView):
            (WebKit::PlatformCALayerRemote::~PlatformCALayerRemote):
            (WebKit::PlatformCALayerRemote::moveToContext):
            * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
            * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
            (WebKit::PlatformCALayerRemoteCustom::create):
            (WebKit::PlatformCALayerRemoteCustom::clone const):
            Make it possible to move a PlatformCALayerRemote between RemoteLayerTreeContexts.

            * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
            * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
            (WebKit::RemoteLayerTreeContext::~RemoteLayerTreeContext):
            (WebKit::RemoteLayerTreeContext::adoptLayersFromContext):
            (WebKit::RemoteLayerTreeContext::layerDidEnterContext):
            (WebKit::RemoteLayerTreeContext::layerWillLeaveContext):
            (WebKit::RemoteLayerTreeContext::graphicsLayerDidEnterContext):
            (WebKit::RemoteLayerTreeContext::graphicsLayerWillLeaveContext):
            (WebKit::RemoteLayerTreeContext::layerWasCreated): Deleted.
            (WebKit::RemoteLayerTreeContext::layerWillBeDestroyed): Deleted.
            Keep track of all GraphicsLayerCARemote instances in the context, like we
            do for PlatformCALayerRemote, so that we can update their context backpointers if needed.

            Also make it possible to move all outstanding layers to a new context.

            * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
            * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
            (WebKit::RemoteLayerTreeDrawingArea::adoptLayersFromDrawingArea):
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::reinitializeWebPage):
            When doing a DrawingArea swap, transition all layers from the old context
            to the new one. In order to do this, we temporarily keep both DrawingAreas
            alive, but make use of the new mechanism to remove the old one's MessageReceiver
            before installing the new one, so that destroying the old one later doesn't
            remove it (avoiding re-introducing bug 189481).

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241128. rdar://problem/48317438

    [macOS] API test times out after r241026
    https://bugs.webkit.org/show_bug.cgi?id=194372
    
    Reviewed by Alex Christensen.
    
    The API test TestWebKitAPI.RenderingProgress.FirstMeaningfulPaint times out after r241026.
    A new function pointer, layoutMilestones, is added to WKBundlePageLoaderClient, in order
    for clients to decide which milestones they would like to listen for.
    
    * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
    * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
    (layoutMilestones):
    (setUpPageLoaderClient):
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
    (WebKit::InjectedBundlePageLoaderClient::layoutMilestones const):
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241128 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-07  Per Arne Vollan  <pvollan@apple.com>

            [macOS] API test times out after r241026
            https://bugs.webkit.org/show_bug.cgi?id=194372

            Reviewed by Alex Christensen.

            The API test TestWebKitAPI.RenderingProgress.FirstMeaningfulPaint times out after r241026.
            A new function pointer, layoutMilestones, is added to WKBundlePageLoaderClient, in order
            for clients to decide which milestones they would like to listen for.

            * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
            * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
            (layoutMilestones):
            (setUpPageLoaderClient):
            * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
            (WebKit::InjectedBundlePageLoaderClient::layoutMilestones const):
            * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:

2019-02-24  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/48317433

    2019-02-24  Chris Dumez  <cdumez@apple.com>

            REGRESSION(PSON): Google login page refreshes repeatedly in Reeder 3 app
            <rdar://problem/47471222>

            Reviewed by Alex Christensen.

            When we process swap, we first call removeWebPage() on the previous process and then
            call addExistingWebPage() on the new one. removeWebPage() would call
            WebProcessPool::pageEndUsingWebsiteDataStore() and then addExistingWebPage() would
            call WebProcessPool::pageBeginUsingWebsiteDataStore(). This was leading to loosing
            session cookies because the call to WebProcessPool::pageEndUsingWebsiteDataStore()
            would send an IPC to the Network process to destroy the session. The later call to
            pageBeginUsingWebsiteDataStore() would re-construct the session but it would be too
            late, previous cookies would be gone.

            To address the issue, r238828 updated removeWebPage() / addExistingWebPage() so that
            they no longer call pageBeginUsingWebsiteDataStore() / pageEndUsingWebsiteDataStore()
            in case of a process swap. This partly fixed the issue. However, I failed to notice
            that pageBeginUsingWebsiteDataStore() / pageEndUsingWebsiteDataStore() also send IPC
            to the WebProcess to construct / destroy the session. We still want this IPC to
            happen in case of a process-swap or the new process will not know about the session.

            To address this issue, I moved the WebProcess IPC sending from
            WebProcessPool::pageEndUsingWebsiteDataStore() / pageEndUsingWebsiteDataStore() to
            WebProcessProxy::removeWebPage() / addExistingWebPage() so that it happens no matter
            what. It is also clearer for the WebProcessProxy to send the IPC by itself.

            This patch is only needed on the branch since Alex refactored the code in r239737
            so that the WebSiteDataStore-related IPC to the WebProcess is no longer needed on
            trunk.

            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
            (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
            * UIProcess/WebProcessPool.h:
            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::addExistingWebPage):
            (WebKit::WebProcessProxy::removeWebPage):
            (WebKit::WebProcessProxy::hasPageUsingSession const):

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241919. rdar://problem/48267027

    Fix API test crashes after r241855.
    
    Reviewed by Ryosuke Niwa.
    
    * UIProcess/WebProcessCache.cpp:
    (WebKit::WebProcessCache::addProcessIfPossible):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241919 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-21  Chris Dumez  <cdumez@apple.com>

            Fix API test crashes after r241855.

            Reviewed by Ryosuke Niwa.

            * UIProcess/WebProcessCache.cpp:
            (WebKit::WebProcessCache::addProcessIfPossible):

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241868. rdar://problem/48267027

    Unreviewed API test fix after r241855.
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::~WebProcessProxy):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241868 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-21  Chris Dumez  <cdumez@apple.com>

            Unreviewed API test fix after r241855.

            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::~WebProcessProxy):

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241728. rdar://problem/48243264

    Disable safe browsing in WKWebView and remove its WKPreferences API
    https://bugs.webkit.org/show_bug.cgi?id=194723
    <rdar://problem/48122993>
    
    Reviewed by Geoffrey Garen.
    
    Source/WebKit:
    
    * Shared/WebPreferences.yaml:
    * UIProcess/API/Cocoa/WKPreferences.h:
    * UIProcess/API/Cocoa/WKPreferences.mm:
    (-[WKPreferences setSafeBrowsingEnabled:]): Deleted.
    (-[WKPreferences isSafeBrowsingEnabled]): Deleted.
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    * TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
    (TEST):
    (safeBrowsingView):
    Make tests use SPI instead of API.
    
    LayoutTests:
    
    * platform/mac-wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt:
    This test has results that depend on timing, and I need to update its results when I disable safe browsing.
    I've done this several times before.  See r237876 for an example.
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241728 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Disable safe browsing in WKWebView and remove its WKPreferences API
            https://bugs.webkit.org/show_bug.cgi?id=194723
            <rdar://problem/48122993>

            Reviewed by Geoffrey Garen.

            * Shared/WebPreferences.yaml:
            * UIProcess/API/Cocoa/WKPreferences.h:
            * UIProcess/API/Cocoa/WKPreferences.mm:
            (-[WKPreferences setSafeBrowsingEnabled:]): Deleted.
            (-[WKPreferences isSafeBrowsingEnabled]): Deleted.

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241618. rdar://problem/48243264

    Add SPI version of WKPreferences.safeBrowsingEnabled
    https://bugs.webkit.org/show_bug.cgi?id=194718
    <rdar://problem/48122993>
    
    Rubber-stamped by Brady Eidson.
    
    * UIProcess/API/Cocoa/WKPreferences.mm:
    (-[WKPreferences _isSafeBrowsingEnabled]):
    (-[WKPreferences _setSafeBrowsingEnabled:]):
    * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241618 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-15  Alex Christensen  <achristensen@webkit.org>

            Add SPI version of WKPreferences.safeBrowsingEnabled
            https://bugs.webkit.org/show_bug.cgi?id=194718
            <rdar://problem/48122993>

            Rubber-stamped by Brady Eidson.

            * UIProcess/API/Cocoa/WKPreferences.mm:
            (-[WKPreferences _isSafeBrowsingEnabled]):
            (-[WKPreferences _setSafeBrowsingEnabled:]):
            * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241855. rdar://problem/48267027

    [PSON] Make sure hung processes are not kept alive by suspended pages or process caching
    https://bugs.webkit.org/show_bug.cgi?id=194881
    <rdar://problem/48249014>
    
    Reviewed by Geoffrey Garen.
    
    After we construct a SuspendedPageProxy and before we send the IPC to the WebProcess to
    ask it to suspend, start a 10 seconds timer. If the process does not answer the request
    to suspend before the timer fires, we destroy the SuspendedPageProxy so that we do not
    keep a hung process around.
    
    For the WebProcessCache, we now call WebProcessProxy::isResponsive() on the process
    before adding it to the cache. Internally, this relies on an IPC handshake with the
    WebProcess. If the process is not responsive, we do not add it to the cache and we
    shut it down. If it is responsive then we proceed normally with adding it to the
    cache.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
    (WebKit::SuspendedPageProxy::suspensionTimedOut):
    * UIProcess/SuspendedPageProxy.h:
    * UIProcess/WebProcessCache.cpp:
    (WebKit::WebProcessCache::addProcessIfPossible):
    (WebKit::WebProcessCache::addProcess):
    * UIProcess/WebProcessCache.h:
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
    (WebKit::WebProcessProxy::maybeShutDown):
    (WebKit::WebProcessProxy::isResponsive):
    * UIProcess/WebProcessProxy.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241855 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-20  Chris Dumez  <cdumez@apple.com>

            [PSON] Make sure hung processes are not kept alive by suspended pages or process caching
            https://bugs.webkit.org/show_bug.cgi?id=194881
            <rdar://problem/48249014>

            Reviewed by Geoffrey Garen.

            After we construct a SuspendedPageProxy and before we send the IPC to the WebProcess to
            ask it to suspend, start a 10 seconds timer. If the process does not answer the request
            to suspend before the timer fires, we destroy the SuspendedPageProxy so that we do not
            keep a hung process around.

            For the WebProcessCache, we now call WebProcessProxy::isResponsive() on the process
            before adding it to the cache. Internally, this relies on an IPC handshake with the
            WebProcess. If the process is not responsive, we do not add it to the cache and we
            shut it down. If it is responsive then we proceed normally with adding it to the
            cache.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
            (WebKit::SuspendedPageProxy::suspensionTimedOut):
            * UIProcess/SuspendedPageProxy.h:
            * UIProcess/WebProcessCache.cpp:
            (WebKit::WebProcessCache::addProcessIfPossible):
            (WebKit::WebProcessCache::addProcess):
            * UIProcess/WebProcessCache.h:
            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
            (WebKit::WebProcessProxy::maybeShutDown):
            (WebKit::WebProcessProxy::isResponsive):
            * UIProcess/WebProcessProxy.h:

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241845. rdar://problem/48267029

    Regression(PSON) "Reload without content extensions" does not work when the main resource is blocked
    https://bugs.webkit.org/show_bug.cgi?id=194872
    <rdar://problem/47924500>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    [WKWebView _reloadWithoutContentBlockers] relies on a ReloadOption flag that is passed to WebCore
    instead of using WebsitePolicies.contentBlockersEnabled flag. If the reload causes a process swap
    due to PSON, then the new process does not know about this ReloadOption and fails to honor it.
    
    Since the modern way to do this is WebsitePolicies, and since WebsitePolicies are properly
    propagated cross-process in case of process swap, this patch updates _reloadWithoutContentBlockers
    to set a flag on the Navigation which we use to later set the WebsitePolicies.contentBlockersEnabled
    flag in WebPageProxy::receivedNavigationPolicyDecision().
    
    * UIProcess/API/APINavigation.h:
    (API::Navigation::setUserContentExtensionsEnabled):
    (API::Navigation::userContentExtensionsEnabled const):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::reload):
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241845 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-20  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) "Reload without content extensions" does not work when the main resource is blocked
            https://bugs.webkit.org/show_bug.cgi?id=194872
            <rdar://problem/47924500>

            Reviewed by Alex Christensen.

            [WKWebView _reloadWithoutContentBlockers] relies on a ReloadOption flag that is passed to WebCore
            instead of using WebsitePolicies.contentBlockersEnabled flag. If the reload causes a process swap
            due to PSON, then the new process does not know about this ReloadOption and fails to honor it.

            Since the modern way to do this is WebsitePolicies, and since WebsitePolicies are properly
            propagated cross-process in case of process swap, this patch updates _reloadWithoutContentBlockers
            to set a flag on the Navigation which we use to later set the WebsitePolicies.contentBlockersEnabled
            flag in WebPageProxy::receivedNavigationPolicyDecision().

            * UIProcess/API/APINavigation.h:
            (API::Navigation::setUserContentExtensionsEnabled):
            (API::Navigation::userContentExtensionsEnabled const):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::reload):
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241853. rdar://problem/48248223

    Unreviewed build fix after r241823.
    
    * UIProcess/SuspendedPageProxy.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-20  Chris Dumez  <cdumez@apple.com>

            Unreviewed build fix after r241823.

            * UIProcess/SuspendedPageProxy.h:

2019-02-21  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241823. rdar://problem/48248223

    Regression(PSON) Crash under WebKit::WebPageProxy::decidePolicyForNavigationActionSync
    https://bugs.webkit.org/show_bug.cgi?id=194857
    <rdar://problem/47759323>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    The ProvisionalPageProxy was blindly forwarding the DecidePolicyForNavigationActionSync
    synchronous IPC to the WebPageProxy, without passing it the process the IPC came from.
    As a result, WebPageProxy::decidePolicyForNavigationActionSync() would try to look up
    a WebFrameProxy using the provided frameID from the wrong process and we would end up
    hitting a RELEASE_ASSERT().
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
    * UIProcess/ProvisionalPageProxy.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared):
    * UIProcess/WebPageProxy.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241823 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-20  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Crash under WebKit::WebPageProxy::decidePolicyForNavigationActionSync
            https://bugs.webkit.org/show_bug.cgi?id=194857
            <rdar://problem/47759323>

            Reviewed by Alex Christensen.

            The ProvisionalPageProxy was blindly forwarding the DecidePolicyForNavigationActionSync
            synchronous IPC to the WebPageProxy, without passing it the process the IPC came from.
            As a result, WebPageProxy::decidePolicyForNavigationActionSync() would try to look up
            a WebFrameProxy using the provided frameID from the wrong process and we would end up
            hitting a RELEASE_ASSERT().

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
            * UIProcess/ProvisionalPageProxy.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared):
            * UIProcess/WebPageProxy.h:

2019-02-21  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/48243214

    REGRESSION (PSON): Can't access optumbank.com from myuhc.com https://bugs.webkit.org/show_bug.cgi?id=194797 <rdar://problem/48055151>
    
    Reviewed by Geoffrey Garen.
    
    Source/WebKit:
    
    The issue was caused by us mistakenly process-swapping for a same-site server side redirect.
    The reason we were getting it wrong is because the logic in
    WebProcessPool::processForNavigationInternal() was expecting page.process() to be the source
    process and page.pageLoadState().url() to be the source URL. Those assumptions are incorrect
    when a server-side redirect occurs in a provisional process. In such case, the source process
    is the ProvisionalPageProxy's process and the source URL is the provisional URL, not the
    committed one.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::didPerformServerRedirect):
    (WebKit::ProvisionalPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    * UIProcess/ProvisionalPageProxy.h:
    Make sure the provisional page forwards IPC related to server-side redirects to the page so
    that the client gets informed.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    (WebKit::WebPageProxy::didPerformServerRedirect):
    (WebKit::WebPageProxy::didPerformServerRedirectShared):
    * UIProcess/WebPageProxy.h:
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::processForNavigation):
    (WebKit::WebProcessPool::processForNavigationInternal):
    * UIProcess/WebProcessPool.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@241752 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    (cherry picked from commit 53ac6d765e577c36c5c5e02659ee3ca21f25599f)

    2019-02-18  Chris Dumez  <cdumez@apple.com>

            REGRESSION (PSON): Can't access optumbank.com from myuhc.com
            https://bugs.webkit.org/show_bug.cgi?id=194797
            <rdar://problem/48055151>

            Reviewed by Geoffrey Garen.

            The issue was caused by us mistakenly process-swapping for a same-site server side redirect.
            The reason we were getting it wrong is because the logic in
            WebProcessPool::processForNavigationInternal() was expecting page.process() to be the source
            process and page.pageLoadState().url() to be the source URL. Those assumptions are incorrect
            when a server-side redirect occurs in a provisional process. In such case, the source process
            is the ProvisionalPageProxy's process and the source URL is the provisional URL, not the
            committed one.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::didPerformServerRedirect):
            (WebKit::ProvisionalPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            * UIProcess/ProvisionalPageProxy.h:
            Make sure the provisional page forwards IPC related to server-side redirects to the page so
            that the client gets informed.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            (WebKit::WebPageProxy::didPerformServerRedirect):
            (WebKit::WebPageProxy::didPerformServerRedirectShared):
            * UIProcess/WebPageProxy.h:
            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::processForNavigation):
            (WebKit::WebProcessPool::processForNavigationInternal):
            * UIProcess/WebProcessPool.h:

2019-02-20  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241777. rdar://problem/48248215

    Remove assertion introduced in r229683
    https://bugs.webkit.org/show_bug.cgi?id=194825
    <rdar://problem/47628258>
    
    Reviewed by Geoffrey Garen.
    
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
    If we reach this code and the form's original Document's Frame has been destroyed,
    we have already been told to submit the form so do so, just like we do if the WebPage
    has been destroyed.  This is a rare edge case having to do with the timing of Frame
    destruction and decidePolicyForNavigationAction response, which unfortunately does not
    reproduce with a test case unless the timing of IPC is just right.
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241777 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-19  Alex Christensen  <achristensen@webkit.org>

            Remove assertion introduced in r229683
            https://bugs.webkit.org/show_bug.cgi?id=194825
            <rdar://problem/47628258>

            Reviewed by Geoffrey Garen.

            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
            If we reach this code and the form's original Document's Frame has been destroyed,
            we have already been told to submit the form so do so, just like we do if the WebPage
            has been destroyed.  This is a rare edge case having to do with the timing of Frame
            destruction and decidePolicyForNavigationAction response, which unfortunately does not
            reproduce with a test case unless the timing of IPC is just right.

2019-02-20  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241721. rdar://problem/48243376

    AX: PSON: Going back from apple.com to search results, cannot interact with HTML content. Disabling Swap Processes on Cross-Site Navigation resolves the issue.
    https://bugs.webkit.org/show_bug.cgi?id=194742
    
    Reviewed by Chris Dumez.
    
    Source/WebCore:
    
    With the new process model, WebProcess hits a case where it tries to send the "page loaded" notification before VoiceOver
    had a chance to register for any notifications. This leads to those notifications being dropped (and thus this bug).
    
    This change instead asks the UIProcess to send the notification, which we know VoiceOver has registered for, and can reliably
    receive notifications.
    
    It also sends the notification for "load failures," which to the VO users' perspective amounts to the same thing as a successful
    page load.
    
    * accessibility/mac/AXObjectCacheMac.mm:
    (WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
    
    Source/WebKit:
    
    Re-initialize the accessibility web process tokens when swapping processes.
    Send page load notifications from the UIProcess instead of the WebProcess to improve reliability.
    
    * UIProcess/mac/PageClientImplMac.mm:
    (WebKit::PageClientImpl::didFinishLoadForMainFrame):
    (WebKit::PageClientImpl::didFailLoadForMainFrame):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::reinitializeWebPage):
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebPage/gtk/WebPageGtk.cpp:
    (WebKit::WebPage::platformReinitialize):
    (WebKit::WebPage::platformDetach): Deleted.
    (WebKit::WebPage::platformEditorState const): Deleted.
    (WebKit::WebPage::updateAccessibilityTree): Deleted.
    (WebKit::WebPage::performDefaultBehaviorForKeyEvent): Deleted.
    (WebKit::WebPage::platformCanHandleRequest): Deleted.
    (WebKit::WebPage::platformUserAgent const): Deleted.
    (WebKit::WebPage::getCenterForZoomGesture): Deleted.
    (WebKit::WebPage::setInputMethodState): Deleted.
    (WebKit::WebPage::collapseSelectionInFrame): Deleted.
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::platformReinitialize):
    * WebProcess/WebPage/mac/WebPageMac.mm:
    (WebKit::WebPage::platformReinitialize):
    * WebProcess/WebPage/win/WebPageWin.cpp:
    (WebKit::WebPage::platformReinitialize):
    * WebProcess/WebPage/wpe/WebPageWPE.cpp:
    (WebKit::WebPage::platformReinitialize):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241721 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-18  Chris Fleizach  <cfleizach@apple.com>

            AX: PSON: Going back from apple.com to search results, cannot interact with HTML content. Disabling Swap Processes on Cross-Site Navigation resolves the issue.
            https://bugs.webkit.org/show_bug.cgi?id=194742

            Reviewed by Chris Dumez.

            Re-initialize the accessibility web process tokens when swapping processes.
            Send page load notifications from the UIProcess instead of the WebProcess to improve reliability.

            * UIProcess/mac/PageClientImplMac.mm:
            (WebKit::PageClientImpl::didFinishLoadForMainFrame):
            (WebKit::PageClientImpl::didFailLoadForMainFrame):
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::reinitializeWebPage):
            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebPage/gtk/WebPageGtk.cpp:
            (WebKit::WebPage::platformReinitialize):
            (WebKit::WebPage::platformDetach): Deleted.
            (WebKit::WebPage::platformEditorState const): Deleted.
            (WebKit::WebPage::updateAccessibilityTree): Deleted.
            (WebKit::WebPage::performDefaultBehaviorForKeyEvent): Deleted.
            (WebKit::WebPage::platformCanHandleRequest): Deleted.
            (WebKit::WebPage::platformUserAgent const): Deleted.
            (WebKit::WebPage::getCenterForZoomGesture): Deleted.
            (WebKit::WebPage::setInputMethodState): Deleted.
            (WebKit::WebPage::collapseSelectionInFrame): Deleted.
            * WebProcess/WebPage/ios/WebPageIOS.mm:
            (WebKit::WebPage::platformReinitialize):
            * WebProcess/WebPage/mac/WebPageMac.mm:
            (WebKit::WebPage::platformReinitialize):
            * WebProcess/WebPage/win/WebPageWin.cpp:
            (WebKit::WebPage::platformReinitialize):
            * WebProcess/WebPage/wpe/WebPageWPE.cpp:
            (WebKit::WebPage::platformReinitialize):

2019-02-20  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241658. rdar://problem/48243434

    https://device.login.microsoftonline.com is hanging on STP75
    https://bugs.webkit.org/show_bug.cgi?id=194734
    <rdar://problem/47573830>
    
    Reviewed by Jiewen Tan.
    
    Make sure to only go the XPC route if SecKeyProxyStore has credentials.
    Tested manually by going to the above website with and without the patch.
    Load hangs without the patch and completes with the patch.
    
    * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
    (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
    * UIProcess/Authentication/cocoa/SecKeyProxyStore.h:
    * UIProcess/Authentication/cocoa/SecKeyProxyStore.mm:
    (WebKit::SecKeyProxyStore::initialize):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241658 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-17  Youenn Fablet  <youenn@apple.com>

            https://device.login.microsoftonline.com is hanging on STP75
            https://bugs.webkit.org/show_bug.cgi?id=194734
            <rdar://problem/47573830>

            Reviewed by Jiewen Tan.

            Make sure to only go the XPC route if SecKeyProxyStore has credentials.
            Tested manually by going to the above website with and without the patch.
            Load hangs without the patch and completes with the patch.

            * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
            (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
            * UIProcess/Authentication/cocoa/SecKeyProxyStore.h:
            * UIProcess/Authentication/cocoa/SecKeyProxyStore.mm:
            (WebKit::SecKeyProxyStore::initialize):

2019-02-20  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241606. rdar://problem/48243273

    Regression(PSON) Navigating quickly back and forth can lead to getting 'about:blank' in the backforward list
    https://bugs.webkit.org/show_bug.cgi?id=194717
    <rdar://problem/47884404>
    
    Reviewed by Brady Eidson.
    
    Source/WebKit:
    
    When the client does a history navigation, the UIProcess sends a WebPage::GoToBackForwardItem IPC to the
    WebProcess and the WebProcess sends a WebPageProxy::BackForwardGoToItem IPC back to the UIProcess to
    update the current item in the BackForwardList. This means that there is a slight delay between the
    point a client requests a history navigation and the point where the BackForwardList's current item gets
    update. This delay is pre-existing behavior and not new to PSON.
    
    However, with PSON enabled, if we decide to process-swap for the history navigation, we'll tell the
    previous (committed) process to ignore the load and we ask a new (provisional) process to do the history
    navigation. When the previous process receives the request to ignore the history navigation, it restores
    the History's current item to the one previous the navigation, which sends a WebPageProxy::GoToBackForwardItem
    IPC to the UIProcess to update the BackForwardList as well. In parallel, the new process starts the
    history navigation and also sends a WebPageProxy::GoToBackForwardItem to update the BackForwardList's
    current item as well. We end up with a race between the 2 GoToBackForwardItem IPC messages coming from
    the old and new process. If the old process's message loses the race, we end up with the wrong current
    history item getting set in the UIProcess. Later, when we commit the provisional load and try to suspend
    the previous page, we would save the SuspendedPage on the *wrong* BackForwardList item. If one tries to
    load this BackForwardList item later, we'll use its SuspendedPage and try to unsuspend it. However,
    because the PageCache entry is saved on another HistoryItem than the one getting loaded in the WebProcess
    side, we attempt to do a regular load instead of a PageCache restore. We end up failing the load because
    pages cannot trigger new loads while in page cache. Because the load fails, we end up loading the
    initial empty document and this is how we end up with 'about:blank' in the back forward list.
    
    To address the issue, update WebPageProxy::backForwardGoToItem() to ignore messages from the old/committed
    WebProcess when there is a pending provisional load. If the committed processes starts a legit new
    load, it would clear any existing pending provisional load before attempting the call backForwardGoToItem().
    As a result, ignoring such messages from the old processes when there is a pending provisional load is
    safe.
    
    In the future, we should probably move more of the history / backForwardList management to the UIProcess
    to avoid this sort of issues. This would be a much larger refactoring though so I am going with this
    simpler fix that is easily cherry-pickable for now.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
    (WebKit::WebPageProxy::continueNavigationInNewProcess):
    (WebKit::WebPageProxy::backForwardGoToItem):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-15  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Navigating quickly back and forth can lead to getting 'about:blank' in the backforward list
            https://bugs.webkit.org/show_bug.cgi?id=194717
            <rdar://problem/47884404>

            Reviewed by Brady Eidson.

            When the client does a history navigation, the UIProcess sends a WebPage::GoToBackForwardItem IPC to the
            WebProcess and the WebProcess sends a WebPageProxy::BackForwardGoToItem IPC back to the UIProcess to
            update the current item in the BackForwardList. This means that there is a slight delay between the
            point a client requests a history navigation and the point where the BackForwardList's current item gets
            update. This delay is pre-existing behavior and not new to PSON.

            However, with PSON enabled, if we decide to process-swap for the history navigation, we'll tell the
            previous (committed) process to ignore the load and we ask a new (provisional) process to do the history
            navigation. When the previous process receives the request to ignore the history navigation, it restores
            the History's current item to the one previous the navigation, which sends a WebPageProxy::GoToBackForwardItem
            IPC to the UIProcess to update the BackForwardList as well. In parallel, the new process starts the
            history navigation and also sends a WebPageProxy::GoToBackForwardItem to update the BackForwardList's
            current item as well. We end up with a race between the 2 GoToBackForwardItem IPC messages coming from
            the old and new process. If the old process's message loses the race, we end up with the wrong current
            history item getting set in the UIProcess. Later, when we commit the provisional load and try to suspend
            the previous page, we would save the SuspendedPage on the *wrong* BackForwardList item. If one tries to
            load this BackForwardList item later, we'll use its SuspendedPage and try to unsuspend it. However,
            because the PageCache entry is saved on another HistoryItem than the one getting loaded in the WebProcess
            side, we attempt to do a regular load instead of a PageCache restore. We end up failing the load because
            pages cannot trigger new loads while in page cache. Because the load fails, we end up loading the
            initial empty document and this is how we end up with 'about:blank' in the back forward list.

            To address the issue, update WebPageProxy::backForwardGoToItem() to ignore messages from the old/committed
            WebProcess when there is a pending provisional load. If the committed processes starts a legit new
            load, it would clear any existing pending provisional load before attempting the call backForwardGoToItem().
            As a result, ignoring such messages from the old processes when there is a pending provisional load is
            safe.

            In the future, we should probably move more of the history / backForwardList management to the UIProcess
            to avoid this sort of issues. This would be a much larger refactoring though so I am going with this
            simpler fix that is easily cherry-pickable for now.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
            (WebKit::WebPageProxy::continueNavigationInNewProcess):
            (WebKit::WebPageProxy::backForwardGoToItem):

2019-02-20  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241549. rdar://problem/48243406

    AX: ARIA Reflection was disabled in error
    https://bugs.webkit.org/show_bug.cgi?id=194647
    <rdar://problem/48068336>
    
    Reviewed by Ryosuke Niwa.
    
    Source/WebKit:
    
    * Shared/WebPreferences.yaml:
    
    Tools:
    
    Remove test override now that this feature should be enabled by default.
    
    * WebKitTestRunner/TestController.cpp:
    (WTR::TestController::resetPreferencesToConsistentValues):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241549 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-14  Chris Fleizach  <cfleizach@apple.com>

            AX: ARIA Reflection was disabled in error
            https://bugs.webkit.org/show_bug.cgi?id=194647
            <rdar://problem/48068336>

            Reviewed by Ryosuke Niwa.

            * Shared/WebPreferences.yaml:

2019-02-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241635. rdar://problem/48165262

    [PSON] Allow tweaking WebProcess cache parameters via user defaults
    https://bugs.webkit.org/show_bug.cgi?id=194731
    <rdar://problem/48125377>
    
    Reviewed by Geoffrey Garen.
    
    Allow tweaking WebProcess cache parameters via user defaults like so:
    $ defaults write com.apple.Safari WebProcessCacheCachedProcessLifetimeInSeconds 120
    -> Cached processes will be evicted after 2 minutes (instead of 30)
    
    $ defaults write com.apple.Safari WebProcessCacheClearingDelayAfterApplicationResignsActiveInSeconds 60
    -> Web process cache will be cleared if Safari is no longer active for 1 minutes (instead of 5).
    
    * SourcesCocoa.txt:
    * UIProcess/Cocoa/WebProcessCacheCocoa.mm: Copied from Source/WebKit/UIProcess/WebProcessCache.h.
    (WebKit::WebProcessCache::platformInitialize):
    * UIProcess/WebProcessCache.cpp:
    (WebKit::WebProcessCache::WebProcessCache):
    (WebKit::WebProcessCache::platformInitialize):
    * UIProcess/WebProcessCache.h:
    * WebKit.xcodeproj/project.pbxproj:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241635 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-15  Chris Dumez  <cdumez@apple.com>

            [PSON] Allow tweaking WebProcess cache parameters via user defaults
            https://bugs.webkit.org/show_bug.cgi?id=194731
            <rdar://problem/48125377>

            Reviewed by Geoffrey Garen.

            Allow tweaking WebProcess cache parameters via user defaults like so:
            $ defaults write com.apple.Safari WebProcessCacheCachedProcessLifetimeInSeconds 120
            -> Cached processes will be evicted after 2 minutes (instead of 30)

            $ defaults write com.apple.Safari WebProcessCacheClearingDelayAfterApplicationResignsActiveInSeconds 60
            -> Web process cache will be cleared if Safari is no longer active for 1 minutes (instead of 5).

            * SourcesCocoa.txt:
            * UIProcess/Cocoa/WebProcessCacheCocoa.mm: Copied from Source/WebKit/UIProcess/WebProcessCache.h.
            (WebKit::WebProcessCache::platformInitialize):
            * UIProcess/WebProcessCache.cpp:
            (WebKit::WebProcessCache::WebProcessCache):
            (WebKit::WebProcessCache::platformInitialize):
            * UIProcess/WebProcessCache.h:
            * WebKit.xcodeproj/project.pbxproj:

2019-02-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241631. rdar://problem/48165260

    [PSON] Disable WebContent process cache on devices with less than 3GB of RAM
    https://bugs.webkit.org/show_bug.cgi?id=194726
    <rdar://problem/48126255>
    
    Reviewed by Geoffrey Garen.
    
    * UIProcess/WebProcessCache.cpp:
    (WebKit::WebProcessCache::updateCapacity):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241631 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-15  Chris Dumez  <cdumez@apple.com>

            [PSON] Disable WebContent process cache on devices with less than 3GB of RAM
            https://bugs.webkit.org/show_bug.cgi?id=194726
            <rdar://problem/48126255>

            Reviewed by Geoffrey Garen.

            * UIProcess/WebProcessCache.cpp:
            (WebKit::WebProcessCache::updateCapacity):

2019-02-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241584. rdar://problem/48122553

    Unreviewed. Fix GTK+ build after r241556
    
    I guess this is due to unified builds after a new file being added in r241556.
    
    Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-02-15
    
    * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
    * UIProcess/API/C/WKPage.cpp:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241584 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-15  Carlos Garcia Campos  <cgarcia@igalia.com>

            Unreviewed. Fix GTK+ build after r241556

            I guess this is due to unified builds after a new file being added in r241556.

            * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
            * UIProcess/API/C/WKPage.cpp:

2019-02-18  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/48122553

    Introduce a WebContent Process cache https://bugs.webkit.org/show_bug.cgi?id=194594 <rdar://problem/46793397>
    
    Reviewed by Geoff Garen.
    
    Source/WebCore:
    
    Update localizable strings.
    
    * en.lproj/Localizable.strings:
    
    Source/WebKit:
    
    Introduce a WebContent Process cache to reduce the number of process launches when
    process swap on navigation is enabled, and to reduce the power cost of the feature.
    
    If a WebProcess loaded pages from a single registrable domain then it is eligible
    for the cache. When process-swapping on navigation to a new registrable domain, we
    now attempt to retrieve a process from the cache for the domain in question instead
    of always launching a new one.
    
    The WebProcess cache currently has the following attributes:
    - It may contains 4 processes per GB of RAM the machine has, up to 30 processes.
    - WebProcesses automatically get evicted from the cache after 30 minutes.
    - If the application is no longer the active app, then the cache will get cleared
      after 5 minutes.
    - WebProcesses that are in the cache are reported as "(Cached)" in Activity Monitor.
    
    The WebProcess cache is currently disabled by default and can by enabled by the
    client via SPI.
    
    * Shared/WebBackForwardListItem.cpp:
    (WebKit::WebBackForwardListItem::WebBackForwardListItem):
    * Shared/WebBackForwardListItem.h:
    (WebKit::WebBackForwardListItem::lastProcessIdentifier const):
    (WebKit::WebBackForwardListItem::setLastProcessIdentifier):
    Add new lastProcessIdentifier data member that reflects which process this item
    was last loaded in. It is normally identical to the identifier of the process
    that created the item but it gets overriden in case of cross-site client-side
    redirect, since a new process takes over the item in this case.
    
    * Sources.txt:
    Add new source file.
    
    * UIProcess/API/APIProcessPoolConfiguration.cpp:
    (API::ProcessPoolConfiguration::copy):
    * UIProcess/API/APIProcessPoolConfiguration.h:
    * UIProcess/API/C/WKContextConfigurationRef.cpp:
    (WKContextConfigurationUsesWebProcessCache):
    (WKContextConfigurationSetUsesWebProcessCache):
    * UIProcess/API/C/WKContextConfigurationRef.h:
    * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
    * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
    (-[_WKProcessPoolConfiguration setUsesWebProcessCache:]):
    (-[_WKProcessPoolConfiguration usesWebProcessCache]):
    Add new SPI to enable the WebProcess cache.
    
    * UIProcess/API/Cocoa/WKProcessPool.mm:
    (-[WKProcessPool _webProcessCountIgnoringPrewarmedAndCached]):
    * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
    Add new SPI for testing which returns the number of WebProcesses ignoring
    both prewarmed and cached ones.
    
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::registerNotificationObservers):
    (WebKit::WebProcessPool::unregisterNotificationObservers):
    Add application active state observers as the WebProcess cache gets cleared
    when the application resigns active state for more than 5 minutes.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::loadRequest):
    When doing a load in a new process with the BackForwardList locked (i.e. client-side
    redirect), make sure we update the last process identifier for the BackForwardListItem.
    This is important because the logic in WebProcessPool::processForNavigation() relies on
    this identifier to select which process to do the history navigation into, and we want
    to do the load in the post-redirect process, not the pre-redirect one.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    Tell the WebProcess whenever a main frame provisional load is started, providing the URL.
    
    * UIProcess/WebProcessCache.cpp: Added.
    (WebKit::WebProcessCache::WebProcessCache):
    (WebKit::WebProcessCache::addProcess):
    (WebKit::WebProcessCache::takeProcess):
    (WebKit::WebProcessCache::updateMaximumSize):
    (WebKit::WebProcessCache::clear):
    (WebKit::WebProcessCache::setApplicationIsActive):
    (WebKit::WebProcessCache::evictProcess):
    (WebKit::WebProcessCache::CachedProcess::CachedProcess):
    (WebKit::WebProcessCache::CachedProcess::~CachedProcess):
    (WebKit::WebProcessCache::CachedProcess::takeProcess):
    (WebKit::WebProcessCache::CachedProcess::evictionTimerFired):
    * UIProcess/WebProcessCache.h: Added.
    (WebKit::WebProcessCache::maximumSize):
    (WebKit::WebProcessCache::size const):
    (WebKit::WebProcessCache::CachedProcess::process):
    Add process cache implementation.
    
    * UIProcess/WebProcessPool.cpp:
    (WebKit::m_webProcessCache):
    WebProcessCache is stored on the WebProcessPool via m_webProcessCache data member.
    
    (WebKit::WebProcessPool::~WebProcessPool):
    Clear the WebProcess cache in the destructor.
    
    (WebKit::WebProcessPool::setApplicationIsActive):
    Notify the WebProcessCache whenever the application's active state changes.
    
    (WebKit::WebProcessPool::createWebPage):
    If the state of PSON changes via the experimental features menu, dynamically
    update the WebProcessCache's size. This is needed because the cache is disabled
    when PSON is disabled.
    
    (WebKit::WebProcessPool::handleMemoryPressureWarning):
    Clear the WebProcess cache on memory pressure.
    
    (WebKit::WebProcessPool::processForNavigationInternal):
    Query the WebProcessCache before attempting to create a new WebProcess for a cross-site
    navigation.
    
    (WebKit::WebProcessPool::findReusableSuspendedPageProcess):
    This logic was split out of processForNavigationInternal() to reduce the size
    of the method.
    
    * UIProcess/WebProcessPool.h:
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::setIsInProcessCache):
    Update the isInProcessCache flag on the WebProcessProxy and send an IPC to the WebContent
    process so that it can update its name in Activity Monitor.
    We also need to stop holding a strong reference to the WebProcessPool whenever the process
    is in the cache, similarly to what we do for pre-warmed processes, given that such processes
    should not keep the process pool alive.
    
    (WebKit::WebProcessProxy::addExistingWebPage):
    Assert that we never try to add a page to a cached process, it should be taken out of the
    cache before use.
    
    (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
    (WebKit::WebProcessProxy::isAllowedToUpdateBackForwardItem const):
    (WebKit::WebProcessProxy::updateBackForwardItem):
    In case of client-side redirects, the previous process would sometimes send an IPC causing
    the UIProcess' backforward list item to get updated with the pre-redirect URL after we've
    already redirected. This previously would be unlikely to occur because we do not suspend
    client-redirect pages and their process would normally exit before getting a chance to send
    the IPC. However, with the process cache, the bug became obvious as the process would stay
    alive and send up the "bad" IPC. To address the issue, we now only let the IPC update the
    item if the item's page is (still) associated with the process. In the future, we may want
    to update the IPC so that it gets sent to the WebPageProxy instead of the WebProcessProxy.
    
    (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
    If a cached WebProcess crashes, remove it from the cache so that we do not attempt to use
    it for a load later.
    
    (WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
    Only cache WebProcesses that have loaded a single registrable domain. Also prevent caching
    for service worker and inspector processes.
    
    (WebKit::WebProcessProxy::maybeShutDown):
    If the process is cacheable, add it to the cache instead of shutting it down right away.
    
    (WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
    Make sure we do not attempt to terminate a processes that is in the cache.
    
    (WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
    Whenever a main frame provisional load starts, make sure we update the process's associated
    registrable domain. nullopt indicates that there is no associated domain yet. Null string
    indicates that the process is associated with several registrable domain and is therefore
    not eligible for caching.
    
    * UIProcess/WebProcessProxy.h:
    (WebKit::WebProcessProxy::registrableDomain const):
    (WebKit::WebProcessProxy::isInProcessCache const):
    (WebKit::WebProcessProxy::provisionalPageCount const):
    Add convenience getters.
    
    * WebKit.xcodeproj/project.pbxproj:
    Add new files to project.
    
    * WebProcess/WebProcess.cpp:
    (WebKit::WebProcess::setIsInProcessCache):
    * WebProcess/WebProcess.h:
    * WebProcess/WebProcess.messages.in:
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::updateProcessName):
    Update the WebProcess' name in Activity Monitor whenever it goes into or out of the WebProcess
    cache.
    
    Tools:
    
    Update API tests to turn on the WebContent Process cache.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@241556 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    (cherry picked from commit dc197d35fd5d947ff4c81c2e0f5636b9cad36b3c)

    2019-02-14  Chris Dumez  <cdumez@apple.com>

            [PSON] Introduce a WebContent Process cache
            https://bugs.webkit.org/show_bug.cgi?id=194594
            <rdar://problem/46793397>

            Reviewed by Geoff Garen.

            Introduce a WebContent Process cache to reduce the number of process launches when
            process swap on navigation is enabled, and to reduce the power cost of the feature.

            If a WebProcess loaded pages from a single registrable domain then it is eligible
            for the cache. When process-swapping on navigation to a new registrable domain, we
            now attempt to retrieve a process from the cache for the domain in question instead
            of always launching a new one.

            The WebProcess cache currently has the following attributes:
            - It may contains 4 processes per GB of RAM the machine has, up to 30 processes.
            - WebProcesses automatically get evicted from the cache after 30 minutes.
            - If the application is no longer the active app, then the cache will get cleared
              after 5 minutes.
            - WebProcesses that are in the cache are reported as "(Cached)" in Activity Monitor.

            The WebProcess cache is currently disabled by default and can by enabled by the
            client via SPI.

            * Shared/WebBackForwardListItem.cpp:
            (WebKit::WebBackForwardListItem::WebBackForwardListItem):
            * Shared/WebBackForwardListItem.h:
            (WebKit::WebBackForwardListItem::lastProcessIdentifier const):
            (WebKit::WebBackForwardListItem::setLastProcessIdentifier):
            Add new lastProcessIdentifier data member that reflects which process this item
            was last loaded in. It is normally identical to the identifier of the process
            that created the item but it gets overriden in case of cross-site client-side
            redirect, since a new process takes over the item in this case.

            * Sources.txt:
            Add new source file.

            * UIProcess/API/APIProcessPoolConfiguration.cpp:
            (API::ProcessPoolConfiguration::copy):
            * UIProcess/API/APIProcessPoolConfiguration.h:
            * UIProcess/API/C/WKContextConfigurationRef.cpp:
            (WKContextConfigurationUsesWebProcessCache):
            (WKContextConfigurationSetUsesWebProcessCache):
            * UIProcess/API/C/WKContextConfigurationRef.h:
            * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
            * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
            (-[_WKProcessPoolConfiguration setUsesWebProcessCache:]):
            (-[_WKProcessPoolConfiguration usesWebProcessCache]):
            Add new SPI to enable the WebProcess cache.

            * UIProcess/API/Cocoa/WKProcessPool.mm:
            (-[WKProcessPool _webProcessCountIgnoringPrewarmedAndCached]):
            * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
            Add new SPI for testing which returns the number of WebProcesses ignoring
            both prewarmed and cached ones.

            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
            (WebKit::WebProcessPool::registerNotificationObservers):
            (WebKit::WebProcessPool::unregisterNotificationObservers):
            Add application active state observers as the WebProcess cache gets cleared
            when the application resigns active state for more than 5 minutes.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::loadRequest):
            When doing a load in a new process with the BackForwardList locked (i.e. client-side
            redirect), make sure we update the last process identifier for the BackForwardListItem.
            This is important because the logic in WebProcessPool::processForNavigation() relies on
            this identifier to select which process to do the history navigation into, and we want
            to do the load in the post-redirect process, not the pre-redirect one.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
            Tell the WebProcess whenever a main frame provisional load is started, providing the URL.

            * UIProcess/WebProcessCache.cpp: Added.
            (WebKit::WebProcessCache::WebProcessCache):
            (WebKit::WebProcessCache::addProcess):
            (WebKit::WebProcessCache::takeProcess):
            (WebKit::WebProcessCache::updateMaximumSize):
            (WebKit::WebProcessCache::clear):
            (WebKit::WebProcessCache::setApplicationIsActive):
            (WebKit::WebProcessCache::evictProcess):
            (WebKit::WebProcessCache::CachedProcess::CachedProcess):
            (WebKit::WebProcessCache::CachedProcess::~CachedProcess):
            (WebKit::WebProcessCache::CachedProcess::takeProcess):
            (WebKit::WebProcessCache::CachedProcess::evictionTimerFired):
            * UIProcess/WebProcessCache.h: Added.
            (WebKit::WebProcessCache::maximumSize):
            (WebKit::WebProcessCache::size const):
            (WebKit::WebProcessCache::CachedProcess::process):
            Add process cache implementation.

            * UIProcess/WebProcessPool.cpp:
            (WebKit::m_webProcessCache):
            WebProcessCache is stored on the WebProcessPool via m_webProcessCache data member.

            (WebKit::WebProcessPool::~WebProcessPool):
            Clear the WebProcess cache in the destructor.

            (WebKit::WebProcessPool::setApplicationIsActive):
            Notify the WebProcessCache whenever the application's active state changes.

            (WebKit::WebProcessPool::createWebPage):
            If the state of PSON changes via the experimental features menu, dynamically
            update the WebProcessCache's size. This is needed because the cache is disabled
            when PSON is disabled.

            (WebKit::WebProcessPool::handleMemoryPressureWarning):
            Clear the WebProcess cache on memory pressure.

            (WebKit::WebProcessPool::processForNavigationInternal):
            Query the WebProcessCache before attempting to create a new WebProcess for a cross-site
            navigation.

            (WebKit::WebProcessPool::findReusableSuspendedPageProcess):
            This logic was split out of processForNavigationInternal() to reduce the size
            of the method.

            * UIProcess/WebProcessPool.h:
            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::setIsInProcessCache):
            Update the isInProcessCache flag on the WebProcessProxy and send an IPC to the WebContent
            process so that it can update its name in Activity Monitor.
            We also need to stop holding a strong reference to the WebProcessPool whenever the process
            is in the cache, similarly to what we do for pre-warmed processes, given that such processes
            should not keep the process pool alive.

            (WebKit::WebProcessProxy::addExistingWebPage):
            Assert that we never try to add a page to a cached process, it should be taken out of the
            cache before use.

            (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
            (WebKit::WebProcessProxy::isAllowedToUpdateBackForwardItem const):
            (WebKit::WebProcessProxy::updateBackForwardItem):
            In case of client-side redirects, the previous process would sometimes send an IPC causing
            the UIProcess' backforward list item to get updated with the pre-redirect URL after we've
            already redirected. This previously would be unlikely to occur because we do not suspend
            client-redirect pages and their process would normally exit before getting a chance to send
            the IPC. However, with the process cache, the bug became obvious as the process would stay
            alive and send up the "bad" IPC. To address the issue, we now only let the IPC update the
            item if the item's page is (still) associated with the process. In the future, we may want
            to update the IPC so that it gets sent to the WebPageProxy instead of the WebProcessProxy.

            (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
            If a cached WebProcess crashes, remove it from the cache so that we do not attempt to use
            it for a load later.

            (WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
            Only cache WebProcesses that have loaded a single registrable domain. Also prevent caching
            for service worker and inspector processes.

            (WebKit::WebProcessProxy::maybeShutDown):
            If the process is cacheable, add it to the cache instead of shutting it down right away.

            (WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
            Make sure we do not attempt to terminate a processes that is in the cache.

            (WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
            Whenever a main frame provisional load starts, make sure we update the process's associated
            registrable domain. nullopt indicates that there is no associated domain yet. Null string
            indicates that the process is associated with several registrable domain and is therefore
            not eligible for caching.

            * UIProcess/WebProcessProxy.h:
            (WebKit::WebProcessProxy::registrableDomain const):
            (WebKit::WebProcessProxy::isInProcessCache const):
            (WebKit::WebProcessProxy::provisionalPageCount const):
            Add convenience getters.

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

            * WebProcess/WebProcess.cpp:
            (WebKit::WebProcess::setIsInProcessCache):
            * WebProcess/WebProcess.h:
            * WebProcess/WebProcess.messages.in:
            * WebProcess/cocoa/WebProcessCocoa.mm:
            (WebKit::WebProcess::updateProcessName):
            Update the WebProcess' name in Activity Monitor whenever it goes into or out of the WebProcess
            cache.

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/47673836

    2019-02-13  Brent Fulgham  <bfulgham@apple.com>

            [iOS] Revert ability to set programmatic focus when hardware keyboard is attached
            https://bugs.webkit.org/show_bug.cgi?id=194570
            <rdar://problem/47673836>

            Reviewed by Dan Bates.

            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
            * WebProcess/WebPage/ios/WebPageIOS.mm:
            (WebKit::WebPage::platformEditorState const):

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241500. rdar://problem/48065631

    Crash in WKBundleFrameGetParentFrame when called inside didRemoveFrameFromHierarchy
    https://bugs.webkit.org/show_bug.cgi?id=194641
    
    Reviewed by Geoffrey Garen.
    
    Source/WebKit:
    
    Fixed the bug by adding a null check to WebFrame::parentFrame.
    
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::WebFrame::parentFrame const):
    
    Tools:
    
    Added a call to WKBundleFrameGetParentFrame to an existing test for didRemoveFrameFromHierarchy
    so that the test would fail without this fix.
    
    * TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp:
    (TestWebKitAPI::didRemoveFrameFromHierarchyCallback):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241500 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Ryosuke Niwa  <rniwa@webkit.org>

            Crash in WKBundleFrameGetParentFrame when called inside didRemoveFrameFromHierarchy
            https://bugs.webkit.org/show_bug.cgi?id=194641

            Reviewed by Geoffrey Garen.

            Fixed the bug by adding a null check to WebFrame::parentFrame.

            * WebProcess/WebPage/WebFrame.cpp:
            (WebKit::WebFrame::parentFrame const):

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241481. rdar://problem/48065616

    Encrypted PDFs inside <embed> or <object> crash the Web Content process
    https://bugs.webkit.org/show_bug.cgi?id=194605
    <rdar://problem/19894818>
    
    Reviewed by Andy Estes.
    
    Source/WebKit:
    
    * WebProcess/Plugins/PDF/PDFPlugin.mm:
    (WebKit::PDFPlugin::createPasswordEntryForm):
    Don't try to create a password form field if we can't make form fields.
    
    This means you will be left with a useless embedded PDF, but at least
    the Web Content process won't crash.
    
    We'll need to find an alternative implementation of PDF embedded form
    fields that is compatible with <embed> and <object> if we want to support
    this. Currently we piggy-back off the fact that we can just insert
    <input>s into the PluginDocument's DOM, but we can't do that if there
    is no PluginDocument, just a main document, like in the <embed> case.
    
    LayoutTests:
    
    * fast/replaced/encrypted-pdf-as-object-and-embed-expected.txt: Added.
    * fast/replaced/encrypted-pdf-as-object-and-embed.html: Added.
    * fast/replaced/resources/encrypted-image.pdf: Added.
    Add a test ensuring that we don't crash with encrypted PDF in <object> or <embed>.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241481 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Tim Horton  <timothy_horton@apple.com>

            Encrypted PDFs inside <embed> or <object> crash the Web Content process
            https://bugs.webkit.org/show_bug.cgi?id=194605
            <rdar://problem/19894818>

            Reviewed by Andy Estes.

            * WebProcess/Plugins/PDF/PDFPlugin.mm:
            (WebKit::PDFPlugin::createPasswordEntryForm):
            Don't try to create a password form field if we can't make form fields.

            This means you will be left with a useless embedded PDF, but at least
            the Web Content process won't crash.

            We'll need to find an alternative implementation of PDF embedded form
            fields that is compatible with <embed> and <object> if we want to support
            this. Currently we piggy-back off the fact that we can just insert
            <input>s into the PluginDocument's DOM, but we can't do that if there
            is no PluginDocument, just a main document, like in the <embed> case.

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241480. rdar://problem/48065618

    Further restricting webarchive loads
    https://bugs.webkit.org/show_bug.cgi?id=194567
    <rdar://problem/47610130>
    
    Reviewed by Youenn Fablet.
    
    Source/WebCore:
    
    This patch futher restricts main frame webarchive loads to the followings:
    1) loaded by clients;
    2) loaded by drag;
    3) reloaded from any of the previous two.
    
    It moves setAlwaysAllowLocalWebarchive, which is used for testing only, from Document
    to FrameLoader such that the option is remembered during redirections.
    
    Covered by API tests.
    
    * dom/Document.h:
    (WebCore::Document::setAlwaysAllowLocalWebarchive): Deleted.
    (WebCore::Document::alwaysAllowLocalWebarchive const): Deleted.
    * loader/DocumentLoader.cpp:
    (WebCore::DocumentLoader::disallowWebArchive const):
    * loader/DocumentLoader.h:
    (WebCore::DocumentLoader::setAllowsWebArchiveForMainFrame):
    (WebCore::DocumentLoader::allowsWebArchiveForMainFrame):
    * loader/FrameLoadRequest.h:
    (WebCore::FrameLoadRequest::setIsRequestFromClientOrUserInput):
    (WebCore::FrameLoadRequest::isRequestFromClientOrUserInput):
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::load):
    (WebCore::FrameLoader::reload):
    * loader/FrameLoader.h:
    (WebCore::FrameLoader::setAlwaysAllowLocalWebarchive):
    (WebCore::FrameLoader::alwaysAllowLocalWebarchive const):
    * page/DragController.cpp:
    (WebCore::DragController::performDragOperation):
    * testing/Internals.cpp:
    (WebCore::Internals::setAlwaysAllowLocalWebarchive const):
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::loadRequest):
    Set a flag to indicate a load is started from clients.
    
    Tools:
    
    Besides adding API tests, this patch also enhances DragAndDropSimulator to allow
    navigations on drop.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/mac/LoadWebArchive.mm: Added.
    (-[TestLoadWebArchiveNavigationDelegate webView:didFinishNavigation:]):
    (-[TestLoadWebArchiveNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
    (-[TestLoadWebArchiveNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
    (TestWebKitAPI::TEST):
    * TestWebKitAPI/Tests/mac/helloworld.webarchive: Added.
    * TestWebKitAPI/Tests/mac/load-web-archive-1.html: Added.
    * TestWebKitAPI/Tests/mac/load-web-archive-2.html: Added.
    * TestWebKitAPI/cocoa/DragAndDropSimulator.h:
    * TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:
    (-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
    (-[DragAndDropSimulator _webView:dragDestinationActionMaskForDraggingInfo:]):
    
    LayoutTests:
    
    * platform/mac/fast/loader/webarchive-encoding-respected.html:
    * webarchive/loading/cache-expired-subresource.html:
    * webarchive/loading/javascript-url-iframe-crash.html:
    * webarchive/loading/mainresource-null-mimetype-crash.html:
    * webarchive/loading/missing-data.html:
    * webarchive/loading/object.html:
    * webarchive/loading/test-loading-archive-subresource-null-mimetype.html:
    * webarchive/loading/test-loading-archive-subresource.html:
    * webarchive/loading/test-loading-archive.html:
    * webarchive/loading/test-loading-top-archive.html:
    * webarchive/loading/video-in-webarchive.html:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241480 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-12  Jiewen Tan  <jiewen_tan@apple.com>

            Further restricting webarchive loads
            https://bugs.webkit.org/show_bug.cgi?id=194567
            <rdar://problem/47610130>

            Reviewed by Youenn Fablet.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::loadRequest):
            Set a flag to indicate a load is started from clients.

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241453. rdar://problem/48065612

    Fix -Wformat warning from r241401
    https://bugs.webkit.org/show_bug.cgi?id=194584
    <rdar://problem/47761293>
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::setActivityState):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241453 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Michael Catanzaro  <mcatanzaro@igalia.com>

            Fix -Wformat warning from r241401
            https://bugs.webkit.org/show_bug.cgi?id=194584
            <rdar://problem/47761293>

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

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241448. rdar://problem/48065637

    Crash in WebKit::CacheStorage::Engine::cachesRootPath
    https://bugs.webkit.org/show_bug.cgi?id=194588
    <rdar://problem/46363997>
    
    Reviewed by Youenn Fablet.
    
    * NetworkProcess/cache/CacheStorageEngine.cpp:
    (WebKit::CacheStorage::Engine::cachesRootPath):
    
    Salt may have not been initialized yet when the Engine is destroyed.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241448 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Antti Koivisto  <antti@apple.com>

            Crash in WebKit::CacheStorage::Engine::cachesRootPath
            https://bugs.webkit.org/show_bug.cgi?id=194588
            <rdar://problem/46363997>

            Reviewed by Youenn Fablet.

            * NetworkProcess/cache/CacheStorageEngine.cpp:
            (WebKit::CacheStorage::Engine::cachesRootPath):

            Salt may have not been initialized yet when the Engine is destroyed.

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241401. rdar://problem/48065612

    Crash in Page::setActivityState because m_page is null
    https://bugs.webkit.org/show_bug.cgi?id=194584
    
    Reviewed by Antti Koivisto.
    
    Add a null check to avoid the crash. Also add a debug assertion to help diagnose this in the future.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::setActivityState):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241401 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Ryosuke Niwa  <rniwa@webkit.org>

            Crash in Page::setActivityState because m_page is null
            https://bugs.webkit.org/show_bug.cgi?id=194584

            Reviewed by Antti Koivisto.

            Add a null check to avoid the crash. Also add a debug assertion to help diagnose this in the future.

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

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241349. rdar://problem/48065639

    Null deref in userInterfaceLayoutDirection under ViewGestureController::handleSwipeGesture
    https://bugs.webkit.org/show_bug.cgi?id=194569
    <rdar://problem/46711049>
    
    Reviewed by Wenson Hsieh.
    
    * UIProcess/mac/ViewGestureControllerMac.mm:
    (WebKit::ViewGestureController::handleSwipeGesture):
    It is conceivable that we could get here if the client closes the page
    e.g. in the callback from willEndSwipeGesture. We already guarded against
    this ... one line too late! Rearrange the lines so we don't call into
    WebPageProxy at all if we don't have a drawing area (which is a strict subset
    of the time that isValid would return true). This is a speculative fix,
    since I can no longer reproduce the crash on demand.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241349 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-12  Tim Horton  <timothy_horton@apple.com>

            Null deref in userInterfaceLayoutDirection under ViewGestureController::handleSwipeGesture
            https://bugs.webkit.org/show_bug.cgi?id=194569
            <rdar://problem/46711049>

            Reviewed by Wenson Hsieh.

            * UIProcess/mac/ViewGestureControllerMac.mm:
            (WebKit::ViewGestureController::handleSwipeGesture):
            It is conceivable that we could get here if the client closes the page
            e.g. in the callback from willEndSwipeGesture. We already guarded against
            this ... one line too late! Rearrange the lines so we don't call into
            WebPageProxy at all if we don't have a drawing area (which is a strict subset
            of the time that isValid would return true). This is a speculative fix,
            since I can no longer reproduce the crash on demand.

2019-02-13  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241336. rdar://problem/48065621

    Regression(PSON) MESSAGE_CHECK() hit under WebPageProxy::didFailProvisionalLoadForFrameShared()
    https://bugs.webkit.org/show_bug.cgi?id=194568
    <rdar://problem/47944490>
    
    Reviewed by Ryosuke Niwa.
    
    Source/WebKit:
    
    When the provisional process crashes, it is unsafe to call ProvisionalPageProxy::cancel() because
    the WebProcessProxy clears its frame map as soon as the process crashes. Calling cancel() after
    that would call WebPageProxy::didFailProvisionalLoadForFrameShared(), which would try to look up
    the frame by ID and MESSAGE_CHECK() that the frame is not null. We would fail this check since
    the frame has been removed from the WebProcessProxy at this point.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _provisionalWebProcessIdentifier]):
    * UIProcess/API/Cocoa/WKWebViewPrivate.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::provisionalProcessDidTerminate):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:didStartProvisionalNavigation:]):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241336 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Regression(PSON) MESSAGE_CHECK() hit under WebPageProxy::didFailProvisionalLoadForFrameShared()
            https://bugs.webkit.org/show_bug.cgi?id=194568
            <rdar://problem/47944490>

            Reviewed by Ryosuke Niwa.

            When the provisional process crashes, it is unsafe to call ProvisionalPageProxy::cancel() because
            the WebProcessProxy clears its frame map as soon as the process crashes. Calling cancel() after
            that would call WebPageProxy::didFailProvisionalLoadForFrameShared(), which would try to look up
            the frame by ID and MESSAGE_CHECK() that the frame is not null. We would fail this check since
            the frame has been removed from the WebProcessProxy at this point.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _provisionalWebProcessIdentifier]):
            * UIProcess/API/Cocoa/WKWebViewPrivate.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::provisionalProcessDidTerminate):

2019-02-13  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/40966400

    2019-02-13  Brent Fulgham  <bfulgham@apple.com>

            Branch-Only: Use Async message infrastructure for storageAccess API
            https://bugs.webkit.org/show_bug.cgi?id=194511
            <rdar://problem/40966400>

            Back-port the trunk async message handling implementation of the StorageAccess API methods.

            The generated async message handling code does a better job of managing the bookkeeping and error handling
            of cross-process message passing, and gives us fewer opportunities to make coding errors that might lead
            to dropped messages or sending messages multiple times.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::hasStorageAccess):
            (WebKit::WebPageProxy::requestStorageAccess):
            * UIProcess/WebPageProxy.h:
            * UIProcess/WebPageProxy.messages.in:
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::hasStorageAccess):
            (WebKit::WebPage::requestStorageAccess):
            (WebKit::nextRequestStorageAccessContextId): Deleted.
            (WebKit::WebPage::storageAccessResponse): Deleted.
            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebPage/WebPage.messages.in:

2019-02-13  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241352. rdar://problem/48038900

    Release assert in PolicyCheckIdentifier::isValidFor via WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction
    https://bugs.webkit.org/show_bug.cgi?id=194582
    
    Reviewed by Antti Koivisto.
    
    Source/WebCore:
    
    Check the zero-ness of m_policyCheck first so that we can differentiate process ID being wrong
    from the non-generated identifier being sent to us as it was the case in this failure.
    
    * loader/PolicyChecker.cpp:
    (WebCore::PolicyCheckIdentifier::isValidFor):
    
    Source/WebKit:
    
    The bug was caused by WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction invoking the callback
    with responseIdentifier even when we had failed to send the policy check IPC. Clearly, responseIdentifier
    is invalid in that case, and we should be using requestIdentifier instead.
    
    Unfortunately no new tests since I'm not aware of a way to make sendSync fail in this case.
    
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241352 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-13  Ryosuke Niwa  <rniwa@webkit.org>

            Release assert in PolicyCheckIdentifier::isValidFor via WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction
            https://bugs.webkit.org/show_bug.cgi?id=194582

            Reviewed by Antti Koivisto.

            The bug was caused by WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction invoking the callback
            with responseIdentifier even when we had failed to send the policy check IPC. Clearly, responseIdentifier
            is invalid in that case, and we should be using requestIdentifier instead.

            Unfortunately no new tests since I'm not aware of a way to make sendSync fail in this case.

            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2019-02-12  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/48009995

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

            WebPage::close needs to remove all message receivers associated with that WebPage, not WebPage::~WebPage
            https://bugs.webkit.org/show_bug.cgi?id=194522
            <rdar://problem/47789393>

            Reviewed by Chris Dumez.

            The InjectedBundle SPI can retain the WebPage or wrapping objects (WKWebProcessPlugInBrowserContextController/WKBundlePageRef).
            This can make it so WebPage::close is called before WebPage::~WebPage, and if the SuspendedPageProxy is reused for a subsequent
            navigation to the same domain, the WebProcess is reused with a different WebPage instance with the same PageID, which causes problems
            when another WebPage registers message handlers and then the previous WebPage is destroyed, which removes both message handlers.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::~WebPage):
            (WebKit::WebPage::close):
            (WebKit::WebPage::mainFrameDidLayout):
            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebProcess.h:
            (WebKit::WebProcess::eventDispatcher):

2019-02-07  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241171. rdar://problem/47908156

    [iOS] Clicking links in Safari using Apple Pencil is much more difficult after r238475
    https://bugs.webkit.org/show_bug.cgi?id=194415
    <rdar://problem/47550281>
    
    Reviewed by Tim Horton.
    
    Source/WebKit:
    
    Fix the bug by not firing the Apple-pencil-exclusive tap gesture recognizer in the case where editable images
    are disabled. This gesture recognizer is only used for inserting editable images, and currently conflicts with
    the synthetic click gesture recognizer used to recognize clicks from generic digitizer inputs.
    
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView gestureRecognizerShouldBegin:]):
    (-[WKContentView _stylusSingleTapRecognized:]):
    
    LayoutTests:
    
    Add a layout test to verify that a stylus tap dispatches clicks.
    
    * fast/events/touch/ios/pencil-tap-dispatches-click-expected.txt: Added.
    * fast/events/touch/ios/pencil-tap-dispatches-click.html: Added.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241171 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-07  Wenson Hsieh  <wenson_hsieh@apple.com>

            [iOS] Clicking links in Safari using Apple Pencil is much more difficult after r238475
            https://bugs.webkit.org/show_bug.cgi?id=194415
            <rdar://problem/47550281>

            Reviewed by Tim Horton.

            Fix the bug by not firing the Apple-pencil-exclusive tap gesture recognizer in the case where editable images
            are disabled. This gesture recognizer is only used for inserting editable images, and currently conflicts with
            the synthetic click gesture recognizer used to recognize clicks from generic digitizer inputs.

            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView gestureRecognizerShouldBegin:]):
            (-[WKContentView _stylusSingleTapRecognized:]):

2019-02-07  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241143. rdar://problem/47908161

    Permit additional IOKit Properties needed by Media PlugIns on older Mac Hardware
    https://bugs.webkit.org/show_bug.cgi?id=194412
    <rdar://problem/47820615>
    
    Reviewed by Per Arne Vollan.
    
    * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241143 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-07  Brent Fulgham  <bfulgham@apple.com>

            Permit additional IOKit Properties needed by Media PlugIns on older Mac Hardware
            https://bugs.webkit.org/show_bug.cgi?id=194412
            <rdar://problem/47820615>

            Reviewed by Per Arne Vollan.

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

2019-02-07  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r241142. rdar://problem/47908158

    Permit additional IOKit Properties needed by older Mac Hardware
    https://bugs.webkit.org/show_bug.cgi?id=194410
    <rdar://problem/47820620>
    
    Reviewed by Per Arne Vollan.
    
    * WebProcess/com.apple.WebProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241142 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-07  Brent Fulgham  <bfulgham@apple.com>

            Permit additional IOKit Properties needed by older Mac Hardware
            https://bugs.webkit.org/show_bug.cgi?id=194410
            <rdar://problem/47820620>

            Reviewed by Per Arne Vollan.

            * WebProcess/com.apple.WebProcess.sb.in:

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241131. rdar://problem/47893578

    Print backgrounds preference should be honored instead of WKWebViewConfiguration value
    https://bugs.webkit.org/show_bug.cgi?id=194364
    <rdar://problem/47627599>
    
    Reviewed by Tim Horton.
    
    Without this patch, changing the preference for printing the background has no effect.
    This patch fixes that, and I verified it manually by checking "Print backgrounds" in Safari's print menu.
    Unfortunately, the only way to test this is actually printing because only values from WebPageProxy::preferences
    or WebPageProxy::configuration's preferences are exposed to the API, but values from WebPageProxy::preferencesStore
    are used when printing.  Actually printing verifies this change fixes the bug.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _initializeWithConfiguration:]):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241131 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Print backgrounds preference should be honored instead of WKWebViewConfiguration value
            https://bugs.webkit.org/show_bug.cgi?id=194364
            <rdar://problem/47627599>

            Reviewed by Tim Horton.

            Without this patch, changing the preference for printing the background has no effect.
            This patch fixes that, and I verified it manually by checking "Print backgrounds" in Safari's print menu.
            Unfortunately, the only way to test this is actually printing because only values from WebPageProxy::preferences
            or WebPageProxy::configuration's preferences are exposed to the API, but values from WebPageProxy::preferencesStore
            are used when printing.  Actually printing verifies this change fixes the bug.

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

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241124. rdar://problem/47893586

    Shrink and hyphenate safe browsing warning text on watchOS
    https://bugs.webkit.org/show_bug.cgi?id=194361
    <rdar://problem/47466549>
    
    Reviewed by Geoffrey Garen.
    
    Some internationalizations use long words that didn't fit on small watches.
    
    * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
    (fontOfSize):
    (-[WKSafeBrowsingWarning addContent]):
    (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241124 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Shrink and hyphenate safe browsing warning text on watchOS
            https://bugs.webkit.org/show_bug.cgi?id=194361
            <rdar://problem/47466549>

            Reviewed by Geoffrey Garen.

            Some internationalizations use long words that didn't fit on small watches.

            * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
            (fontOfSize):
            (-[WKSafeBrowsingWarning addContent]):
            (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241105. rdar://problem/47893571

    [Payment Request] It should be possible to require a phonetic name for shipping contacts
    https://bugs.webkit.org/show_bug.cgi?id=194311
    <rdar://46733045>
    
    Reviewed by Alex Christensen.
    
    Source/WebCore:
    
    It should be possible to require that a shipping contact has a phonetic name in Payment Request.
    To accomplish this, move requiredShippingContactFields from ApplePayPaymentRequest to
    ApplePayRequestBase so that it can be used as part of an Apple Pay payment method data.
    
    Since required shipping contact fields can now be specified both in
    requiredShippingContactFields and PaymentOptions, we merge the required fields from these
    two sources such that, e.g., email is required if it is specified in either place.
    
    So that clients can detect this new feature, the API version number is bumped from 5 to 6.
    
    Added test cases to ApplePayRequestShippingContact.https.html and ApplePayRequestShippingContactV3.https.html.
    
    * DerivedSources.make:
    * Modules/applepay/ApplePayPaymentRequest.h:
    * Modules/applepay/ApplePayPaymentRequest.idl:
    * Modules/applepay/ApplePayRequestBase.cpp:
    (WebCore::convertAndValidate):
    * Modules/applepay/ApplePayRequestBase.h:
    * Modules/applepay/ApplePayRequestBase.idl:
    * Modules/applepay/ApplePaySession.cpp:
    (WebCore::convertAndValidate):
    * Modules/applepay/PaymentCoordinatorClient.cpp: Added.
    (WebCore::PaymentCoordinatorClient::supportsVersion):
    * Modules/applepay/PaymentCoordinatorClient.h:
    * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
    (WebCore::mergePaymentOptions):
    (WebCore::ApplePayPaymentHandler::show):
    * SourcesCocoa.txt:
    * WebCore.xcodeproj/project.pbxproj:
    * loader/EmptyClients.cpp:
    * testing/MockPaymentContactFields.h: Added.
    (WebCore::MockPaymentContactFields::MockPaymentContactFields):
    * testing/MockPaymentContactFields.idl: Added.
    * testing/MockPaymentCoordinator.cpp:
    (WebCore::MockPaymentCoordinator::showPaymentUI):
    (WebCore::MockPaymentCoordinator::supportsVersion): Deleted.
    * testing/MockPaymentCoordinator.h:
    * testing/MockPaymentCoordinator.idl:
    
    Source/WebKit:
    
    * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
    (WebKit::WebPaymentCoordinator::supportsVersion): Deleted.
    * WebProcess/ApplePay/WebPaymentCoordinator.h:
    
    Source/WebKitLegacy/mac:
    
    * WebCoreSupport/WebPaymentCoordinatorClient.h:
    * WebCoreSupport/WebPaymentCoordinatorClient.mm:
    (WebPaymentCoordinatorClient::supportsVersion): Deleted.
    
    LayoutTests:
    
    * http/tests/ssl/applepay/ApplePayRequestShippingContact.https-expected.txt:
    * http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html:
    * http/tests/ssl/applepay/ApplePayRequestShippingContactV3.https-expected.txt:
    * http/tests/ssl/applepay/ApplePayRequestShippingContactV3.https.html:
    * http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
    * http/tests/ssl/applepay/PaymentRequest.https.html:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241105 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            [Payment Request] It should be possible to require a phonetic name for shipping contacts
            https://bugs.webkit.org/show_bug.cgi?id=194311
            <rdar://46733045>

            Reviewed by Alex Christensen.

            * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
            (WebKit::WebPaymentCoordinator::supportsVersion): Deleted.
            * WebProcess/ApplePay/WebPaymentCoordinator.h:

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r241026. rdar://problem/47774548

    Roll out parts of r238819 since it is a PLT performance regression.
    https://bugs.webkit.org/show_bug.cgi?id=194346
    
    Unreviewed performance fix.
    
    * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
    (didStartProvisionalLoadForFrame):
    (didReceiveServerRedirectForProvisionalLoadForFrame):
    (didFinishLoadForFrame):
    (globalObjectIsAvailableForFrame):
    (didRemoveFrameFromHierarchy):
    (didCommitLoadForFrame):
    (didFinishDocumentLoadForFrame):
    (didFailProvisionalLoadWithErrorForFrame):
    (didFailLoadWithErrorForFrame):
    (didSameDocumentNavigationForFrame):
    (didLayoutForFrame):
    (didReachLayoutMilestone):
    (didFirstVisuallyNonEmptyLayoutForFrame):
    (didHandleOnloadEventsForFrame):
    (userAgentForURL):
    (setUpPageLoaderClient):
    (willSendRequestForFrame):
    (didInitiateLoadForResource):
    (didFinishLoadForResource):
    (didFailLoadForResource):
    (setUpResourceLoadClient):
    (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
    (ResourceLoadClient::ResourceLoadClient): Deleted.
    (ResourceLoadClient::loadDelegate const): Deleted.
    (ResourceLoadClient::pluginContextController const): Deleted.
    (PageLoaderClient::PageLoaderClient): Deleted.
    (PageLoaderClient::loadDelegate const): Deleted.
    (PageLoaderClient::pluginContextController const): Deleted.
    (PageLoaderClient::didStartProvisionalLoadForFrame): Deleted.
    (PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
    (PageLoaderClient::didFinishLoadForFrame): Deleted.
    (PageLoaderClient::globalObjectIsAvailableForFrame): Deleted.
    (PageLoaderClient::didRemoveFrameFromHierarchy): Deleted.
    (PageLoaderClient::didCommitLoadForFrame): Deleted.
    (PageLoaderClient::didFinishDocumentLoadForFrame): Deleted.
    (PageLoaderClient::didFailProvisionalLoadWithErrorForFrame): Deleted.
    (PageLoaderClient::didFailLoadWithErrorForFrame): Deleted.
    (PageLoaderClient::didSameDocumentNavigationForFrame): Deleted.
    (PageLoaderClient::didLayoutForFrame): Deleted.
    (PageLoaderClient::didReachLayoutMilestone): Deleted.
    (PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame): Deleted.
    (PageLoaderClient::layoutMilestones const): Deleted.
    (PageLoaderClient::didHandleOnloadEventsForFrame): Deleted.
    (PageLoaderClient::userAgentForURL const): Deleted.
    (ResourceLoadClient::willSendRequestForFrame): Deleted.
    (ResourceLoadClient::didInitiateLoadForResource): Deleted.
    (ResourceLoadClient::didFinishLoadForResource): Deleted.
    (ResourceLoadClient::didFailLoadForResource): Deleted.
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241026 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Roll out parts of r238819 since it is a PLT performance regression.
            https://bugs.webkit.org/show_bug.cgi?id=194346

            Unreviewed performance fix.

            * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
            (didStartProvisionalLoadForFrame):
            (didReceiveServerRedirectForProvisionalLoadForFrame):
            (didFinishLoadForFrame):
            (globalObjectIsAvailableForFrame):
            (didRemoveFrameFromHierarchy):
            (didCommitLoadForFrame):
            (didFinishDocumentLoadForFrame):
            (didFailProvisionalLoadWithErrorForFrame):
            (didFailLoadWithErrorForFrame):
            (didSameDocumentNavigationForFrame):
            (didLayoutForFrame):
            (didReachLayoutMilestone):
            (didFirstVisuallyNonEmptyLayoutForFrame):
            (didHandleOnloadEventsForFrame):
            (userAgentForURL):
            (setUpPageLoaderClient):
            (willSendRequestForFrame):
            (didInitiateLoadForResource):
            (didFinishLoadForResource):
            (didFailLoadForResource):
            (setUpResourceLoadClient):
            (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
            (ResourceLoadClient::ResourceLoadClient): Deleted.
            (ResourceLoadClient::loadDelegate const): Deleted.
            (ResourceLoadClient::pluginContextController const): Deleted.
            (PageLoaderClient::PageLoaderClient): Deleted.
            (PageLoaderClient::loadDelegate const): Deleted.
            (PageLoaderClient::pluginContextController const): Deleted.
            (PageLoaderClient::didStartProvisionalLoadForFrame): Deleted.
            (PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
            (PageLoaderClient::didFinishLoadForFrame): Deleted.
            (PageLoaderClient::globalObjectIsAvailableForFrame): Deleted.
            (PageLoaderClient::didRemoveFrameFromHierarchy): Deleted.
            (PageLoaderClient::didCommitLoadForFrame): Deleted.
            (PageLoaderClient::didFinishDocumentLoadForFrame): Deleted.
            (PageLoaderClient::didFailProvisionalLoadWithErrorForFrame): Deleted.
            (PageLoaderClient::didFailLoadWithErrorForFrame): Deleted.
            (PageLoaderClient::didSameDocumentNavigationForFrame): Deleted.
            (PageLoaderClient::didLayoutForFrame): Deleted.
            (PageLoaderClient::didReachLayoutMilestone): Deleted.
            (PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame): Deleted.
            (PageLoaderClient::layoutMilestones const): Deleted.
            (PageLoaderClient::didHandleOnloadEventsForFrame): Deleted.
            (PageLoaderClient::userAgentForURL const): Deleted.
            (ResourceLoadClient::willSendRequestForFrame): Deleted.
            (ResourceLoadClient::didInitiateLoadForResource): Deleted.
            (ResourceLoadClient::didFinishLoadForResource): Deleted.
            (ResourceLoadClient::didFailLoadForResource): Deleted.

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240808. rdar://problem/47774548

    Revert r238819 which is unneeded and caused a performance regression.
    https://bugs.webkit.org/show_bug.cgi?id=192272
    <rdar://problem/46664625>
    
    Source/WebCore:
    
    * loader/EmptyFrameLoaderClient.h:
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::prepareForLoadStart):
    (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
    (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
    * loader/FrameLoader.h:
    * loader/FrameLoaderClient.h:
    
    Source/WebKit:
    
    * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
    (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
    * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
    * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
    * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
    (PageLoaderClient::didStartProvisionalLoadForFrame):
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
    (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
    
    Source/WebKitLegacy/mac:
    
    * WebCoreSupport/WebFrameLoaderClient.h:
    * WebCoreSupport/WebFrameLoaderClient.mm:
    (WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
    
    Source/WebKitLegacy/win:
    
    * WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
    * WebCoreSupport/WebFrameLoaderClient.h:
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenPlugIn.mm:
    (-[ParserYieldTokenPlugIn webProcessPlugInBrowserContextController:didCommitLoadForFrame:]):
    (-[ParserYieldTokenPlugIn webProcessPlugInBrowserContextController:willStartProvisionalLoadForFrame:completionHandler:]): Deleted.
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240808 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Revert r238819 which is unneeded and caused a performance regression.
            https://bugs.webkit.org/show_bug.cgi?id=192272
            <rdar://problem/46664625>

            * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
            (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
            * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
            * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
            * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
            (PageLoaderClient::didStartProvisionalLoadForFrame):
            * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
            (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
            * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2019-02-07  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239697. rdar://problem/47776479

    Web Inspector: Remote inspector can crash if attempting to navigate inspector page
    https://bugs.webkit.org/show_bug.cgi?id=193204
    <rdar://problem/45550428>
    
    Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-01-07
    Reviewed by Devin Rousso.
    
    * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
    (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
    * UIProcess/mac/WKInspectorViewController.mm:
    (-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239697 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-07  Joseph Pecoraro  <pecoraro@apple.com>

            Web Inspector: Remote inspector can crash if attempting to navigate inspector page
            https://bugs.webkit.org/show_bug.cgi?id=193204
            <rdar://problem/45550428>

            Reviewed by Devin Rousso.

            * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
            (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
            * UIProcess/mac/WKInspectorViewController.mm:
            (-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):

2019-02-06  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/47822019

    2019-02-06  Ryosuke Niwa  <rniwa@webkit.org>

            Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
            https://bugs.webkit.org/show_bug.cgi?id=194189

            Reviewed by Geoffrey Garen.

            Pass the policy check identifier around functions and store it in PolicyDecisionSender
            so that we can send it back to WebCore with the navigation policy decision.

            We also store it in WebFrame in the case the policy decision had to be invalidated
            before the decision was received (via WebFrame::invalidatePolicyListener).

            * Scripts/webkit/messages.py:
            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
            * UIProcess/ProvisionalPageProxy.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::PolicyDecisionSender): Added PolicyCheckIdentifier as a member.
            (WebKit::WebPageProxy::PolicyDecisionSender::create):
            (WebKit::WebPageProxy::PolicyDecisionSender::send):
            (WebKit::WebPageProxy::PolicyDecisionSender::PolicyDecisionSender):
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            * UIProcess/WebPageProxy.h:
            * UIProcess/WebPageProxy.messages.in:
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
            * 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:

2019-02-06  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239845. rdar://problem/47776472

    [macOS] Add name of IORegistry key in sandbox.
    https://bugs.webkit.org/show_bug.cgi?id=193335
    <rdar://problem/47184951>
    
    Reviewed by Alexey Proskuryakov.
    
    The property IOGVAHEVCDecodeCapabilities was added in https://bugs.webkit.org/show_bug.cgi?id=193324.
    Also, the property IOGVAHEVCEncodeCapabilities needs to be added.
    
    * WebProcess/com.apple.WebProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239845 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  Per Arne Vollan  <pvollan@apple.com>

            [macOS] Add name of IORegistry key in sandbox.
            https://bugs.webkit.org/show_bug.cgi?id=193335
            <rdar://problem/47184951>

            Reviewed by Alexey Proskuryakov.

            The property IOGVAHEVCDecodeCapabilities was added in https://bugs.webkit.org/show_bug.cgi?id=193324.
            Also, the property IOGVAHEVCEncodeCapabilities needs to be added.

            * WebProcess/com.apple.WebProcess.sb.in:

2019-02-06  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239834. rdar://problem/47776472

    [macOS] Add name of IORegistry key in sandbox.
    https://bugs.webkit.org/show_bug.cgi?id=193324
    
    Reviewed by Brent Fulgham.
    
    IOGVAVTCapabilities key has been changed to IOGVAHEVCDecodeCapabilities.
    
    * WebProcess/com.apple.WebProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239834 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  Per Arne Vollan  <pvollan@apple.com>

            [macOS] Add name of IORegistry key in sandbox.
            https://bugs.webkit.org/show_bug.cgi?id=193324

            Reviewed by Brent Fulgham.

            IOGVAVTCapabilities key has been changed to IOGVAHEVCDecodeCapabilities.

            * WebProcess/com.apple.WebProcess.sb.in:

2019-02-06  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240995. rdar://problem/47843415

    Reproducible crash under WKShareSheet presentWithParameters when cancelling a share
    https://bugs.webkit.org/show_bug.cgi?id=194301
    <rdar://problem/47719379>
    
    Reviewed by Beth Dakin.
    
    * UIProcess/Cocoa/WKShareSheet.mm:
    (-[WKShareSheet presentWithParameters:completionHandler:]):
    NSSharingServicePicker's delegate callbacks can be called synchronously.
    We release the WKShareSheet (which holds our reference to the NSSharingServicePicker)
    under sharingServicePicker:didChooseSharingService:. On older versions of macOS,
    there was nothing keeping the NSSharingServicePicker alive inside
    showRelativeToRect:ofView:preferredEdge:, thus the whole chain of references would
    fall and result in sending a message to a released NSSharingServicePicker.
    To resolve this, keep an extra reference to the WKShareSheet until
    presentation is complete.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240995 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-05  Tim Horton  <timothy_horton@apple.com>

            Reproducible crash under WKShareSheet presentWithParameters when cancelling a share
            https://bugs.webkit.org/show_bug.cgi?id=194301
            <rdar://problem/47719379>

            Reviewed by Beth Dakin.

            * UIProcess/Cocoa/WKShareSheet.mm:
            (-[WKShareSheet presentWithParameters:completionHandler:]):
            NSSharingServicePicker's delegate callbacks can be called synchronously.
            We release the WKShareSheet (which holds our reference to the NSSharingServicePicker)
            under sharingServicePicker:didChooseSharingService:. On older versions of macOS,
            there was nothing keeping the NSSharingServicePicker alive inside
            showRelativeToRect:ofView:preferredEdge:, thus the whole chain of references would
            fall and result in sending a message to a released NSSharingServicePicker.
            To resolve this, keep an extra reference to the WKShareSheet until
            presentation is complete.

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240928. rdar://problem/47810458

    Capture state should be managed consistently when doing process swapping
    https://bugs.webkit.org/show_bug.cgi?id=194122
    <rdar://problem/47609293>
    
    Reviewed by Eric Carlson.
    
    Source/WebKit:
    
    When doing PSON, WebPageProxy::resetState is called.
    It resets the media state, but does not call the client delegates.
    Instead of directly updating the media state, call the routine used to update it so that client delegates are called.
    
    Covered by new API test and layout test.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _mediaCaptureState]):
    * UIProcess/API/Cocoa/WKWebViewPrivate.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::resetState):
    (WebKit::WebPageProxy::isPlayingMediaDidChange):
    (WebKit::WebPageProxy::updatePlayingMediaDidChange):
    * UIProcess/WebPageProxy.h:
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[GetUserMediaUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
    (-[GetUserMediaUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
    (-[GetUserMediaUIDelegate _webView:mediaCaptureStateDidChange:]):
    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::isDoingMediaCapture const):
    * WebKitTestRunner/InjectedBundle/TestRunner.h:
    * WebKitTestRunner/TestController.cpp:
    (WTR::TestController::isDoingMediaCapture const):
    * WebKitTestRunner/TestController.h:
    * WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
    * WebKitTestRunner/cocoa/TestControllerCocoa.mm:
    (WTR::TestController::isDoingMediaCapture const):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240928 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Capture state should be managed consistently when doing process swapping
            https://bugs.webkit.org/show_bug.cgi?id=194122
            <rdar://problem/47609293>

            Reviewed by Eric Carlson.

            When doing PSON, WebPageProxy::resetState is called.
            It resets the media state, but does not call the client delegates.
            Instead of directly updating the media state, call the routine used to update it so that client delegates are called.

            Covered by new API test and layout test.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _mediaCaptureState]):
            * UIProcess/API/Cocoa/WKWebViewPrivate.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::resetState):
            (WebKit::WebPageProxy::isPlayingMediaDidChange):
            (WebKit::WebPageProxy::updatePlayingMediaDidChange):
            * UIProcess/WebPageProxy.h:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/47810458

    fix-194122

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

            Capture state should be managed consistently when doing process swapping
            https://bugs.webkit.org/show_bug.cgi?id=194122
            <rdar://problem/47609293>

            When doing PSON, WebPageProxy::resetState is called.
            It resets the media state, but does not call the client delegates.
            Instead of directly updating the media state, call the routine used to update it so that client delegates are called.

            Covered by new API test and layout test.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _mediaCaptureState]):
            * UIProcess/API/Cocoa/WKWebViewPrivate.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::resetState):
            (WebKit::WebPageProxy::isPlayingMediaDidChange):
            (WebKit::WebPageProxy::updatePlayingMediaDidChange):
            * UIProcess/WebPageProxy.h:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239752. rdar://problem/47776478

    [WebAuthN] Support U2F HID Authenticators on macOS
    https://bugs.webkit.org/show_bug.cgi?id=191535
    <rdar://problem/47102027>
    
    Reviewed by Brent Fulgham.
    
    Source/WebCore:
    
    This patch changes U2fCommandConstructor to produce register commands with
    enforcing test of user presence. Otherwise, authenticators would silently
    generate credentials. It also renames readFromU2fSignResponse to
    readU2fSignResponse.
    
    Tests: http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html
           http/wpt/webauthn/public-key-credential-create-failure-u2f.https.html
           http/wpt/webauthn/public-key-credential-create-success-u2f.https.html
           http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html
           http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html
           http/wpt/webauthn/public-key-credential-get-success-u2f.https.html
    
    * Modules/webauthn/fido/U2fCommandConstructor.cpp:
    (fido::WebCore::constructU2fRegisterCommand):
    * Modules/webauthn/fido/U2fResponseConverter.cpp:
    (fido::readU2fSignResponse):
    (fido::readFromU2fSignResponse): Deleted.
    * Modules/webauthn/fido/U2fResponseConverter.h:
    
    Source/WebKit:
    
    This patch implements the support for U2F authenticators, and enables it for hid devices.
    It follows the CTAP spec to map WebAuthN requests to U2F commands and return the responses:
    https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#u2f-interoperability
    Most of the parts are done before this patch, this patch focues on: 7.2.2 and 7.3.2.
    
    Besides implementing the U2fHidAuthenticator, this patch also adds support in the mocking
    environment for U2F authenticators. It is done by extending the stages in MockHidConnection
    from 4 to indefinite as multi-round communications are expected to map WebAuthN requests
    to U2F requests.
    
    * Sources.txt:
    * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
    (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
    * UIProcess/WebAuthentication/Cocoa/HidService.mm:
    (WebKit::HidService::continueAddDeviceAfterGetInfo):
    * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
    (WebKit::CtapHidDriver::continueAfterChannelAllocated):
    * UIProcess/WebAuthentication/fido/CtapHidDriver.h:
    (WebKit::CtapHidDriver::setProtocol):
    * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp: Added.
    (WebKit::U2fHidAuthenticator::U2fHidAuthenticator):
    (WebKit::U2fHidAuthenticator::makeCredential):
    (WebKit::U2fHidAuthenticator::checkExcludeList):
    (WebKit::U2fHidAuthenticator::issueRegisterCommand):
    (WebKit::U2fHidAuthenticator::getAssertion):
    (WebKit::U2fHidAuthenticator::issueSignCommand):
    (WebKit::U2fHidAuthenticator::issueNewCommand):
    (WebKit::U2fHidAuthenticator::issueCommand):
    (WebKit::U2fHidAuthenticator::responseReceived):
    (WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):
    (WebKit::U2fHidAuthenticator::continueCheckOnlyCommandAfterResponseReceived):
    (WebKit::U2fHidAuthenticator::continueBogusCommandAfterResponseReceived):
    (WebKit::U2fHidAuthenticator::continueSignCommandAfterResponseReceived):
    * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h: Added.
    * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
    (WebKit::MockHidConnection::parseRequest):
    (WebKit::MockHidConnection::feedReports):
    * UIProcess/WebAuthentication/Mock/MockHidConnection.h:
    * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
    * WebKit.xcodeproj/project.pbxproj:
    
    Tools:
    
    This patch:
    1) adds support for U2F mocking mechanism;
    2) updates tests to reflect U2fCommandConstructor changes.
    
    * TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
    (TestWebKitAPI::TEST):
    * TestWebKitAPI/Tests/WebCore/FidoTestData.h:
    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::setWebAuthenticationMockConfiguration):
    
    LayoutTests:
    
    Besiding adding tests for U2F authenticators, it also changes payloadBase64 from
    a string to a vector of strings. New tests are skipped for iOS.
    
    * http/wpt/webauthn/ctap-hid-failure.https.html:
    * http/wpt/webauthn/ctap-hid-success.https.html:
    * http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html:
    * http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
    * http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html: Added.
    * http/wpt/webauthn/public-key-credential-create-failure-u2f.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-create-failure-u2f.https.html: Added.
    * http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
    * http/wpt/webauthn/public-key-credential-create-success-u2f.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-create-success-u2f.https.html: Copied from LayoutTests/http/wpt/webauthn/public-key-credential-create-success-hid.https.html.
    * http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html:
    * http/wpt/webauthn/public-key-credential-get-failure-hid.https.html:
    * http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html: Added.
    * http/wpt/webauthn/public-key-credential-get-failure-u2f.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-get-failure-u2f.https.html: Added.
    * http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
    * http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt: Added.
    * http/wpt/webauthn/public-key-credential-get-success-u2f.https.html: Added.
    * http/wpt/webauthn/resources/util.js:
    * platform/ios-wk2/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239752 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-08  Jiewen Tan  <jiewen_tan@apple.com>

            [WebAuthN] Support U2F HID Authenticators on macOS
            https://bugs.webkit.org/show_bug.cgi?id=191535
            <rdar://problem/47102027>

            Reviewed by Brent Fulgham.

            This patch implements the support for U2F authenticators, and enables it for hid devices.
            It follows the CTAP spec to map WebAuthN requests to U2F commands and return the responses:
            https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#u2f-interoperability
            Most of the parts are done before this patch, this patch focues on: 7.2.2 and 7.3.2.

            Besides implementing the U2fHidAuthenticator, this patch also adds support in the mocking
            environment for U2F authenticators. It is done by extending the stages in MockHidConnection
            from 4 to indefinite as multi-round communications are expected to map WebAuthN requests
            to U2F requests.

            * Sources.txt:
            * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
            (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
            * UIProcess/WebAuthentication/Cocoa/HidService.mm:
            (WebKit::HidService::continueAddDeviceAfterGetInfo):
            * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
            (WebKit::CtapHidDriver::continueAfterChannelAllocated):
            * UIProcess/WebAuthentication/fido/CtapHidDriver.h:
            (WebKit::CtapHidDriver::setProtocol):
            * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp: Added.
            (WebKit::U2fHidAuthenticator::U2fHidAuthenticator):
            (WebKit::U2fHidAuthenticator::makeCredential):
            (WebKit::U2fHidAuthenticator::checkExcludeList):
            (WebKit::U2fHidAuthenticator::issueRegisterCommand):
            (WebKit::U2fHidAuthenticator::getAssertion):
            (WebKit::U2fHidAuthenticator::issueSignCommand):
            (WebKit::U2fHidAuthenticator::issueNewCommand):
            (WebKit::U2fHidAuthenticator::issueCommand):
            (WebKit::U2fHidAuthenticator::responseReceived):
            (WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):
            (WebKit::U2fHidAuthenticator::continueCheckOnlyCommandAfterResponseReceived):
            (WebKit::U2fHidAuthenticator::continueBogusCommandAfterResponseReceived):
            (WebKit::U2fHidAuthenticator::continueSignCommandAfterResponseReceived):
            * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h: Added.
            * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
            (WebKit::MockHidConnection::parseRequest):
            (WebKit::MockHidConnection::feedReports):
            * UIProcess/WebAuthentication/Mock/MockHidConnection.h:
            * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
            * WebKit.xcodeproj/project.pbxproj:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240974. rdar://problem/47830620

    Protect globalWebSocketStreamMap with a Lock
    https://bugs.webkit.org/show_bug.cgi?id=194224
    <rdar://problem/47581081>
    
    Reviewed by Ryosuke Niwa.
    
    * WebProcess/Network/WebSocketStream.cpp:
    (WebKit::WebSocketStream::streamWithIdentifier):
    (WebKit::WebSocketStream::networkProcessCrashed):
    (WebKit::WebSocketStream::WebSocketStream):
    (WebKit::WebSocketStream::~WebSocketStream):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240974 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Protect globalWebSocketStreamMap with a Lock
            https://bugs.webkit.org/show_bug.cgi?id=194224
            <rdar://problem/47581081>

            Reviewed by Ryosuke Niwa.

            * WebProcess/Network/WebSocketStream.cpp:
            (WebKit::WebSocketStream::streamWithIdentifier):
            (WebKit::WebSocketStream::networkProcessCrashed):
            (WebKit::WebSocketStream::WebSocketStream):
            (WebKit::WebSocketStream::~WebSocketStream):

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240925. rdar://problem/47774545

    Unreviewed, avoid -Wswitch warnings introduced in r240880
    https://bugs.webkit.org/show_bug.cgi?id=193740
    <rdar://problem/47527267>
    
    * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
    (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

            Unreviewed, avoid -Wswitch warnings introduced in r240880
            https://bugs.webkit.org/show_bug.cgi?id=193740
            <rdar://problem/47527267>

            * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
            (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240880. rdar://problem/47774545

    REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
    https://bugs.webkit.org/show_bug.cgi?id=193740
    <rdar://problem/47527267>
    
    Reviewed by Alex Christensen.
    
    Source/WebCore:
    
    * loader/DocumentLoader.cpp:
    (WebCore::DocumentLoader::willSendRequest):
    (WebCore::DocumentLoader::continueAfterContentPolicy):
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::loadURL):
    (WebCore::FrameLoader::loadWithDocumentLoader):
    (WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
    * loader/FrameLoader.h:
    * loader/FrameLoaderTypes.h:
    * loader/PolicyChecker.cpp:
    (WebCore::PolicyChecker::checkNavigationPolicy):
    (WebCore::PolicyChecker::checkNewWindowPolicy):
    * loader/PolicyChecker.h:
    
    Source/WebKit:
    
    The issue was happening when the page is triggering a cross-site navigation while in the middle of parsing. This would cause us to
    start a new provisional load in a new process before the previous process sends the DidFinishLoadForFrame() IPC to the UIProcess.
    Getting such IPC after a provisional load has started would mess up our state machine and trip assertions.
    
    This patch restores non-PSON behavior which is that the previous load in the old process now gets stopped so that no DidFinishLoadForFrame()
    / DidFailLoadForFrame() gets sent. To achieve this behavior, I introduced a new "StopAllLoads" PolicyAction that we now send the old
    process when the load is continuing in a new process, instead of sending it "Ignore".
    
    * NetworkProcess/NetworkDataTaskBlob.cpp:
    (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
    * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
    (toNSURLSessionResponseDisposition):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240880 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-02-01  Chris Dumez  <cdumez@apple.com>

            REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
            https://bugs.webkit.org/show_bug.cgi?id=193740
            <rdar://problem/47527267>

            Reviewed by Alex Christensen.

            The issue was happening when the page is triggering a cross-site navigation while in the middle of parsing. This would cause us to
            start a new provisional load in a new process before the previous process sends the DidFinishLoadForFrame() IPC to the UIProcess.
            Getting such IPC after a provisional load has started would mess up our state machine and trip assertions.

            This patch restores non-PSON behavior which is that the previous load in the old process now gets stopped so that no DidFinishLoadForFrame()
            / DidFailLoadForFrame() gets sent. To achieve this behavior, I introduced a new "StopAllLoads" PolicyAction that we now send the old
            process when the load is continuing in a new process, instead of sending it "Ignore".

            * NetworkProcess/NetworkDataTaskBlob.cpp:
            (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
            * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
            (toNSURLSessionResponseDisposition):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240818. rdar://problem/47774549

    Page zoom level is lost after a process swap or a crash
    https://bugs.webkit.org/show_bug.cgi?id=194105
    <rdar://problem/47610781>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    Previously, when the client would call setPageAndTextZoomFactors() on the WebPageProxy,
    we would update the WebPageProxy's corresponding data members and send an IPC to the
    WebProcess to apply the zoom factors.
    
    The issue is that on process crash or process-swap, we never communicate those zoom factors
    to the new WebProcess. Even if the client were to call setPageAndTextZoomFactors() with
    the same factors again, it would be a no-op since the WebPageProxy's data members already
    reflect the expected values.
    
    To address the issue, pass both the page zoom and the text zoom factors to the WebProcess
    via WebPageCreationParameters. This way, there is no need to send an extra IPC and we're
    sure the WebPageProxy's factors are properly applied to the WebPage on WebContent process
    side upon creation (whether after a crash or a process swap).
    
    * Shared/WebPageCreationParameters.cpp:
    (WebKit::WebPageCreationParameters::encode const):
    (WebKit::WebPageCreationParameters::decode):
    * Shared/WebPageCreationParameters.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::creationParameters):
    * WebProcess/WebPage/WebPage.cpp:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:didCommitNavigation:]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240818 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-31  Chris Dumez  <cdumez@apple.com>

            Page zoom level is lost after a process swap or a crash
            https://bugs.webkit.org/show_bug.cgi?id=194105
            <rdar://problem/47610781>

            Reviewed by Alex Christensen.

            Previously, when the client would call setPageAndTextZoomFactors() on the WebPageProxy,
            we would update the WebPageProxy's corresponding data members and send an IPC to the
            WebProcess to apply the zoom factors.

            The issue is that on process crash or process-swap, we never communicate those zoom factors
            to the new WebProcess. Even if the client were to call setPageAndTextZoomFactors() with
            the same factors again, it would be a no-op since the WebPageProxy's data members already
            reflect the expected values.

            To address the issue, pass both the page zoom and the text zoom factors to the WebProcess
            via WebPageCreationParameters. This way, there is no need to send an extra IPC and we're
            sure the WebPageProxy's factors are properly applied to the WebPage on WebContent process
            side upon creation (whether after a crash or a process swap).

            * Shared/WebPageCreationParameters.cpp:
            (WebKit::WebPageCreationParameters::encode const):
            (WebKit::WebPageCreationParameters::decode):
            * Shared/WebPageCreationParameters.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::creationParameters):
            * WebProcess/WebPage/WebPage.cpp:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240803. rdar://problem/47774506

    Regression(PSON) Crash under WebProcessProxy::canTerminateChildProcess()
    https://bugs.webkit.org/show_bug.cgi?id=194094
    <rdar://problem/47580753>
    
    Reviewed by Ryosuke Niwa.
    
    If a SuspendedPageProxy gets destroyed while a WebPageProxy is waiting for its to finish to suspend,
    call the "failure to suspend" completion handler asynchronously instead of synchronouly to make sure
    the completion handler cannot try and use the suspended page proxy while it is being destroyed.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240803 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-31  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Crash under WebProcessProxy::canTerminateChildProcess()
            https://bugs.webkit.org/show_bug.cgi?id=194094
            <rdar://problem/47580753>

            Reviewed by Ryosuke Niwa.

            If a SuspendedPageProxy gets destroyed while a WebPageProxy is waiting for its to finish to suspend,
            call the "failure to suspend" completion handler asynchronously instead of synchronouly to make sure
            the completion handler cannot try and use the suspended page proxy while it is being destroyed.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240772. rdar://problem/47774490

    iOS: Crash in InteractiveUpdateHandler set by ViewGestureController::beginSwipeGesture
    https://bugs.webkit.org/show_bug.cgi?id=194083
    
    Reviewed by Tim Horton.
    
    We think this crash is a regression from r236966. Prior to r236966, we could only called
    removeSwipeSnapshot() only when m_provisionalOrSameDocumentLoadCallback was set but now
    we can call it either when m_snapshotRemovalTracker::start was called, or it had been reset.
    This can result in m_webPageProxyForBackForwardListForCurrentSwipe getting cleared before
    InteractiveUpdateHandler is called by UIGestureRecognizer, resulting in the crash.
    
    This patch tries to restore the behavior prior to r236966 by only invoking removeSwipeSnapshot()
    when SnapshotRemovalTracker has a valid removal callback set.
    
    Unfortunately no new tests since there is no reproducible test case, and neither API tests
    nor layout tests seem to have the capability to trigger swipe gestures via UIGestureRecognizer,
    which is required for this crash to occur. Notably, back-forward swipe tests I enabled in
    r240765 bypass UIKit and emulates the action instead.
    
    * UIProcess/Cocoa/ViewGestureController.cpp:
    (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
    * UIProcess/Cocoa/ViewGestureController.h:
    (WebKit::ViewGestureController::SnapshotRemovalTracker::hasRemovalCallback const):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240772 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-31  Ryosuke Niwa  <rniwa@webkit.org>

            iOS: Crash in InteractiveUpdateHandler set by ViewGestureController::beginSwipeGesture
            https://bugs.webkit.org/show_bug.cgi?id=194083

            Reviewed by Tim Horton.

            We think this crash is a regression from r236966. Prior to r236966, we could only called
            removeSwipeSnapshot() only when m_provisionalOrSameDocumentLoadCallback was set but now
            we can call it either when m_snapshotRemovalTracker::start was called, or it had been reset.
            This can result in m_webPageProxyForBackForwardListForCurrentSwipe getting cleared before
            InteractiveUpdateHandler is called by UIGestureRecognizer, resulting in the crash.

            This patch tries to restore the behavior prior to r236966 by only invoking removeSwipeSnapshot()
            when SnapshotRemovalTracker has a valid removal callback set.

            Unfortunately no new tests since there is no reproducible test case, and neither API tests
            nor layout tests seem to have the capability to trigger swipe gestures via UIGestureRecognizer,
            which is required for this crash to occur. Notably, back-forward swipe tests I enabled in
            r240765 bypass UIKit and emulates the action instead.

            * UIProcess/Cocoa/ViewGestureController.cpp:
            (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
            * UIProcess/Cocoa/ViewGestureController.h:
            (WebKit::ViewGestureController::SnapshotRemovalTracker::hasRemovalCallback const):

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240757. rdar://problem/47774493

    [iOS] REGRESSION (r238635): Text area fails to re-focus after dismissal of keyboard on support.apple.com
    https://bugs.webkit.org/show_bug.cgi?id=193987
    <rdar://problem/47230785>
    
    Reviewed by Tim Horton.
    
    It is unnecessary to relinquish first responder status when a user explicitly dismissing
    the keyboard. Moreover, doing so prevents key commands from being intercepted when a
    hardware keyboard is subsequently attached.
    
    Following r238635 a page becomes focused (accepting of keyboard input) and defocused
    when the WKContentView becomes first responder and resigns first responder, respectively.
    When a user explicitly dismisses the keyboard by tapping Done (iPhone) or the hide keyboard
    button (iPad) then UIKit tells WKContentView to resign its first responder status only
    to make its superview, WKWebView, first responder. When a person subsequently taps on the
    page again, the WKContentView requests to become the first responder. However changes to
    page focus are not guaranteed to be sent to the WebProcess immediately (WebPageProxy::activityStateDidChange()
    will schedule an update). In particular, they are not guaranteed to be sent before the
    WebProcess is told about a tap. Therefore, the WebProcess has out-of-date information on
    focus state of the page. Instead we should detect when WKWebView is being asked to resign
    as a result of the keyboard dismissal and refuse the request, taking care to end the current
    editing session, blur the focused element, and dismiss the on-screen keyboard.
    
    * Platform/spi/ios/UIKitSPI.h: Expose some SPI.
    * UIProcess/ios/WKContentViewInteraction.h:
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView setupInteraction]): Register to receive notifications whenever a user
    explicitly dismisses the keyboard.
    (-[WKContentView resignFirstResponderForWebView]): If we are being asked to resign as a
    result of a user explicitly dismissing the keyboard then refuse to resign.
    (-[WKContentView _keyboardDidRequestDismissal:]): Update state, if applicable.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240757 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-30  Daniel Bates  <dabates@apple.com>

            [iOS] REGRESSION (r238635): Text area fails to re-focus after dismissal of keyboard on support.apple.com
            https://bugs.webkit.org/show_bug.cgi?id=193987
            <rdar://problem/47230785>

            Reviewed by Tim Horton.

            It is unnecessary to relinquish first responder status when a user explicitly dismissing
            the keyboard. Moreover, doing so prevents key commands from being intercepted when a
            hardware keyboard is subsequently attached.

            Following r238635 a page becomes focused (accepting of keyboard input) and defocused
            when the WKContentView becomes first responder and resigns first responder, respectively.
            When a user explicitly dismisses the keyboard by tapping Done (iPhone) or the hide keyboard
            button (iPad) then UIKit tells WKContentView to resign its first responder status only
            to make its superview, WKWebView, first responder. When a person subsequently taps on the
            page again, the WKContentView requests to become the first responder. However changes to
            page focus are not guaranteed to be sent to the WebProcess immediately (WebPageProxy::activityStateDidChange()
            will schedule an update). In particular, they are not guaranteed to be sent before the
            WebProcess is told about a tap. Therefore, the WebProcess has out-of-date information on
            focus state of the page. Instead we should detect when WKWebView is being asked to resign
            as a result of the keyboard dismissal and refuse the request, taking care to end the current
            editing session, blur the focused element, and dismiss the on-screen keyboard.

            * Platform/spi/ios/UIKitSPI.h: Expose some SPI.
            * UIProcess/ios/WKContentViewInteraction.h:
            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView setupInteraction]): Register to receive notifications whenever a user
            explicitly dismisses the keyboard.
            (-[WKContentView resignFirstResponderForWebView]): If we are being asked to resign as a
            result of a user explicitly dismissing the keyboard then refuse to resign.
            (-[WKContentView _keyboardDidRequestDismissal:]): Update state, if applicable.

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240725. rdar://problem/47774554

    Regression(PSON) Load hang can occur on history navigation
    https://bugs.webkit.org/show_bug.cgi?id=194030
    <rdar://problem/47656939>
    
    Reviewed by Antti Koivisto.
    
    Source/WebKit:
    
    We do not support having more than one WebPage in a WebProcess with the same page ID. As a result,
    if we decide to reuse an existing process on process-swap, we need to make sure that we either use
    its suspended page (when possible, meaning that it is for the right HistoryItem / page) or we need
    make sure we drop the existing suspended page for this process / pagePID combination, so that the
    WebPage on WebProcess side gets closed before we attempt to do the new load.
    
    We were doing this correctly in 2 places in WebProcessPool::processForNavigationInternal() but failed
    to do so in a third place, when doing back to a HistoryItem which does not have a SuspendedPage but
    whose process is still alive (presumably because it is kept alive by another suspended page). This
    patch fixes this third place to remove any suspended page in the process for the current page before
    reusing the process. An assertion was also added to the call site in
    WebPageProxy::receivedNavigationPolicyDecision() to make sure we catch this more easily in the
    future.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::processForNavigationInternal):
    (WebKit::WebProcessPool::removeAllSuspendedPagesForPage):
    (WebKit::WebProcessPool::hasSuspendedPageFor const):
    * UIProcess/WebProcessPool.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240725 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-30  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Load hang can occur on history navigation
            https://bugs.webkit.org/show_bug.cgi?id=194030
            <rdar://problem/47656939>

            Reviewed by Antti Koivisto.

            We do not support having more than one WebPage in a WebProcess with the same page ID. As a result,
            if we decide to reuse an existing process on process-swap, we need to make sure that we either use
            its suspended page (when possible, meaning that it is for the right HistoryItem / page) or we need
            make sure we drop the existing suspended page for this process / pagePID combination, so that the
            WebPage on WebProcess side gets closed before we attempt to do the new load.

            We were doing this correctly in 2 places in WebProcessPool::processForNavigationInternal() but failed
            to do so in a third place, when doing back to a HistoryItem which does not have a SuspendedPage but
            whose process is still alive (presumably because it is kept alive by another suspended page). This
            patch fixes this third place to remove any suspended page in the process for the current page before
            reusing the process. An assertion was also added to the call site in
            WebPageProxy::receivedNavigationPolicyDecision() to make sure we catch this more easily in the
            future.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::processForNavigationInternal):
            (WebKit::WebProcessPool::removeAllSuspendedPagesForPage):
            (WebKit::WebProcessPool::hasSuspendedPageFor const):
            * UIProcess/WebProcessPool.h:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240717. rdar://problem/47774504

    Crash in WebKit::RemoteLayerTreePropertyApplier::updateChildren
    https://bugs.webkit.org/show_bug.cgi?id=193897
    <rdar://problem/47427750>
    
    Reviewed by Simon Fraser.
    
    There has been some null pointer crashes where we fail to find a remote layer tree node that matches
    the transaction properties.
    
    * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
    (WebKit::RemoteLayerTreePropertyApplier::updateChildren):
    
    Null check the nodes.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240717 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-30  Antti Koivisto  <antti@apple.com>

            Crash in WebKit::RemoteLayerTreePropertyApplier::updateChildren
            https://bugs.webkit.org/show_bug.cgi?id=193897
            <rdar://problem/47427750>

            Reviewed by Simon Fraser.

            There has been some null pointer crashes where we fail to find a remote layer tree node that matches
            the transaction properties.

            * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
            (WebKit::RemoteLayerTreePropertyApplier::updateChildren):

            Null check the nodes.

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240702. rdar://problem/47774503

    iOS: Nullptr crash in WebPage::getPositionInformation dereferencing an input element for data list
    https://bugs.webkit.org/show_bug.cgi?id=193996
    
    Reviewed by Wenson Hsieh.
    
    Added a missing nullptr check.
    
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::getPositionInformation):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240702 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Ryosuke Niwa  <rniwa@webkit.org>

            iOS: Nullptr crash in WebPage::getPositionInformation dereferencing an input element for data list
            https://bugs.webkit.org/show_bug.cgi?id=193996

            Reviewed by Wenson Hsieh.

            Added a missing nullptr check.

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

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240675. rdar://problem/47776350

    Regression (r240046): [PSON] Spurious changes to [WKWebView url] and [WKWebView loading] after [WKWebView loadRequest]
    https://bugs.webkit.org/show_bug.cgi?id=193967
    <rdar://problem/47635348>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    Update WebPageProxy::receivedPolicyDecision() to no longer clear the pending URL when we send PolicyAction::Ignore to
    the old process when the load is continuing in a new process due to PSON.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    (WebKit::WebPageProxy::receivedPolicyDecision):
    * UIProcess/WebPageProxy.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONLoadingObserver observeValueForKeyPath:ofObject:change:context:]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240675 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Chris Dumez  <cdumez@apple.com>

            Regression (r240046): [PSON] Spurious changes to [WKWebView url] and [WKWebView loading] after [WKWebView loadRequest]
            https://bugs.webkit.org/show_bug.cgi?id=193967
            <rdar://problem/47635348>

            Reviewed by Alex Christensen.

            Update WebPageProxy::receivedPolicyDecision() to no longer clear the pending URL when we send PolicyAction::Ignore to
            the old process when the load is continuing in a new process due to PSON.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            (WebKit::WebPageProxy::receivedPolicyDecision):
            * UIProcess/WebPageProxy.h:

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240663. rdar://problem/47774492

    REGRESSION (PSON): Flash on link navigation on Mac
    https://bugs.webkit.org/show_bug.cgi?id=193961
    <rdar://problem/47482507>
    
    Reviewed by Chris Dumez.
    
    The target page sends EnterAcceleratedCompositingMode message too early, before we have a valid layer tree.
    
    * WebProcess/WebPage/DrawingArea.h:
    (WebKit::DrawingArea::attach): Deleted.
    
    Not needed anymore.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::reinitializeWebPage):
    (WebKit::WebPage::didCompletePageTransition):
    (WebKit::m_shouldAttachDrawingAreaOnPageTransition): Deleted.
    
    Move message sending logic fully to TiledCoreAnimationDrawingArea.
    Unfreezing the layer tree is sufficient to trigger the message.
    
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    
    There is no need to treat process swap case differently.
    
    (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):
    
    Send this after the first successful layer flush with the root layer set.
    
    (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
    (WebKit::TiledCoreAnimationDrawingArea::attach): Deleted.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240663 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Antti Koivisto  <antti@apple.com>

            REGRESSION (PSON): Flash on link navigation on Mac
            https://bugs.webkit.org/show_bug.cgi?id=193961
            <rdar://problem/47482507>

            Reviewed by Chris Dumez.

            The target page sends EnterAcceleratedCompositingMode message too early, before we have a valid layer tree.

            * WebProcess/WebPage/DrawingArea.h:
            (WebKit::DrawingArea::attach): Deleted.

            Not needed anymore.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::reinitializeWebPage):
            (WebKit::WebPage::didCompletePageTransition):
            (WebKit::m_shouldAttachDrawingAreaOnPageTransition): Deleted.

            Move message sending logic fully to TiledCoreAnimationDrawingArea.
            Unfreezing the layer tree is sufficient to trigger the message.

            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

            There is no need to treat process swap case differently.

            (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):

            Send this after the first successful layer flush with the root layer set.

            (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
            (WebKit::TiledCoreAnimationDrawingArea::attach): Deleted.

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240660. rdar://problem/47774552

    REGRESSION (PSON): Twitter link gets stuck at t.co after navigating back in tab
    https://bugs.webkit.org/show_bug.cgi?id=193932
    <rdar://problem/47598947>
    
    Reviewed by Brady Eidson.
    
    Source/WebKit:
    
    When doing a client side redirect from origin A to origin B, we would swap process and
    create a SuspendedPageProxy and save it on the source BackForwardListItem. The issue is
    that the BackForwardList is locked for such redirect so we end up updating the current
    BackForwardListItem with origin B's URL while origin A's suspended page remained on
    the item. When going to another URL in the same origin A, we would not create a suspended
    page since no process-swap would occur. When pressing the back button, we would go back
    to the previous BackForwardListItem and use its SuspendedPageProxy, which is for the
    wrong URL (The pre-client redirect one).
    
    To address the issue, we no longer create a SuspendedPageProxy for cross-site client side
    redirects. There will be no way no go back to this suspended page anyway since the
    back/forward list item will be updated with the redirection URL.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240660 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Chris Dumez  <cdumez@apple.com>

            REGRESSION (PSON): Twitter link gets stuck at t.co after navigating back in tab
            https://bugs.webkit.org/show_bug.cgi?id=193932
            <rdar://problem/47598947>

            Reviewed by Brady Eidson.

            When doing a client side redirect from origin A to origin B, we would swap process and
            create a SuspendedPageProxy and save it on the source BackForwardListItem. The issue is
            that the BackForwardList is locked for such redirect so we end up updating the current
            BackForwardListItem with origin B's URL while origin A's suspended page remained on
            the item. When going to another URL in the same origin A, we would not create a suspended
            page since no process-swap would occur. When pressing the back button, we would go back
            to the previous BackForwardListItem and use its SuspendedPageProxy, which is for the
            wrong URL (The pre-client redirect one).

            To address the issue, we no longer create a SuspendedPageProxy for cross-site client side
            redirects. There will be no way no go back to this suspended page anyway since the
            back/forward list item will be updated with the redirection URL.

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

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239895. rdar://problem/47776475

    Allow WebContent process access to some drawing-related IOKit properties
    https://bugs.webkit.org/show_bug.cgi?id=193086
    <rdar://problem/46568088>
    
    Reviewed by Eric Carlson.
    
    Add one missing IOKit property, and revise the regexp used for another.
    
    * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239895 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-11  Brent Fulgham  <bfulgham@apple.com>

            Allow WebContent process access to some drawing-related IOKit properties
            https://bugs.webkit.org/show_bug.cgi?id=193086
            <rdar://problem/46568088>

            Reviewed by Eric Carlson.

            Add one missing IOKit property, and revise the regexp used for another.

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

2019-02-05  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239881. rdar://problem/47776480

    [iOS] Precision drop state thrashes when dragging near the top edge of an editable element
    https://bugs.webkit.org/show_bug.cgi?id=193364
    <rdar://problem/47214117>
    
    Reviewed by Tim Horton.
    
    Source/WebCore:
    
    Add a new helper method on DragCaretController to compute the bounds of the editable element around the drop
    caret position. This is either the enclosing form control (in the case of text fields and text areas), or the
    highest editable root. See WebKit ChangeLog for more details.
    
    Test: DragAndDropTests.AvoidPreciseDropNearTopOfTextArea
    
    * editing/FrameSelection.cpp:
    (WebCore::DragCaretController::editableElementRectInRootViewCoordinates const):
    * editing/FrameSelection.h:
    
    Source/WebKit:
    
    On iOS, marking a UIDropProposal as precise offsets the hit-testing location of the drop by a small distance
    either upwards or downwards from the actual location of the user's finger. When dragging over an editable
    element, WebKit currently marks the drop proposal as precise; however, when dragging over the top edge of an
    editable element, what happens is that the hit-testing location is offset to a location outside of the editable
    element, which causes us to turn off precision drop mode; subsequently, turning off precision drop mode removes
    the offset, which causes us to hit-test within the editable element once again and re-enable precision mode, and
    the cycle continues.
    
    In order to mitigate this, bail out of precision drop mode when dragging near the top or bottom edges of the
    highest editable root that contains the current drop caret position (or, if the drop caret is inside of a text
    form control, use the form control as the editable element instead).
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didPerformDragControllerAction):
    * UIProcess/WebPageProxy.h:
    (WebKit::WebPageProxy::currentDragCaretEditableElementRect const):
    * UIProcess/WebPageProxy.messages.in:
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView dropInteraction:sessionDidUpdate:]):
    
    Avoid precise mode when we're less than 25pt away from the top and bottom edge of the editable element rect.
    Since the drag location offset amount is a fixed offset in window coordinates, we first convert this minimum
    distance to the content view's coordinate space by dividing by the content scale factor.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::performDragControllerAction):
    
    Tools:
    
    Add a test to verify that dragging near the top of a textarea element does not flag the drop proposal as
    precise, whereas dragging near the middle of the textarea does.
    
    * TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:
    (TestWebKitAPI::TEST):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-11  Wenson Hsieh  <wenson_hsieh@apple.com>

            [iOS] Precision drop state thrashes when dragging near the top edge of an editable element
            https://bugs.webkit.org/show_bug.cgi?id=193364
            <rdar://problem/47214117>

            Reviewed by Tim Horton.

            On iOS, marking a UIDropProposal as precise offsets the hit-testing location of the drop by a small distance
            either upwards or downwards from the actual location of the user's finger. When dragging over an editable
            element, WebKit currently marks the drop proposal as precise; however, when dragging over the top edge of an
            editable element, what happens is that the hit-testing location is offset to a location outside of the editable
            element, which causes us to turn off precision drop mode; subsequently, turning off precision drop mode removes
            the offset, which causes us to hit-test within the editable element once again and re-enable precision mode, and
            the cycle continues.

            In order to mitigate this, bail out of precision drop mode when dragging near the top or bottom edges of the
            highest editable root that contains the current drop caret position (or, if the drop caret is inside of a text
            form control, use the form control as the editable element instead).

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::didPerformDragControllerAction):
            * UIProcess/WebPageProxy.h:
            (WebKit::WebPageProxy::currentDragCaretEditableElementRect const):
            * UIProcess/WebPageProxy.messages.in:
            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView dropInteraction:sessionDidUpdate:]):

            Avoid precise mode when we're less than 25pt away from the top and bottom edge of the editable element rect.
            Since the drag location offset amount is a fixed offset in window coordinates, we first convert this minimum
            distance to the content view's coordinate space by dividing by the content scale factor.

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

2019-02-05  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/47774509

    fix-194106

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

            Add an API test to cover UIClient checkUserMediaPermissionForOrigin being nullptr
            https://bugs.webkit.org/show_bug.cgi?id=194106
            <rdar://problem/47676333>

            Make sure handler is not called after being moved.

            * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
            (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):

2019-01-30  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240633. rdar://problem/47682687

    [watchOS] Enable Parental Controls content filtering
    https://bugs.webkit.org/show_bug.cgi?id=193939
    <rdar://problem/46641912>
    
    Reviewed by Ryosuke Niwa.
    
    Source/JavaScriptCore:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebCore:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebCore/PAL:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebKit:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebKitLegacy/mac:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WTF:
    
    * wtf/Platform.h:
    
    Tools:
    
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240633 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-28  Andy Estes  <aestes@apple.com>

            [watchOS] Enable Parental Controls content filtering
            https://bugs.webkit.org/show_bug.cgi?id=193939
            <rdar://problem/46641912>

            Reviewed by Ryosuke Niwa.

            * Configurations/FeatureDefines.xcconfig:

2019-01-30  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240729. rdar://problem/47685553

    Ensure image picker sourceType is set before cameraDevice
    https://bugs.webkit.org/show_bug.cgi?id=193998
    
    Reviewed by Beth Dakin.
    
    * UIProcess/ios/forms/WKFileUploadPanel.mm:
    (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240729 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Conrad Shultz  <conrad_shultz@apple.com>

            Ensure image picker sourceType is set before cameraDevice
            https://bugs.webkit.org/show_bug.cgi?id=193998

            Reviewed by Beth Dakin.

            * UIProcess/ios/forms/WKFileUploadPanel.mm:
            (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):

2019-01-30  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240578. rdar://problem/47685372

    WebUserContentController::removeUserScriptMessageHandlerInternal may deref and delete itself
    https://bugs.webkit.org/show_bug.cgi?id=193901
    <rdar://problem/47338669>
    
    Reviewed by David Kilzer.
    
    Don't know how to repro.
    
    * WebProcess/UserContent/WebUserContentController.cpp:
    (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
    
    Calling userMessageHandlers.removeFirstMatching() may remove the last ref to this
    (because WebUserMessageHandlerDescriptorProxy refs WebUserContentController).
    Fix by protecting this over the function.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240578 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-28  Antti Koivisto  <antti@apple.com>

            WebUserContentController::removeUserScriptMessageHandlerInternal may deref and delete itself
            https://bugs.webkit.org/show_bug.cgi?id=193901
            <rdar://problem/47338669>

            Reviewed by David Kilzer.

            Don't know how to repro.

            * WebProcess/UserContent/WebUserContentController.cpp:
            (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):

            Calling userMessageHandlers.removeFirstMatching() may remove the last ref to this
            (because WebUserMessageHandlerDescriptorProxy refs WebUserContentController).
            Fix by protecting this over the function.

2019-01-30  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240733. rdar://problem/47683434

    [macOS] Sandbox fails to compile on 10.12
    https://bugs.webkit.org/show_bug.cgi?id=194035
    <rdar://problem/47651260>
    
    Reviewed by Brent Fulgham.
    
    This was caused by the commit <https://trac.webkit.org/changeset/239994>, which is only valid for
    10.14 and later.
    
    * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
    * WebProcess/com.apple.WebProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240733 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-30  Per Arne Vollan  <pvollan@apple.com>

            [macOS] Sandbox fails to compile on 10.12
            https://bugs.webkit.org/show_bug.cgi?id=194035
            <rdar://problem/47651260>

            Reviewed by Brent Fulgham.

            This was caused by the commit <https://trac.webkit.org/changeset/239994>, which is only valid for
            10.14 and later.

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

2019-01-29  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240659. rdar://problem/47639406

    Regression(r240046) VoiceOver is no longer working after a process swap
    https://bugs.webkit.org/show_bug.cgi?id=193953
    <rdar://problem/47612398>
    
    Reviewed by Alex Christensen.
    
    ProvisionalPageProxy used to forward the RegisterWebProcessAccessibilityToken IPC from
    the provisional WebProcess to the WebPageProxy right away. This in turn would notify
    the PageClient whose logic would rely on WebPageProxy::process(), which returns the
    committed process instead of the provisional one.
    
    To address the issue, the ProvisionalPageProxy now stores the token sent by the
    provisional WebProcess and we only call registerWebProcessAccessibilityToken()
    on the WebPageProxy *after* we've swapped to the provisional process.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::registerWebProcessAccessibilityToken):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    * UIProcess/ProvisionalPageProxy.h:
    (WebKit::ProvisionalPageProxy::takeAccessibilityToken):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::commitProvisionalPage):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240659 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-29  Chris Dumez  <cdumez@apple.com>

            Regression(r240046) VoiceOver is no longer working after a process swap
            https://bugs.webkit.org/show_bug.cgi?id=193953
            <rdar://problem/47612398>

            Reviewed by Alex Christensen.

            ProvisionalPageProxy used to forward the RegisterWebProcessAccessibilityToken IPC from
            the provisional WebProcess to the WebPageProxy right away. This in turn would notify
            the PageClient whose logic would rely on WebPageProxy::process(), which returns the
            committed process instead of the provisional one.

            To address the issue, the ProvisionalPageProxy now stores the token sent by the
            provisional WebProcess and we only call registerWebProcessAccessibilityToken()
            on the WebPageProxy *after* we've swapped to the provisional process.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::registerWebProcessAccessibilityToken):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            * UIProcess/ProvisionalPageProxy.h:
            (WebKit::ProvisionalPageProxy::takeAccessibilityToken):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::commitProvisionalPage):

2019-01-28  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240599. rdar://problem/47609799

    Regression(PSON) Crash under WebPageProxy::didStartProgress()
    https://bugs.webkit.org/show_bug.cgi?id=193915
    <rdar://problem/47560907>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::close):
    Make sure we destroy the ProvisionalPageProxy if the page gets closed as we do not want to keep receiving
    IPC after this or even worse, commit the provisional page.
    
    (WebKit::WebPageProxy::didStartProgress):
    Add an assertion in didStartProgress() to make sure we do not receive this IPC after the page has been
    closed.
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240599 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-28  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Crash under WebPageProxy::didStartProgress()
            https://bugs.webkit.org/show_bug.cgi?id=193915
            <rdar://problem/47560907>

            Reviewed by Alex Christensen.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::close):
            Make sure we destroy the ProvisionalPageProxy if the page gets closed as we do not want to keep receiving
            IPC after this or even worse, commit the provisional page.

            (WebKit::WebPageProxy::didStartProgress):
            Add an assertion in didStartProgress() to make sure we do not receive this IPC after the page has been
            closed.

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240516. rdar://problem/47586889

    Add SPI to inform an application that "Go Back" has been clicked from a safe browsing warning
    https://bugs.webkit.org/show_bug.cgi?id=193802
    <rdar://problem/46010580>
    
    Reviewed by Andy Estes.
    
    Source/WebKit:
    
    * UIProcess/API/APIUIClient.h:
    (API::UIClient::didClickGoBackFromSafeBrowsingWarning):
    * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
    * UIProcess/Cocoa/UIDelegate.h:
    * UIProcess/Cocoa/UIDelegate.mm:
    (WebKit::UIDelegate::setDelegate):
    (WebKit::UIDelegate::UIClient::didClickGoBackFromSafeBrowsingWarning):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
    (-[SafeBrowsingNavigationDelegate _webViewDidClickGoBackFromSafeBrowsingWarning:]):
    (TEST):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240516 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Add SPI to inform an application that "Go Back" has been clicked from a safe browsing warning
            https://bugs.webkit.org/show_bug.cgi?id=193802
            <rdar://problem/46010580>

            Reviewed by Andy Estes.

            * UIProcess/API/APIUIClient.h:
            (API::UIClient::didClickGoBackFromSafeBrowsingWarning):
            * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
            * UIProcess/Cocoa/UIDelegate.h:
            * UIProcess/Cocoa/UIDelegate.mm:
            (WebKit::UIDelegate::setDelegate):
            (WebKit::UIDelegate::UIClient::didClickGoBackFromSafeBrowsingWarning):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240533. rdar://problem/47586823

    REGRESSION: Some USDz from 3rd party websites don't go directly to AR QL
    https://bugs.webkit.org/show_bug.cgi?id=193831
    <rdar://problem/47399263>
    
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    A System Preview (<a rel="ar">) displays in a modal and doesn't trigger
    a navigation. If the link was cross origin, it was causing a process swap,
    which meant that the response defaulted back to a navigation.
    
    The fix is to not cause a PSON when the navigation is a system preview.
    
    * UIProcess/API/APINavigation.h:
    (API::Navigation::shouldForceDownload const): This is now just tracking
    the "download" attribute, and not including System Preview.
    (API::Navigation::isSystemPreview const): New method to check for a
    navigation triggered as a System Preview.
    * UIProcess/WebPageProxy.cpp: Move the code from receivedPolicyDecision to
    receivedNavigationPolicyDecision, so that downloads and System Previews are
    detected before we decide to change process.
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    (WebKit::WebPageProxy::receivedPolicyDecision):
    
    Tools:
    
    Two new tests that exercise cross-origin and same-origin System
    Previews.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240533 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Dean Jackson  <dino@apple.com>

            REGRESSION: Some USDz from 3rd party websites don't go directly to AR QL
            https://bugs.webkit.org/show_bug.cgi?id=193831
            <rdar://problem/47399263>

            Reviewed by Chris Dumez.

            A System Preview (<a rel="ar">) displays in a modal and doesn't trigger
            a navigation. If the link was cross origin, it was causing a process swap,
            which meant that the response defaulted back to a navigation.

            The fix is to not cause a PSON when the navigation is a system preview.

            * UIProcess/API/APINavigation.h:
            (API::Navigation::shouldForceDownload const): This is now just tracking
            the "download" attribute, and not including System Preview.
            (API::Navigation::isSystemPreview const): New method to check for a
            navigation triggered as a System Preview.
            * UIProcess/WebPageProxy.cpp: Move the code from receivedPolicyDecision to
            receivedNavigationPolicyDecision, so that downloads and System Previews are
            detected before we decide to change process.
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            (WebKit::WebPageProxy::receivedPolicyDecision):

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240484. rdar://problem/47591281

    Drop WebKit::WebKitPolicyAction type as it is no longer needed
    https://bugs.webkit.org/show_bug.cgi?id=193827
    
    Reviewed by Antti Koivisto.
    
    Drop WebKit::WebKitPolicyAction type as it is no longer needed. It is now identical to
    WebCore::PolicyAction.
    
    * Shared/WebPolicyAction.h: Removed.
    * UIProcess/WebFramePolicyListenerProxy.cpp:
    (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
    (WebKit::WebFramePolicyListenerProxy::use):
    (WebKit::WebFramePolicyListenerProxy::download):
    (WebKit::WebFramePolicyListenerProxy::ignore):
    * UIProcess/WebFramePolicyListenerProxy.h:
    * UIProcess/WebFrameProxy.cpp:
    (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
    * UIProcess/WebFrameProxy.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    (WebKit::WebPageProxy::receivedPolicyDecision):
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
    (WebKit::WebPageProxy::decidePolicyForResponseShared):
    * UIProcess/WebPageProxy.h:
    * WebKit.xcodeproj/project.pbxproj:
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
    (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::WebFrame::didReceivePolicyDecision):
    (WebKit::toPolicyAction): Deleted.
    * WebProcess/WebPage/WebFrame.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::didReceivePolicyDecision):
    * WebProcess/WebPage/WebPage.h:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240484 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Chris Dumez  <cdumez@apple.com>

            Drop WebKit::WebKitPolicyAction type as it is no longer needed
            https://bugs.webkit.org/show_bug.cgi?id=193827

            Reviewed by Antti Koivisto.

            Drop WebKit::WebKitPolicyAction type as it is no longer needed. It is now identical to
            WebCore::PolicyAction.

            * Shared/WebPolicyAction.h: Removed.
            * UIProcess/WebFramePolicyListenerProxy.cpp:
            (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
            (WebKit::WebFramePolicyListenerProxy::use):
            (WebKit::WebFramePolicyListenerProxy::download):
            (WebKit::WebFramePolicyListenerProxy::ignore):
            * UIProcess/WebFramePolicyListenerProxy.h:
            * UIProcess/WebFrameProxy.cpp:
            (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
            * UIProcess/WebFrameProxy.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            (WebKit::WebPageProxy::receivedPolicyDecision):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            * UIProcess/WebPageProxy.h:
            * WebKit.xcodeproj/project.pbxproj:
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
            (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
            * WebProcess/WebPage/WebFrame.cpp:
            (WebKit::WebFrame::didReceivePolicyDecision):
            (WebKit::toPolicyAction): Deleted.
            * WebProcess/WebPage/WebFrame.h:
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::didReceivePolicyDecision):
            * WebProcess/WebPage/WebPage.h:

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240542. rdar://problem/47586850

    REGRESSION (r238818): Snapshot is removed too late after swiping back on Twitter
    https://bugs.webkit.org/show_bug.cgi?id=193860
    <rdar://problem/47535022>
    
    Reviewed by Antti Koivisto.
    
    * UIProcess/Cocoa/ViewGestureController.cpp:
    (WebKit::ViewGestureController::didStartProvisionalOrSameDocumentLoadForMainFrame):
    (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
    (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
    * UIProcess/Cocoa/ViewGestureController.h:
    Treat provisional load and same document load the same: they already both
    unpause the snapshot removal tracker, request render tree size notifications,
    but same-document navigation was missing the call to dispatchAfterEnsuringDrawing
    and thus would get stuck waiting for RepaintAfterNavigation.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240542 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            REGRESSION (r238818): Snapshot is removed too late after swiping back on Twitter
            https://bugs.webkit.org/show_bug.cgi?id=193860
            <rdar://problem/47535022>

            Reviewed by Antti Koivisto.

            * UIProcess/Cocoa/ViewGestureController.cpp:
            (WebKit::ViewGestureController::didStartProvisionalOrSameDocumentLoadForMainFrame):
            (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
            (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
            * UIProcess/Cocoa/ViewGestureController.h:
            Treat provisional load and same document load the same: they already both
            unpause the snapshot removal tracker, request render tree size notifications,
            but same-document navigation was missing the call to dispatchAfterEnsuringDrawing
            and thus would get stuck waiting for RepaintAfterNavigation.

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240497. rdar://problem/47586863

    iOS: inputmode="none" disables hardware keyboard's globe key
    https://bugs.webkit.org/show_bug.cgi?id=193811
    <rdar://problem/47406553>
    
    Reviewed by Wenson Hsieh.
    
    Source/WebKit:
    
    Removed the support for inputmode="none" for now since we need a new SPI from UIKit
    to properly implement this feature some time in the future.
    
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView _zoomToRevealFocusedElement]):
    (-[WKContentView inputView]):
    (-[WKContentView requiresAccessoryView]):
    (-[WKContentView textInputTraits]):
    
    LayoutTests:
    
    Updated and renamed the test expecting the keyboard to update upon inputmode content attribute changed
    to use inputmode="decimal" instead of inputmode="none", and updated another test to expect inputmode="none"
    has no effect instead of hiding the keyboard.
    
    * fast/forms/ios/inputmode-change-update-keyboard-expected.txt: Renamed from inputmode-none-removed-expected.txt.
    * fast/forms/ios/inputmode-change-update-keyboard.html: Renamed from inputmode-none-removed.html.
    * fast/forms/ios/inputmode-none-expected.txt:
    * fast/forms/ios/inputmode-none.html:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240497 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Ryosuke Niwa  <rniwa@webkit.org>

            iOS: inputmode="none" disables hardware keyboard's globe key
            https://bugs.webkit.org/show_bug.cgi?id=193811
            <rdar://problem/47406553>

            Reviewed by Wenson Hsieh.

            Removed the support for inputmode="none" for now since we need a new SPI from UIKit
            to properly implement this feature some time in the future.

            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView _zoomToRevealFocusedElement]):
            (-[WKContentView inputView]):
            (-[WKContentView requiresAccessoryView]):
            (-[WKContentView textInputTraits]):

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240493. rdar://problem/47586905

    REGRESSION (PSON): After swipe back, first few attempts to swipe forward not recognized as swipe gestures
    https://bugs.webkit.org/show_bug.cgi?id=193818
    <rdar://problem/47456584>
    
    Reviewed by Tim Horton.
    
    We don't hit the RenderTreeSizeThreshold milestone to remove the snapshot and allow interaction because we request it
    from a wrong process (the one we are leaving behind).
    
    * UIProcess/Cocoa/ViewGestureController.cpp:
    (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
    
    Request the RenderTreeSizeThreshold notification when the load has started and we know the process to use.
    
    (WebKit::ViewGestureController::SnapshotRemovalTracker::hasOutstandingEvent):
    * UIProcess/Cocoa/ViewGestureController.h:
    (WebKit::ViewGestureController::SnapshotRemovalTracker::renderTreeSizeThreshold const):
    (WebKit::ViewGestureController::SnapshotRemovalTracker::setRenderTreeSizeThreshold):
    * UIProcess/mac/ViewGestureControllerMac.mm:
    (WebKit::ViewGestureController::endSwipeGesture):
    
    Don't request immediately, save the threshold to SnapshotRemovalTracker.
    
    (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):
    
    Do the request to the right process.
    
    * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
    (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold):
    
    Ensure we send the notification even if we reached the threshold before it was requested.
    
    (WebKit::ViewGestureGeometryCollector::sendDidHitRenderTreeSizeThresholdIfNeeded):
    (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
    * WebProcess/WebPage/ViewGestureGeometryCollector.h:
    (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold): Deleted.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240493 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Antti Koivisto  <antti@apple.com>

            REGRESSION (PSON): After swipe back, first few attempts to swipe forward not recognized as swipe gestures
            https://bugs.webkit.org/show_bug.cgi?id=193818
            <rdar://problem/47456584>

            Reviewed by Tim Horton.

            We don't hit the RenderTreeSizeThreshold milestone to remove the snapshot and allow interaction because we request it
            from a wrong process (the one we are leaving behind).

            * UIProcess/Cocoa/ViewGestureController.cpp:
            (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):

            Request the RenderTreeSizeThreshold notification when the load has started and we know the process to use.

            (WebKit::ViewGestureController::SnapshotRemovalTracker::hasOutstandingEvent):
            * UIProcess/Cocoa/ViewGestureController.h:
            (WebKit::ViewGestureController::SnapshotRemovalTracker::renderTreeSizeThreshold const):
            (WebKit::ViewGestureController::SnapshotRemovalTracker::setRenderTreeSizeThreshold):
            * UIProcess/mac/ViewGestureControllerMac.mm:
            (WebKit::ViewGestureController::endSwipeGesture):

            Don't request immediately, save the threshold to SnapshotRemovalTracker.

            (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):

            Do the request to the right process.

            * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
            (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold):

            Ensure we send the notification even if we reached the threshold before it was requested.

            (WebKit::ViewGestureGeometryCollector::sendDidHitRenderTreeSizeThresholdIfNeeded):
            (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
            * WebProcess/WebPage/ViewGestureGeometryCollector.h:
            (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold): Deleted.

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240490. rdar://problem/47586864

    WKWebView.goBack should reload if there is a safe browsing warning
    https://bugs.webkit.org/show_bug.cgi?id=193805
    <rdar://problem/46908216>
    
    Reviewed by Geoff Garen.
    
    Source/WebKit:
    
    If a WKWebView is showing a safe browsing warning and the user clicks a back button
    in the app which calls WKWebView.goBack, the WKWebView is in a state where it has not navigated yet,
    so actually going back will appear to the user to go back twice.  We can't just do nothing because the
    app is in a state where it is expecting a navigation to happen.  Reloading achieves what the user expects
    and makes the app work like the app expects.
    
    * UIProcess/API/C/WKPage.cpp:
    (WKPageGoBack):
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView goBack]):
    * UIProcess/PageClient.h:
    (WebKit::PageClient::hasSafeBrowsingWarning const):
    * UIProcess/mac/PageClientImplMac.h:
    * UIProcess/mac/PageClientImplMac.mm:
    (WebKit::PageClientImpl::hasSafeBrowsingWarning const):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
    (+[Simple3LookupContext sharedLookupContext]):
    (-[Simple3LookupContext lookUpURL:completionHandler:]):
    (-[WKWebViewGoBackNavigationDelegate webView:didFinishNavigation:]):
    (TEST):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            WKWebView.goBack should reload if there is a safe browsing warning
            https://bugs.webkit.org/show_bug.cgi?id=193805
            <rdar://problem/46908216>

            Reviewed by Geoff Garen.

            If a WKWebView is showing a safe browsing warning and the user clicks a back button
            in the app which calls WKWebView.goBack, the WKWebView is in a state where it has not navigated yet,
            so actually going back will appear to the user to go back twice.  We can't just do nothing because the
            app is in a state where it is expecting a navigation to happen.  Reloading achieves what the user expects
            and makes the app work like the app expects.

            * UIProcess/API/C/WKPage.cpp:
            (WKPageGoBack):
            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView goBack]):
            * UIProcess/PageClient.h:
            (WebKit::PageClient::hasSafeBrowsingWarning const):
            * UIProcess/mac/PageClientImplMac.h:
            * UIProcess/mac/PageClientImplMac.mm:
            (WebKit::PageClientImpl::hasSafeBrowsingWarning const):

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240485. rdar://problem/47586895

    Regression(PSON) cross-site provisional page is not canceled if a new same-site one is started
    https://bugs.webkit.org/show_bug.cgi?id=193788
    <rdar://problem/47531231>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    When the page starts a new provisional load, make sure we cancel any pending one in the provisional
    process, as it would have happened in the first provisional load happened in the same process.
    Without this, we could have 2 parallel loads happening, one in the committed process and another
    in the provisional one, leading to assertion failures in debug.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:didStartProvisionalNavigation:]):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240485 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) cross-site provisional page is not canceled if a new same-site one is started
            https://bugs.webkit.org/show_bug.cgi?id=193788
            <rdar://problem/47531231>

            Reviewed by Alex Christensen.

            When the page starts a new provisional load, make sure we cancel any pending one in the provisional
            process, as it would have happened in the first provisional load happened in the same process.
            Without this, we could have 2 parallel loads happening, one in the committed process and another
            in the provisional one, leading to assertion failures in debug.

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

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240477. rdar://problem/47586845

    Regression(PSON?) Crash under NavigationState::NavigationClient::decidePolicyForNavigationAction()
    https://bugs.webkit.org/show_bug.cgi?id=193779
    <rdar://problem/46170903>
    
    Reviewed by Antti Koivisto.
    
    Source/WebKit:
    
    * UIProcess/Cocoa/NavigationState.mm:
    (WebKit::tryAppLink):
    (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
    We were crashing when trying to get the URL of the main frame, which was sad because we never
    ended up using the main frame URL. Therefore, this patch drops the code in question.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
    Add assertion to make sure that the DecidePolicyForNavigationActionAsync IPC it is getting
    from the process is related to its main frame.
    
    Tools:
    
    Add API test that quickly navigates forward to a previous process without waiting for it to
    suspend. I suspect the crash could have been happening due to receiving leftover IPC from
    the process' previous page when reconnecting the it for the forward navigation.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240477 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-25  Chris Dumez  <cdumez@apple.com>

            Regression(PSON?) Crash under NavigationState::NavigationClient::decidePolicyForNavigationAction()
            https://bugs.webkit.org/show_bug.cgi?id=193779
            <rdar://problem/46170903>

            Reviewed by Antti Koivisto.

            * UIProcess/Cocoa/NavigationState.mm:
            (WebKit::tryAppLink):
            (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
            We were crashing when trying to get the URL of the main frame, which was sad because we never
            ended up using the main frame URL. Therefore, this patch drops the code in question.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            Add assertion to make sure that the DecidePolicyForNavigationActionAsync IPC it is getting
            from the process is related to its main frame.

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240443. rdar://problem/47586900

    [PSON] Flash on back navigation on Mac
    https://bugs.webkit.org/show_bug.cgi?id=193716
    <rdar://problem/47148458>
    
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    We close the page immediately if we fail to suspend. Layers disappear and we get a flash.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::close):
    
    Track closed state so we don't send the message twice, causing unhandled message errors in web process.
    
    (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
    
    Close the suspended page if the suspension fails.
    Skip this if we are using web process side compositing on Mac.
    
    * UIProcess/SuspendedPageProxy.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
    
    On Mac, close the failed SuspendedPageProxy when entering compositing mode. At this point we don't need it to keep layers alive.
    
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::closeFailedSuspendedPagesForPage):
    * UIProcess/WebProcessPool.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::suspendForProcessSwap):
    
    Don't close the page on suspension failure. This is now managed by the UI process.
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    Closing of the previous page is delayed so waiting for didFinishNavigation is
    not sufficient to guarantee we have received all the messages. Wait for them.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240443 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-24  Antti Koivisto  <antti@apple.com>

            [PSON] Flash on back navigation on Mac
            https://bugs.webkit.org/show_bug.cgi?id=193716
            <rdar://problem/47148458>

            Reviewed by Chris Dumez.

            We close the page immediately if we fail to suspend. Layers disappear and we get a flash.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::close):

            Track closed state so we don't send the message twice, causing unhandled message errors in web process.

            (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):

            Close the suspended page if the suspension fails.
            Skip this if we are using web process side compositing on Mac.

            * UIProcess/SuspendedPageProxy.h:
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

            On Mac, close the failed SuspendedPageProxy when entering compositing mode. At this point we don't need it to keep layers alive.

            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::closeFailedSuspendedPagesForPage):
            * UIProcess/WebProcessPool.h:
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::suspendForProcessSwap):

            Don't close the page on suspension failure. This is now managed by the UI process.

2019-01-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r240442. rdar://problem/47586826

    Regression(PSON) Back/Forward list items' URL sometimes gets replaced with the URL of a subframe
    https://bugs.webkit.org/show_bug.cgi?id=193761
    <rdar://problem/47456405>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    When doing a history navigation cross-process, the UIProcess would first send the back/forward list items
    to the destination WebProcess via WebPage::updateBackForwardListForReattach(), then ask the process to
    navigate to the expected back/forward list item.
    
    WebPage::updateBackForwardListForReattach() would call restoreSessionInternal(), which would call
    toHistoryItem() on each BackForwardListItem. This may end up creating more than one HistoryItem for each
    BackForwardListItem because HistoryItems are part of a tree (each frame has its own list of history items).
    
    Note that BackForwardListItems and HistoryItem share a BackForwardItemIdentifier which is a
    (processIdentifier, itemIdentifier) pair. We normally generate the HistoryItem's identifier from inside
    its constructor like so:
    `{ Process::identifier(), generateObjectIdentifier<BackForwardItemIdentifier::ItemIdentifierType>() }`
    
    However, when calling updateBackForwardListForReattach() and constructing children HistoryItem,
    applyFrameState() would generate the identifier by itself and passing it to the HistoryItem constructor.
    Its genegates the ID the exact same way so this would in theory not be a problem. Unfortunately, both
    calls to generateObjectIdentifier() get inlined and both call sites end up with their own static counter
    to generate ids. As a result, we may end up with conflicts as HistoryItems for child frames (restored
    by restoreSessionInternal()) can end up with the same identifier as HistoryItems for top frames.
    
    This confusion would lead to the WebContent process sending the UIProcess bad information and the URL
    of subframes could end up as the WebBackForwardListItem's mainframe URL.
    
    * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
    (WebKit::applyFrameState):
    Stop calling generateObjectIdentifier() explicitly and let the HistoryItem constructor take care of it.
    Calling generateObjectIdentifier() for the same type from different places is not safe due to inlining.
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240442 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-24  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Back/Forward list items' URL sometimes gets replaced with the URL of a subframe
            https://bugs.webkit.org/show_bug.cgi?id=193761
            <rdar://problem/47456405>

            Reviewed by Alex Christensen.

            When doing a history navigation cross-process, the UIProcess would first send the back/forward list items
            to the destination WebProcess via WebPage::updateBackForwardListForReattach(), then ask the process to
            navigate to the expected back/forward list item.

            WebPage::updateBackForwardListForReattach() would call restoreSessionInternal(), which would call
            toHistoryItem() on each BackForwardListItem. This may end up creating more than one HistoryItem for each
            BackForwardListItem because HistoryItems are part of a tree (each frame has its own list of history items).

            Note that BackForwardListItems and HistoryItem share a BackForwardItemIdentifier which is a
            (processIdentifier, itemIdentifier) pair. We normally generate the HistoryItem's identifier from inside
            its constructor like so:
            `{ Process::identifier(), generateObjectIdentifier<BackForwardItemIdentifier::ItemIdentifierType>() }`

            However, when calling updateBackForwardListForReattach() and constructing children HistoryItem,
            applyFrameState() would generate the identifier by itself and passing it to the HistoryItem constructor.
            Its genegates the ID the exact same way so this would in theory not be a problem. Unfortunately, both
            calls to generateObjectIdentifier() get inlined and both call sites end up with their own static counter
            to generate ids. As a result, we may end up with conflicts as HistoryItems for child frames (restored
            by restoreSessionInternal()) can end up with the same identifier as HistoryItems for top frames.

            This confusion would lead to the WebContent process sending the UIProcess bad information and the URL
            of subframes could end up as the WebBackForwardListItem's mainframe URL.

            * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
            (WebKit::applyFrameState):
            Stop calling generateObjectIdentifier() explicitly and let the HistoryItem constructor take care of it.
            Calling generateObjectIdentifier() for the same type from different places is not safe due to inlining.

2019-01-24  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240461. rdar://problem/47536283

    [iOS] Silence MediaPlayer compile warnings
    https://bugs.webkit.org/show_bug.cgi?id=193780
    <rdar://problem/47518428>
    
    Reviewed by Jer Noble.
    
    Source/WebCore/PAL:
    
    * pal/spi/ios/MediaPlayerSPI.h:
    
    Source/WebKit:
    
    * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240461 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            [iOS] Silence MediaPlayer compile warnings
            https://bugs.webkit.org/show_bug.cgi?id=193780
            <rdar://problem/47518428>

            Reviewed by Jer Noble.

            * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240325. rdar://problem/47494727

    Regression(r240178) Some API tests are crashing
    https://bugs.webkit.org/show_bug.cgi?id=193680
    
    Reviewed by Alex Christensen.
    
    r240178 made sure that userScripts / scriptMessageHandlers / contentExtensions are always
    properly populated in the WebPageCreationParameters. This was needed in case we need to
    reconstruct the WebUserContentController on the WebProcess side. However, this caused a
    regression in the case we reuse a process where the WebUserContentController still exists
    (because it was kept alive, e.g. by the WebPageGroup). In that case, we would add duplicate
    entries to the existing WebUserContentController instance because its "add" methods did not
    have duplicate checks. To address the issue, this patch adds duplicate checks to the
    WebUserContentController "add" methods.
    
    * WebProcess/UserContent/WebUserContentController.cpp:
    (WebKit::WebUserContentController::addUserScriptMessageHandlerInternal):
    (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
    (WebKit::WebUserContentController::addUserScriptInternal):
    (WebKit::WebUserContentController::removeUserScriptInternal):
    (WebKit::WebUserContentController::addUserStyleSheetInternal):
    (WebKit::WebUserContentController::removeUserStyleSheetInternal):
    (WebKit::WebUserContentController::forEachUserMessageHandler const):
    * WebProcess/UserContent/WebUserContentController.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240325 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-22  Chris Dumez  <cdumez@apple.com>

            Regression(r240178) Some API tests are crashing
            https://bugs.webkit.org/show_bug.cgi?id=193680

            Reviewed by Alex Christensen.

            r240178 made sure that userScripts / scriptMessageHandlers / contentExtensions are always
            properly populated in the WebPageCreationParameters. This was needed in case we need to
            reconstruct the WebUserContentController on the WebProcess side. However, this caused a
            regression in the case we reuse a process where the WebUserContentController still exists
            (because it was kept alive, e.g. by the WebPageGroup). In that case, we would add duplicate
            entries to the existing WebUserContentController instance because its "add" methods did not
            have duplicate checks. To address the issue, this patch adds duplicate checks to the
            WebUserContentController "add" methods.

            * WebProcess/UserContent/WebUserContentController.cpp:
            (WebKit::WebUserContentController::addUserScriptMessageHandlerInternal):
            (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
            (WebKit::WebUserContentController::addUserScriptInternal):
            (WebKit::WebUserContentController::removeUserScriptInternal):
            (WebKit::WebUserContentController::addUserStyleSheetInternal):
            (WebKit::WebUserContentController::removeUserStyleSheetInternal):
            (WebKit::WebUserContentController::forEachUserMessageHandler const):
            * WebProcess/UserContent/WebUserContentController.h:

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240298. rdar://problem/47494772

    [iOS] Flash when swiping back to Google search result page
    https://bugs.webkit.org/show_bug.cgi?id=193668
    <rdar://problem/47071684>
    
    Reviewed by Simon Fraser.
    
    If the google page is scrolled, there is sometimes a short flash.
    
    When restoring the page state we also restore exposedContentRect which is used to determine
    which part of the page to create layers for. Scroll position is restored by the UI process
    later so we rely on this to get the right layers for the initial view update.
    
    A viewport configuration update may sometimes trample over the restored exposedContentRect,
    moving it to top left. In this case the initial layer tree unfreeze commit may not have
    layers to cover the actual visible view position.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::didCommitLoad):
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::restorePageState):
    
    Set a bit to indicate we have already restored the exposedContentRect.
    
    (WebKit::WebPage::viewportConfigurationChanged):
    
    Only reset exposedContentRect if wasn't already set by restorePageState.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240298 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-22  Antti Koivisto  <antti@apple.com>

            [iOS] Flash when swiping back to Google search result page
            https://bugs.webkit.org/show_bug.cgi?id=193668
            <rdar://problem/47071684>

            Reviewed by Simon Fraser.

            If the google page is scrolled, there is sometimes a short flash.

            When restoring the page state we also restore exposedContentRect which is used to determine
            which part of the page to create layers for. Scroll position is restored by the UI process
            later so we rely on this to get the right layers for the initial view update.

            A viewport configuration update may sometimes trample over the restored exposedContentRect,
            moving it to top left. In this case the initial layer tree unfreeze commit may not have
            layers to cover the actual visible view position.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::didCommitLoad):
            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebPage/ios/WebPageIOS.mm:
            (WebKit::WebPage::restorePageState):

            Set a bit to indicate we have already restored the exposedContentRect.

            (WebKit::WebPage::viewportConfigurationChanged):

            Only reset exposedContentRect if wasn't already set by restorePageState.

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240178. rdar://problem/47494727

    Regression(PSON) Content blockers are sometimes lost on back navigation cross-site
    https://bugs.webkit.org/show_bug.cgi?id=193588
    <rdar://problem/47131566>
    
    Reviewed by Alex Christensen.
    
    Source/WebKit:
    
    When the WebPageProxy needs to create initialization parameters for its WebPage in the
    WebContent process, it calls WebProcessProxy::addWebUserContentControllerProxy()
    which calls WebUserContentControllerProxy::addProcess(). This last call is supposed to
    register the WebProcessProxy with the WebUserContentControllerProxy and adding the
    contentRuleLists to the WebPageCreationParameters. The issue is that if the
    WebUserContentControllerProxy already knows about this WebProcessProxy, it would return
    early and not populate the WebPageCreationParameters.
    
    In PSON world, when navigating back to a page that failed to enter page cache, we reuse
    the process where we previously loaded the page but re-create a new WebPage on the
    WebContent process site. When this happens, WebUserContentControllerProxy would not
    add the contentRuleLists to the WebPageCreationParameters and the new WebPage in the
    previously-suspended process would be missing them.
    
    * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
    (WebKit::WebUserContentControllerProxy::addProcess):
    
    Tools:
    
    Add layout test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240178 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-18  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Content blockers are sometimes lost on back navigation cross-site
            https://bugs.webkit.org/show_bug.cgi?id=193588
            <rdar://problem/47131566>

            Reviewed by Alex Christensen.

            When the WebPageProxy needs to create initialization parameters for its WebPage in the
            WebContent process, it calls WebProcessProxy::addWebUserContentControllerProxy()
            which calls WebUserContentControllerProxy::addProcess(). This last call is supposed to
            register the WebProcessProxy with the WebUserContentControllerProxy and adding the
            contentRuleLists to the WebPageCreationParameters. The issue is that if the
            WebUserContentControllerProxy already knows about this WebProcessProxy, it would return
            early and not populate the WebPageCreationParameters.

            In PSON world, when navigating back to a page that failed to enter page cache, we reuse
            the process where we previously loaded the page but re-create a new WebPage on the
            WebContent process site. When this happens, WebUserContentControllerProxy would not
            add the contentRuleLists to the WebPageCreationParameters and the new WebPage in the
            previously-suspended process would be missing them.

            * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
            (WebKit::WebUserContentControllerProxy::addProcess):

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239994. rdar://problem/47295338

    Add allow directive for MTLCompilerService.xpc to PluginProcess and WebContent
    https://bugs.webkit.org/show_bug.cgi?id=193453
    <rdar://problem/47268166>
    
    Reviewed by Brent Fulgham.
    
    * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
    * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
    * WebProcess/com.apple.WebProcess.sb.in:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239994 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-15  Per Arne Vollan  <pvollan@apple.com>

            Add allow directive for MTLCompilerService.xpc to PluginProcess and WebContent
            https://bugs.webkit.org/show_bug.cgi?id=193453
            <rdar://problem/47268166>

            Reviewed by Brent Fulgham.

            * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
            * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
            * WebProcess/com.apple.WebProcess.sb.in:

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239947. rdar://problem/47295371

    Re-enable ability to build --cloop builds.
    https://bugs.webkit.org/show_bug.cgi?id=192955
    Source/JavaScriptCore:
    
    <rdar://problem/46882363>
    
    Reviewed by Saam barati and Keith Miller.
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebCore:
    
    
    Reviewed by Saam barati and Keith Miller.
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebCore/PAL:
    
    <rdar://problem/46882363>
    
    Reviewed by Saam barati and Keith Miller.
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebKit:
    
    <rdar://problem/46882363>
    
    Reviewed by Saam barati and Keith Miller.
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebKitLegacy/mac:
    
    <rdar://problem/46882363>
    
    Reviewed by Saam barati and Keith Miller.
    
    * Configurations/FeatureDefines.xcconfig:
    
    Tools:
    
    <rdar://problem/46882363>
    
    Reviewed by Saam barati and Keith Miller.
    
    The --cloop build option was being ignored this whole time since r236381.
    This patch makes it possible to build CLoop builds again.
    
    * Scripts/build-jsc:
    * Scripts/webkitperl/FeatureList.pm:
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239947 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-14  Mark Lam  <mark.lam@apple.com>

            Re-enable ability to build --cloop builds.
            https://bugs.webkit.org/show_bug.cgi?id=192955
            <rdar://problem/46882363>

            Reviewed by Saam barati and Keith Miller.

            * Configurations/FeatureDefines.xcconfig:

2019-01-23  Alan Coon  <alancoon@apple.com>

        Revert r239619. rdar://problem/47465051

2019-01-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r240010. rdar://problem/47457965

    Cannot tab out of WKWebView on macOS
    https://bugs.webkit.org/show_bug.cgi?id=161448
    <rdar://problem/28100085>
    
    Reviewed by Dean Jackson.
    
    Source/WebCore/PAL:
    
    * pal/spi/mac/NSViewSPI.h:
    * pal/spi/mac/NSWindowSPI.h:
    Move some SPI declarations in here from WebKitLegacy.
    
    Source/WebKit:
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::takeFocus):
    If the UIDelegate doesn't implement takeFocus, provide a simple default
    implementation that just uses AppKit's key view loop to move the focus.
    
    * UIProcess/API/APIUIClient.h:
    (API::UIClient::takeFocus):
    * UIProcess/API/C/WKPage.cpp:
    (WKPageSetPageUIClient):
    * UIProcess/Cocoa/UIDelegate.h:
    * UIProcess/Cocoa/UIDelegate.mm:
    (WebKit::UIDelegate::UIClient::takeFocus):
    Make API::UIClient's takeFocus return a bool indicating whether the
    client implements it or not.
    
    * UIProcess/PageClient.h:
    * UIProcess/mac/PageClientImplMac.h:
    * UIProcess/mac/PageClientImplMac.mm:
    (WebKit::PageClientImpl::takeFocus):
    Plumb takeFocus to WebViewImpl.
    
    * UIProcess/Cocoa/WebViewImpl.h:
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::takeFocus):
    Borrow the relevant portion of WebKitLegacy's implementation of takeFocus,
    shifting focus to the next/previous key view in the window.
    
    Source/WebKitLegacy/mac:
    
    * WebCoreSupport/WebChromeClient.mm:
    * WebView/WebView.mm:
    Make use of SPI headers.
    
    Tools:
    
    Add a test that tabbing into and out of WKWebView works correctly.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm:
    (WebKit2_CommandBackForwardTest::SetUp):
    (-[CommandBackForwardOffscreenWindow isKeyWindow]): Deleted.
    (-[CommandBackForwardOffscreenWindow isVisible]): Deleted.
    * TestWebKitAPI/Tests/WebKitCocoa/TabOutOfWebView.mm: Added.
    (-[FocusableView canBecomeKeyView]):
    (TEST):
    * TestWebKitAPI/mac/OffscreenWindow.h: Added.
    * TestWebKitAPI/mac/OffscreenWindow.mm: Added.
    (-[OffscreenWindow initWithSize:]):
    (-[OffscreenWindow isKeyWindow]):
    (-[OffscreenWindow isVisible]):
    * TestWebKitAPI/mac/PlatformWebViewMac.mm:
    (TestWebKitAPI::PlatformWebView::initialize):
    (-[ActiveOffscreenWindow isKeyWindow]): Deleted.
    (-[ActiveOffscreenWindow isVisible]): Deleted.
    Factor ActiveOffscreenWindow out into OffscreenWindow and share it.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240010 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Cannot tab out of WKWebView on macOS
            https://bugs.webkit.org/show_bug.cgi?id=161448
            <rdar://problem/28100085>

            Reviewed by Dean Jackson.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::takeFocus):
            If the UIDelegate doesn't implement takeFocus, provide a simple default
            implementation that just uses AppKit's key view loop to move the focus.

            * UIProcess/API/APIUIClient.h:
            (API::UIClient::takeFocus):
            * UIProcess/API/C/WKPage.cpp:
            (WKPageSetPageUIClient):
            * UIProcess/Cocoa/UIDelegate.h:
            * UIProcess/Cocoa/UIDelegate.mm:
            (WebKit::UIDelegate::UIClient::takeFocus):
            Make API::UIClient's takeFocus return a bool indicating whether the
            client implements it or not.

            * UIProcess/PageClient.h:
            * UIProcess/mac/PageClientImplMac.h:
            * UIProcess/mac/PageClientImplMac.mm:
            (WebKit::PageClientImpl::takeFocus):
            Plumb takeFocus to WebViewImpl.

            * UIProcess/Cocoa/WebViewImpl.h:
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::takeFocus):
            Borrow the relevant portion of WebKitLegacy's implementation of takeFocus,
            shifting focus to the next/previous key view in the window.

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240161. rdar://problem/47458286

    Regression(PSON) Scroll position is not always restored properly when navigating back
    https://bugs.webkit.org/show_bug.cgi?id=193578
    <rdar://problem/47386331>
    
    Reviewed by Tim Horton.
    
    Source/WebKit:
    
    Fix issues causing the scroll position to not be restored at all (or incorrectly) when
    navigating back cross-site with PSON enabled. Also make sure that the swipe gesture
    snapshot really stays up until we've restored the scroll position.
    
    Note that even after those changes, I can still sometimes reproduce a white flash when
    swiping back to Google search results (scroll position being correct now). This is
    tracked by <rdar://problem/47071684> and happens even if I disable PSON entirely.
    
    * Shared/SessionState.cpp:
    (WebKit::FrameState::encode const):
    (WebKit::FrameState::decode):
    * Shared/SessionState.h:
    * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
    (WebKit::toFrameState):
    (WebKit::applyFrameState):
    obscuredInsets is present on the HistoryItem in the WebProcess but was never passed to
    or stored by the UIProcess on the WebBackForwardListItem. obscuredInsets is needed to
    properly restore the scrollPosition (position was 70px off on my iPad without this).
    With PSON enabled, if you swipe back cross-process and the previous page was not put
    into PageCache, then the HistoryItem is gone on the WebProcess side. What happens is
    that the UIProcess sends its WebBackForwardListItem to the WebProcess, which restores
    the HistoryItem there, and then asks it to load it. The obscuredInsets was getting lost
    in the process since the UIProcess never knew about it.
    
    * UIProcess/Cocoa/ViewGestureController.cpp:
    (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
    Drop logic that was causing the ViewGestureController to not wait for the scroll position
    to be restored before taking down the snapshot, when UI-side compositing is enabled.
    If you look at the comment above the code, you'll see that the code in question was meant
    to impact only the non-UI side compositing code path. As a matter of fact, when the code
    was reviewed at https://bugs.webkit.org/show_bug.cgi?id=151224, it was protected by a
    #if PLATFORM(MAC), before getting modified the wrong way before landing. In practice, we
    would have often restored the scroll position by the time the load is finished so it would
    not cause a flash in most cases. However, with PSON enabled and the layer tree freezing we
    do on process-swap, the first post-scroll restoration layer tree commit may now occur a
    little bit later and we would lose the race more often.
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::updateBackForwardItem):
    * UIProcess/WebProcessProxy.h:
    When adding PageCache support to PSON, we used to navigate the "suspended" page to
    about:blank. This would lead to unwanted WebProcessProxy::updateBackForwardItem()
    calls from the WebProcess which we wanted to ignore. We thus added logic to ignore
    updateBackForwardItem() IPC from the old WebProcess after a swap. The issue with this
    is that we sometimes miss/ignore legit updates to the HistoryItem from the old process,
    in particular with regards to the scroll position and the pageScaleFactor. So if you
    swiped and then quickly enough did a cross-site navigation, the UIProcess'
    WebBackForwardList would not get updated with the latest scroll position and we would
    thus fail to restore it later on. To address the issue, we now stop ignoring updates
    from the old WebProcess after a swap. This logic is no longer needed since we no longer
    navigate the old page to about:blank after a swap, we merely suspend it "in place".
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240161 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-18  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) Scroll position is not always restored properly when navigating back
            https://bugs.webkit.org/show_bug.cgi?id=193578
            <rdar://problem/47386331>

            Reviewed by Tim Horton.

            Fix issues causing the scroll position to not be restored at all (or incorrectly) when
            navigating back cross-site with PSON enabled. Also make sure that the swipe gesture
            snapshot really stays up until we've restored the scroll position.

            Note that even after those changes, I can still sometimes reproduce a white flash when
            swiping back to Google search results (scroll position being correct now). This is
            tracked by <rdar://problem/47071684> and happens even if I disable PSON entirely.

            * Shared/SessionState.cpp:
            (WebKit::FrameState::encode const):
            (WebKit::FrameState::decode):
            * Shared/SessionState.h:
            * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
            (WebKit::toFrameState):
            (WebKit::applyFrameState):
            obscuredInsets is present on the HistoryItem in the WebProcess but was never passed to
            or stored by the UIProcess on the WebBackForwardListItem. obscuredInsets is needed to
            properly restore the scrollPosition (position was 70px off on my iPad without this).
            With PSON enabled, if you swipe back cross-process and the previous page was not put
            into PageCache, then the HistoryItem is gone on the WebProcess side. What happens is
            that the UIProcess sends its WebBackForwardListItem to the WebProcess, which restores
            the HistoryItem there, and then asks it to load it. The obscuredInsets was getting lost
            in the process since the UIProcess never knew about it.

            * UIProcess/Cocoa/ViewGestureController.cpp:
            (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
            Drop logic that was causing the ViewGestureController to not wait for the scroll position
            to be restored before taking down the snapshot, when UI-side compositing is enabled.
            If you look at the comment above the code, you'll see that the code in question was meant
            to impact only the non-UI side compositing code path. As a matter of fact, when the code
            was reviewed at https://bugs.webkit.org/show_bug.cgi?id=151224, it was protected by a
            #if PLATFORM(MAC), before getting modified the wrong way before landing. In practice, we
            would have often restored the scroll position by the time the load is finished so it would
            not cause a flash in most cases. However, with PSON enabled and the layer tree freezing we
            do on process-swap, the first post-scroll restoration layer tree commit may now occur a
            little bit later and we would lose the race more often.

            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::updateBackForwardItem):
            * UIProcess/WebProcessProxy.h:
            When adding PageCache support to PSON, we used to navigate the "suspended" page to
            about:blank. This would lead to unwanted WebProcessProxy::updateBackForwardItem()
            calls from the WebProcess which we wanted to ignore. We thus added logic to ignore
            updateBackForwardItem() IPC from the old WebProcess after a swap. The issue with this
            is that we sometimes miss/ignore legit updates to the HistoryItem from the old process,
            in particular with regards to the scroll position and the pageScaleFactor. So if you
            swiped and then quickly enough did a cross-site navigation, the UIProcess'
            WebBackForwardList would not get updated with the latest scroll position and we would
            thus fail to restore it later on. To address the issue, we now stop ignoring updates
            from the old WebProcess after a swap. This logic is no longer needed since we no longer
            navigate the old page to about:blank after a swap, we merely suspend it "in place".

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240087. rdar://problem/47458394

    Revert r239938
    https://bugs.webkit.org/show_bug.cgi?id=193267
    <rdar://problem/47297304>
    
    * Configurations/WebContent-iOS.entitlements:
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240087 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Revert r239938
            https://bugs.webkit.org/show_bug.cgi?id=193267
            <rdar://problem/47297304>

            * Configurations/WebContent-iOS.entitlements:

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240045. rdar://problem/47458249

    Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
    https://bugs.webkit.org/show_bug.cgi?id=193468
    <rdar://problem/38645869>
    
    Reviewed by Zalan Bujtas.
    
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
    Adjust the null-check a bit; Zalan pointed out that the layout could
    be responsible for the Frame/RenderView going away, so we should bail
    *after* layout, not before.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240045 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
            https://bugs.webkit.org/show_bug.cgi?id=193468
            <rdar://problem/38645869>

            Reviewed by Zalan Bujtas.

            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
            Adjust the null-check a bit; Zalan pointed out that the layout could
            be responsible for the Frame/RenderView going away, so we should bail
            *after* layout, not before.

2019-01-23  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240016. rdar://problem/47458249

    Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
    https://bugs.webkit.org/show_bug.cgi?id=193468
    <rdar://problem/38645869>
    
    Reviewed by Beth Dakin.
    
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
    I'm not sure why this got *worse*, but we should null-check RenderView.
    It's OK to bail from scaleViewToFitDocumentIfNeeded, we'll re-do it
    the next time we paint (which will surely happen if we gain a RenderView).
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240016 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
            https://bugs.webkit.org/show_bug.cgi?id=193468
            <rdar://problem/38645869>

            Reviewed by Beth Dakin.

            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
            I'm not sure why this got *worse*, but we should null-check RenderView.
            It's OK to bail from scaleViewToFitDocumentIfNeeded, we'll re-do it
            the next time we paint (which will surely happen if we gain a RenderView).

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240055. rdar://problem/47099573

    Regression(r240046) Several API tests are crashing
    https://bugs.webkit.org/show_bug.cgi?id=193509
    
    Reviewed by Geoffrey Garen.
    
    The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
    then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
    our process reference.
    
    To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
    loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
    of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
    our process stays alive.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::loadData):
    (WebKit::ProvisionalPageProxy::loadRequest):
    (WebKit::ProvisionalPageProxy::didCreateMainFrame):
    (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
    (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
    (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
    (WebKit::ProvisionalPageProxy::startURLSchemeTask):
    (WebKit::ProvisionalPageProxy::backForwardGoToItem):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::loadRequest):
    (WebKit::WebPageProxy::loadRequestWithNavigationShared):
    (WebKit::WebPageProxy::loadData):
    (WebKit::WebPageProxy::loadDataWithNavigationShared):
    (WebKit::WebPageProxy::didPerformDragControllerAction):
    (WebKit::WebPageProxy::findPlugin):
    (WebKit::WebPageProxy::didCreateMainFrame):
    (WebKit::WebPageProxy::didCreateSubframe):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
    (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
    (WebKit::WebPageProxy::didFinishLoadForFrame):
    (WebKit::WebPageProxy::didFailLoadForFrame):
    (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
    (WebKit::WebPageProxy::didReceiveTitleForFrame):
    (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
    (WebKit::WebPageProxy::didRunInsecureContentForFrame):
    (WebKit::WebPageProxy::frameDidBecomeFrameSet):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
    (WebKit::WebPageProxy::decidePolicyForResponse):
    (WebKit::WebPageProxy::decidePolicyForResponseShared):
    (WebKit::WebPageProxy::unableToImplementPolicy):
    (WebKit::WebPageProxy::willSubmitForm):
    (WebKit::WebPageProxy::didNavigateWithNavigationData):
    (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
    (WebKit::WebPageProxy::didPerformClientRedirect):
    (WebKit::WebPageProxy::didPerformClientRedirectShared):
    (WebKit::WebPageProxy::didPerformServerRedirect):
    (WebKit::WebPageProxy::didUpdateHistoryTitle):
    (WebKit::WebPageProxy::createNewPage):
    (WebKit::WebPageProxy::runJavaScriptAlert):
    (WebKit::WebPageProxy::runJavaScriptConfirm):
    (WebKit::WebPageProxy::runJavaScriptPrompt):
    (WebKit::WebPageProxy::unavailablePluginButtonClicked):
    (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
    (WebKit::WebPageProxy::runOpenPanel):
    (WebKit::WebPageProxy::printFrame):
    (WebKit::WebPageProxy::backForwardGoToItem):
    (WebKit::WebPageProxy::backForwardGoToItemShared):
    (WebKit::WebPageProxy::learnWord):
    (WebKit::WebPageProxy::ignoreWord):
    (WebKit::WebPageProxy::didReceiveEvent):
    (WebKit::WebPageProxy::editingRangeCallback):
    (WebKit::WebPageProxy::rectForCharacterRangeCallback):
    (WebKit::WebPageProxy::focusedFrameChanged):
    (WebKit::WebPageProxy::frameSetLargestFrameChanged):
    (WebKit::WebPageProxy::exceededDatabaseQuota):
    (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
    (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
    (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
    (WebKit::WebPageProxy::startURLSchemeTask):
    (WebKit::WebPageProxy::startURLSchemeTaskShared):
    (WebKit::WebPageProxy::stopURLSchemeTask):
    (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
    * UIProcess/WebPageProxy.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240055 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Regression(r240046) Several API tests are crashing
            https://bugs.webkit.org/show_bug.cgi?id=193509

            Reviewed by Geoffrey Garen.

            The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
            then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
            our process reference.

            To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
            loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
            of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
            our process stays alive.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::loadData):
            (WebKit::ProvisionalPageProxy::loadRequest):
            (WebKit::ProvisionalPageProxy::didCreateMainFrame):
            (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
            (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
            (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
            (WebKit::ProvisionalPageProxy::startURLSchemeTask):
            (WebKit::ProvisionalPageProxy::backForwardGoToItem):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::loadRequest):
            (WebKit::WebPageProxy::loadRequestWithNavigationShared):
            (WebKit::WebPageProxy::loadData):
            (WebKit::WebPageProxy::loadDataWithNavigationShared):
            (WebKit::WebPageProxy::didPerformDragControllerAction):
            (WebKit::WebPageProxy::findPlugin):
            (WebKit::WebPageProxy::didCreateMainFrame):
            (WebKit::WebPageProxy::didCreateSubframe):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
            (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::didCommitLoadForFrame):
            (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
            (WebKit::WebPageProxy::didFinishLoadForFrame):
            (WebKit::WebPageProxy::didFailLoadForFrame):
            (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
            (WebKit::WebPageProxy::didReceiveTitleForFrame):
            (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
            (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
            (WebKit::WebPageProxy::didRunInsecureContentForFrame):
            (WebKit::WebPageProxy::frameDidBecomeFrameSet):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            (WebKit::WebPageProxy::unableToImplementPolicy):
            (WebKit::WebPageProxy::willSubmitForm):
            (WebKit::WebPageProxy::didNavigateWithNavigationData):
            (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
            (WebKit::WebPageProxy::didPerformClientRedirect):
            (WebKit::WebPageProxy::didPerformClientRedirectShared):
            (WebKit::WebPageProxy::didPerformServerRedirect):
            (WebKit::WebPageProxy::didUpdateHistoryTitle):
            (WebKit::WebPageProxy::createNewPage):
            (WebKit::WebPageProxy::runJavaScriptAlert):
            (WebKit::WebPageProxy::runJavaScriptConfirm):
            (WebKit::WebPageProxy::runJavaScriptPrompt):
            (WebKit::WebPageProxy::unavailablePluginButtonClicked):
            (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
            (WebKit::WebPageProxy::runOpenPanel):
            (WebKit::WebPageProxy::printFrame):
            (WebKit::WebPageProxy::backForwardGoToItem):
            (WebKit::WebPageProxy::backForwardGoToItemShared):
            (WebKit::WebPageProxy::learnWord):
            (WebKit::WebPageProxy::ignoreWord):
            (WebKit::WebPageProxy::didReceiveEvent):
            (WebKit::WebPageProxy::editingRangeCallback):
            (WebKit::WebPageProxy::rectForCharacterRangeCallback):
            (WebKit::WebPageProxy::focusedFrameChanged):
            (WebKit::WebPageProxy::frameSetLargestFrameChanged):
            (WebKit::WebPageProxy::exceededDatabaseQuota):
            (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
            (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
            (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
            (WebKit::WebPageProxy::startURLSchemeTask):
            (WebKit::WebPageProxy::startURLSchemeTaskShared):
            (WebKit::WebPageProxy::stopURLSchemeTask):
            (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
            * UIProcess/WebPageProxy.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240046. rdar://problem/47099573

    Regression(PSON) View becomes blank after click a cross-site download link
    https://bugs.webkit.org/show_bug.cgi?id=193361
    <rdar://problem/47099573>
    
    Reviewed by Geoffrey Garen.
    
    Source/WebCore:
    
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::commitProvisionalLoad):
    When restoring from PageCache, make sure we notify the client that the load was committed
    *before* we tell it that the navigation is complete. This would confuse the ProvisionalPageProxy
    logic in the UIProcess.
    
    Source/WebKit:
    
    The issue tracked by rdar://problem/47099573 is that a provisional load may get
    canceled (or converted into a download) *after* we've decided to process-swap.
    In such cases, the view should keep displaying the current site and it should
    still be interactive. However, with the previous PSON model, the view (pageProxy)
    would have already swapped to the new process and would end up displaying the
    initially empty document.
    
    To address the issue, this patch introduces the concept of a provisional load
    in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
    process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
    provisional page until after the load was committed in the new process. This means
    that the view / WebPageProxy keeps using the old process and displays the current
    content until a load has committed in the provisional page. If no load commits
    in the provisional process (e.g. because the load is cancelled or converted into
    a download), then we merely destroy the ProvisionalPageProxy and terminate its
    process, without impacting the WebPageProxy.
    
    * Shared/WebPageCreationParameters.cpp:
    (WebKit::WebPageCreationParameters::encode const):
    (WebKit::WebPageCreationParameters::decode):
    * Shared/WebPageCreationParameters.h:
    Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
    delay attaching the drawing area in case of a process-swap, no matter what
    now that the previous process is kept alive until the provisional load is
    committed in the new process.
    
    * Shared/WebPolicyAction.h:
    Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
    process-swap, we now tell the previous process to simply ignore the load, while
    we create a ProvisionalPageProxy to do the new load in a new process.
    Suspension of the previous page in the old process, happens later, when a load
    is actually committed in the new process.
    
    * Sources.txt:
    Add new ProvisionalPageProxy file.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _killWebContentProcessAndResetState]):
    When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
    process and the provisional one, to maintain previous behavior in our API tests.
    
    * UIProcess/API/gtk/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/API/gtk/PageClientImpl.h:
    * UIProcess/API/wpe/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/API/wpe/PageClientImpl.h:
    * UIProcess/AcceleratedDrawingAreaProxy.cpp:
    (WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):
    (WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
    (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
    * UIProcess/AcceleratedDrawingAreaProxy.h:
    * UIProcess/Cocoa/WebViewImpl.h:
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::createDrawingAreaProxy):
    * UIProcess/DrawingAreaProxy.cpp:
    (WebKit::DrawingAreaProxy::DrawingAreaProxy):
    (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
    (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
    * UIProcess/DrawingAreaProxy.h:
    (WebKit::DrawingAreaProxy::process):
    * UIProcess/DrawingAreaProxyImpl.cpp:
    (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
    (WebKit::DrawingAreaProxyImpl::update):
    * UIProcess/DrawingAreaProxyImpl.h:
    * UIProcess/PageClient.h:
    * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
    * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
    (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
    * UIProcess/ios/PageClientImplIOS.h:
    * UIProcess/ios/PageClientImplIOS.mm:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/ios/WKContentView.h:
    * UIProcess/ios/WKContentView.mm:
    (-[WKContentView _createDrawingAreaProxy:]):
    * UIProcess/mac/PageClientImplMac.h:
    * UIProcess/mac/PageClientImplMac.mm:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
    * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
    (WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
    * UIProcess/mac/WebPageProxyMac.mm:
    * UIProcess/win/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/win/PageClientImpl.h:
    * UIProcess/win/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/win/PageClientImpl.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    Pass the drawing area's associated process when constructing it and store it as a member
    in addition to the page. This is necessary now that a page can be associated with 2
    WebProcesses at a time, each having its own drawing area.
    
    * UIProcess/Cocoa/WebPageProxyCocoa.mm:
    (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
    Pass the process.
    
    * UIProcess/ProvisionalPageProxy.cpp: Added.
    (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::processDidTerminate):
    (WebKit::ProvisionalPageProxy::takeDrawingArea):
    (WebKit::ProvisionalPageProxy::cancel):
    (WebKit::ProvisionalPageProxy::processDidFinishLaunching):
    (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch):
    (WebKit::ProvisionalPageProxy::initializeWebPage):
    (WebKit::ProvisionalPageProxy::loadData):
    (WebKit::ProvisionalPageProxy::loadRequest):
    (WebKit::ProvisionalPageProxy::goToBackForwardItem):
    (WebKit::ProvisionalPageProxy::didCreateMainFrame):
    (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
    (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
    (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
    (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
    (WebKit::ProvisionalPageProxy::startURLSchemeTask):
    (WebKit::ProvisionalPageProxy::backForwardGoToItem):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
    * UIProcess/ProvisionalPageProxy.h: Added.
    (WebKit::ProvisionalPageProxy::page):
    (WebKit::ProvisionalPageProxy::mainFrame const):
    (WebKit::ProvisionalPageProxy::process):
    (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
    (WebKit::ProvisionalPageProxy::navigationID const):
    (WebKit::ProvisionalPageProxy::drawingArea const):
    New WebPageProxy-like class which is owned by the WebPageProxy and proxies IPC from
    the provisional process.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::unsuspend):
    (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
    Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
    when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
    which tries to register itself as an IPC message receiver for the same pageID when
    a process-swap occurs and we're switching to a suspended page.
    
    * UIProcess/WebFrameProxy.cpp:
    (WebKit::WebFrameProxy::isMainFrame const):
    WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
    Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
    m_mainFrame to maintain previous behavior.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::provisionalDrawingArea const):
    Add getter for the provisional drawing area. We normally only deal with the page's current drawing area, but
    the ViewGestureController needs access to the provisional once to display the swipe gesture snapshot.
    
    (WebKit::WebPageProxy::swapToWebProcess):
    swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
    later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
    to initialize some data members such as the drawing area and the main frame as it is transferring them over from
    the ProvisionalPageProxy which started the provisional load.
    
    (WebKit::WebPageProxy::finishAttachingToWebProcess):
    We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
    committed in the provisional process.
    
    (WebKit::WebPageProxy::setDrawingArea):
    (WebKit::WebPageProxy::initializeWebPage):
    - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
      committed in the provisional process.
    - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().
    
    (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
    (WebKit::WebPageProxy::loadRequest):
    (WebKit::WebPageProxy::loadRequestWithNavigationShared):
    Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
    Yes. This avoids hitting some assertions as this was already called during the first API call if needed.
    
    (WebKit::WebPageProxy::loadData):
    (WebKit::WebPageProxy::loadDataWithNavigationShared):
    (WebKit::WebPageProxy::stopLoading):
    (WebKit::WebPageProxy::reload):
    (WebKit::WebPageProxy::didPerformDragControllerAction):
    (WebKit::WebPageProxy::findPlugin):
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
    Suspension now happens later, only if we end up committing the provisional load in the new process.
    Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
    to happen a bit later but it is clearer if we do this as early as possible I think.
    
    (WebKit::WebPageProxy::commitProvisionalPage):
    When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
    - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
    - Suspending the current page.
    - Letting the client know the load is comitted
    - Destroy the ProvisionalPageProxy.
    This work used to happen earlier in continueNavigationInNewProcess().
    
    (WebKit::WebPageProxy::continueNavigationInNewProcess):
    Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
    without actually having the WebPageProxy switch to the new process yet.
    
    (WebKit::WebPageProxy::didCreateMainFrame):
    (WebKit::WebPageProxy::didCreateSubframe):
    (WebKit::WebPageProxy::didCreateWindow):
    Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.
    
    (WebKit::WebPageProxy::didDestroyNavigation):
    On process-swap, when telling the previous process to ignore the load and starting the new load in a new
    ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
    the call since the navigation is merely taken over by the ProvisionalPageProxy.
    
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    Moved some PSON logic to the ProvisionalPageProxy instead.
    
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
    (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
    
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
    When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.
    
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
    (WebKit::WebPageProxy::didFinishLoadForFrame):
    (WebKit::WebPageProxy::didFailLoadForFrame):
    (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
    (WebKit::WebPageProxy::didReceiveTitleForFrame):
    (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
    (WebKit::WebPageProxy::didRunInsecureContentForFrame):
    (WebKit::WebPageProxy::frameDidBecomeFrameSet):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
    (WebKit::WebPageProxy::decidePolicyForResponse):
    (WebKit::WebPageProxy::decidePolicyForResponseShared):
    (WebKit::WebPageProxy::unableToImplementPolicy):
    (WebKit::WebPageProxy::willSubmitForm):
    (WebKit::WebPageProxy::didNavigateWithNavigationData):
    (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
    (WebKit::WebPageProxy::didPerformClientRedirect):
    (WebKit::WebPageProxy::didPerformClientRedirectShared):
    (WebKit::WebPageProxy::didPerformServerRedirect):
    (WebKit::WebPageProxy::didUpdateHistoryTitle):
    (WebKit::WebPageProxy::createNewPage):
    (WebKit::WebPageProxy::runJavaScriptAlert):
    (WebKit::WebPageProxy::runJavaScriptConfirm):
    (WebKit::WebPageProxy::runJavaScriptPrompt):
    (WebKit::WebPageProxy::unavailablePluginButtonClicked):
    (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
    (WebKit::WebPageProxy::runOpenPanel):
    (WebKit::WebPageProxy::printFrame):
    (WebKit::WebPageProxy::backForwardGoToItem):
    (WebKit::WebPageProxy::backForwardGoToItemShared):
    (WebKit::WebPageProxy::learnWord):
    (WebKit::WebPageProxy::ignoreWord):
    (WebKit::WebPageProxy::didReceiveEvent):
    (WebKit::WebPageProxy::editingRangeCallback):
    (WebKit::WebPageProxy::rectForCharacterRangeCallback):
    (WebKit::WebPageProxy::focusedFrameChanged):
    (WebKit::WebPageProxy::frameSetLargestFrameChanged):
    
    (WebKit::WebPageProxy::provisionalProcessDidTerminate):
    Cancel the provisiona load and destroy the ProvisionalPageProxy if
    the provisional process crashes.
    
    (WebKit::WebPageProxy::resetState):
    Drop some code that is no longer needed.
    
    (WebKit::WebPageProxy::creationParameters):
    - Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
    more than one call site. This was just some bad factoring.
    - Take the process in parameter now that we page can be associated with several processes at a time.
    
    (WebKit::WebPageProxy::exceededDatabaseQuota):
    (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
    (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
    (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
    (WebKit::WebPageProxy::startURLSchemeTask):
    (WebKit::WebPageProxy::startURLSchemeTaskShared):
    (WebKit::WebPageProxy::stopURLSchemeTask):
    (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
    (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
    (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
    * UIProcess/WebPageProxy.h:
    (WebKit::WebPageProxy::visitedLinkStore):
    (WebKit::WebPageProxy::provisionalPageProxy const):
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
    (WebKit::WebProcessProxy::updateBackForwardItem):
    (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
    (WebKit::WebProcessProxy::didFinishLaunching):
    (WebKit::WebProcessProxy::canTerminateChildProcess):
    * UIProcess/WebProcessProxy.h:
    (WebKit::WebProcessProxy::addProvisionalPageProxy):
    (WebKit::WebProcessProxy::removeProvisionalPageProxy):
    Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
    item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
    associated with this process yet, because it is still a ProvisionalPageProxy.
    
    * UIProcess/WebURLSchemeHandler.cpp:
    (WebKit::WebURLSchemeHandler::startTask):
    * UIProcess/WebURLSchemeHandler.h:
    * UIProcess/WebURLSchemeTask.cpp:
    (WebKit::WebURLSchemeTask::create):
    (WebKit::WebURLSchemeTask::WebURLSchemeTask):
    (WebKit::WebURLSchemeTask::didPerformRedirection):
    (WebKit::WebURLSchemeTask::didReceiveResponse):
    (WebKit::WebURLSchemeTask::didReceiveData):
    (WebKit::WebURLSchemeTask::didComplete):
    (WebKit::WebURLSchemeTask::pageDestroyed):
    * UIProcess/WebURLSchemeTask.h:
    Pass the process when constructing a WebURLSchemeTask and store it as a data member in addition to
    the page. This is necessary now that a WebPageProxy can be associated with several WebProcesses.
    
    * UIProcess/ios/ViewGestureControllerIOS.mm:
    (WebKit::ViewGestureController::endSwipeGesture):
    Use the provisional drawing area to display the swipe snapshot as it may differ from the one currently
    associated with the page in case of process swap.
    
    * WebKit.xcodeproj/project.pbxproj:
    Add ProvisionalPageProxy class.
    
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::toPolicyAction):
    (WebKit::WebFrame::didReceivePolicyDecision):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
    (WebKit::WebPage::reinitializeWebPage):
    (WebKit::WebPage::didReceivePolicyDecision):
    Stop dealing with WebPolicyAction::Suspend as it no longer exists.
    
    (WebKit::WebPage::didCompletePageTransition):
    
    (WebKit::WebPage::setIsSuspended):
    Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
    setIsSuspended(true) IPC is sent when we actually commit the provisional page.
    
    * WebProcess/WebPage/WebPage.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
    
    LayoutTests:
    
    Skip test testing the cross-process DOMWindow API as I broke it with this patch.
    The feature is far from ready and off by default anyway. I will add support back
    in a follow-up.
    
    * platform/wk2/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240046 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Regression(PSON) View becomes blank after click a cross-site download link
            https://bugs.webkit.org/show_bug.cgi?id=193361
            <rdar://problem/47099573>

            Reviewed by Geoffrey Garen.

            The issue tracked by rdar://problem/47099573 is that a provisional load may get
            canceled (or converted into a download) *after* we've decided to process-swap.
            In such cases, the view should keep displaying the current site and it should
            still be interactive. However, with the previous PSON model, the view (pageProxy)
            would have already swapped to the new process and would end up displaying the
            initially empty document.

            To address the issue, this patch introduces the concept of a provisional load
            in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
            process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
            provisional page until after the load was committed in the new process. This means
            that the view / WebPageProxy keeps using the old process and displays the current
            content until a load has committed in the provisional page. If no load commits
            in the provisional process (e.g. because the load is cancelled or converted into
            a download), then we merely destroy the ProvisionalPageProxy and terminate its
            process, without impacting the WebPageProxy.

            * Shared/WebPageCreationParameters.cpp:
            (WebKit::WebPageCreationParameters::encode const):
            (WebKit::WebPageCreationParameters::decode):
            * Shared/WebPageCreationParameters.h:
            Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
            delay attaching the drawing area in case of a process-swap, no matter what
            now that the previous process is kept alive until the provisional load is
            committed in the new process.

            * Shared/WebPolicyAction.h:
            Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
            process-swap, we now tell the previous process to simply ignore the load, while
            we create a ProvisionalPageProxy to do the new load in a new process.
            Suspension of the previous page in the old process, happens later, when a load
            is actually committed in the new process.

            * Sources.txt:
            Add new ProvisionalPageProxy file.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _killWebContentProcessAndResetState]):
            When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
            process and the provisional one, to maintain previous behavior in our API tests.

            * UIProcess/API/gtk/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/API/gtk/PageClientImpl.h:
            * UIProcess/API/wpe/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/API/wpe/PageClientImpl.h:
            * UIProcess/AcceleratedDrawingAreaProxy.cpp:
            (WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):
            (WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
            (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
            * UIProcess/AcceleratedDrawingAreaProxy.h:
            * UIProcess/Cocoa/WebViewImpl.h:
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::createDrawingAreaProxy):
            * UIProcess/DrawingAreaProxy.cpp:
            (WebKit::DrawingAreaProxy::DrawingAreaProxy):
            (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
            (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
            * UIProcess/DrawingAreaProxy.h:
            (WebKit::DrawingAreaProxy::process):
            * UIProcess/DrawingAreaProxyImpl.cpp:
            (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
            (WebKit::DrawingAreaProxyImpl::update):
            * UIProcess/DrawingAreaProxyImpl.h:
            * UIProcess/PageClient.h:
            * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
            * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
            (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
            * UIProcess/ios/PageClientImplIOS.h:
            * UIProcess/ios/PageClientImplIOS.mm:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/ios/WKContentView.h:
            * UIProcess/ios/WKContentView.mm:
            (-[WKContentView _createDrawingAreaProxy:]):
            * UIProcess/mac/PageClientImplMac.h:
            * UIProcess/mac/PageClientImplMac.mm:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
            * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
            (WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
            * UIProcess/mac/WebPageProxyMac.mm:
            * UIProcess/win/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/win/PageClientImpl.h:
            * UIProcess/win/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/win/PageClientImpl.h:
            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
            Pass the drawing area's associated process when constructing it and store it as a member
            in addition to the page. This is necessary now that a page can be associated with 2
            WebProcesses at a time, each having its own drawing area.

            * UIProcess/Cocoa/WebPageProxyCocoa.mm:
            (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
            Pass the process.

            * UIProcess/ProvisionalPageProxy.cpp: Added.
            (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::processDidTerminate):
            (WebKit::ProvisionalPageProxy::takeDrawingArea):
            (WebKit::ProvisionalPageProxy::cancel):
            (WebKit::ProvisionalPageProxy::processDidFinishLaunching):
            (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch):
            (WebKit::ProvisionalPageProxy::initializeWebPage):
            (WebKit::ProvisionalPageProxy::loadData):
            (WebKit::ProvisionalPageProxy::loadRequest):
            (WebKit::ProvisionalPageProxy::goToBackForwardItem):
            (WebKit::ProvisionalPageProxy::didCreateMainFrame):
            (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
            (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
            (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
            (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
            (WebKit::ProvisionalPageProxy::startURLSchemeTask):
            (WebKit::ProvisionalPageProxy::backForwardGoToItem):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
            * UIProcess/ProvisionalPageProxy.h: Added.
            (WebKit::ProvisionalPageProxy::page):
            (WebKit::ProvisionalPageProxy::mainFrame const):
            (WebKit::ProvisionalPageProxy::process):
            (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
            (WebKit::ProvisionalPageProxy::navigationID const):
            (WebKit::ProvisionalPageProxy::drawingArea const):
            New WebPageProxy-like class which is owned by the WebPageProxy and proxies IPC from
            the provisional process.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::unsuspend):
            (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
            Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
            when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
            which tries to register itself as an IPC message receiver for the same pageID when
            a process-swap occurs and we're switching to a suspended page.

            * UIProcess/WebFrameProxy.cpp:
            (WebKit::WebFrameProxy::isMainFrame const):
            WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
            Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
            m_mainFrame to maintain previous behavior.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::provisionalDrawingArea const):
            Add getter for the provisional drawing area. We normally only deal with the page's current drawing area, but
            the ViewGestureController needs access to the provisional once to display the swipe gesture snapshot.

            (WebKit::WebPageProxy::swapToWebProcess):
            swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
            later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
            to initialize some data members such as the drawing area and the main frame as it is transferring them over from
            the ProvisionalPageProxy which started the provisional load.

            (WebKit::WebPageProxy::finishAttachingToWebProcess):
            We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
            committed in the provisional process.

            (WebKit::WebPageProxy::setDrawingArea):
            (WebKit::WebPageProxy::initializeWebPage):
            - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
              committed in the provisional process.
            - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().

            (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
            (WebKit::WebPageProxy::loadRequest):
            (WebKit::WebPageProxy::loadRequestWithNavigationShared):
            Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
            Yes. This avoids hitting some assertions as this was already called during the first API call if needed.

            (WebKit::WebPageProxy::loadData):
            (WebKit::WebPageProxy::loadDataWithNavigationShared):
            (WebKit::WebPageProxy::stopLoading):
            (WebKit::WebPageProxy::reload):
            (WebKit::WebPageProxy::didPerformDragControllerAction):
            (WebKit::WebPageProxy::findPlugin):
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
            Suspension now happens later, only if we end up committing the provisional load in the new process.
            Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
            to happen a bit later but it is clearer if we do this as early as possible I think.

            (WebKit::WebPageProxy::commitProvisionalPage):
            When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
            - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
            - Suspending the current page.
            - Letting the client know the load is comitted
            - Destroy the ProvisionalPageProxy.
            This work used to happen earlier in continueNavigationInNewProcess().

            (WebKit::WebPageProxy::continueNavigationInNewProcess):
            Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
            without actually having the WebPageProxy switch to the new process yet.

            (WebKit::WebPageProxy::didCreateMainFrame):
            (WebKit::WebPageProxy::didCreateSubframe):
            (WebKit::WebPageProxy::didCreateWindow):
            Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.

            (WebKit::WebPageProxy::didDestroyNavigation):
            On process-swap, when telling the previous process to ignore the load and starting the new load in a new
            ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
            the call since the navigation is merely taken over by the ProvisionalPageProxy.

            (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
            Moved some PSON logic to the ProvisionalPageProxy instead.

            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
            (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):

            (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
            When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.

            (WebKit::WebPageProxy::didCommitLoadForFrame):
            (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
            (WebKit::WebPageProxy::didFinishLoadForFrame):
            (WebKit::WebPageProxy::didFailLoadForFrame):
            (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
            (WebKit::WebPageProxy::didReceiveTitleForFrame):
            (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
            (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
            (WebKit::WebPageProxy::didRunInsecureContentForFrame):
            (WebKit::WebPageProxy::frameDidBecomeFrameSet):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            (WebKit::WebPageProxy::unableToImplementPolicy):
            (WebKit::WebPageProxy::willSubmitForm):
            (WebKit::WebPageProxy::didNavigateWithNavigationData):
            (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
            (WebKit::WebPageProxy::didPerformClientRedirect):
            (WebKit::WebPageProxy::didPerformClientRedirectShared):
            (WebKit::WebPageProxy::didPerformServerRedirect):
            (WebKit::WebPageProxy::didUpdateHistoryTitle):
            (WebKit::WebPageProxy::createNewPage):
            (WebKit::WebPageProxy::runJavaScriptAlert):
            (WebKit::WebPageProxy::runJavaScriptConfirm):
            (WebKit::WebPageProxy::runJavaScriptPrompt):
            (WebKit::WebPageProxy::unavailablePluginButtonClicked):
            (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
            (WebKit::WebPageProxy::runOpenPanel):
            (WebKit::WebPageProxy::printFrame):
            (WebKit::WebPageProxy::backForwardGoToItem):
            (WebKit::WebPageProxy::backForwardGoToItemShared):
            (WebKit::WebPageProxy::learnWord):
            (WebKit::WebPageProxy::ignoreWord):
            (WebKit::WebPageProxy::didReceiveEvent):
            (WebKit::WebPageProxy::editingRangeCallback):
            (WebKit::WebPageProxy::rectForCharacterRangeCallback):
            (WebKit::WebPageProxy::focusedFrameChanged):
            (WebKit::WebPageProxy::frameSetLargestFrameChanged):

            (WebKit::WebPageProxy::provisionalProcessDidTerminate):
            Cancel the provisiona load and destroy the ProvisionalPageProxy if
            the provisional process crashes.

            (WebKit::WebPageProxy::resetState):
            Drop some code that is no longer needed.

            (WebKit::WebPageProxy::creationParameters):
            - Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
            more than one call site. This was just some bad factoring.
            - Take the process in parameter now that we page can be associated with several processes at a time.

            (WebKit::WebPageProxy::exceededDatabaseQuota):
            (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
            (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
            (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
            (WebKit::WebPageProxy::startURLSchemeTask):
            (WebKit::WebPageProxy::startURLSchemeTaskShared):
            (WebKit::WebPageProxy::stopURLSchemeTask):
            (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
            (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
            (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
            * UIProcess/WebPageProxy.h:
            (WebKit::WebPageProxy::visitedLinkStore):
            (WebKit::WebPageProxy::provisionalPageProxy const):

            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
            (WebKit::WebProcessProxy::updateBackForwardItem):
            (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
            (WebKit::WebProcessProxy::didFinishLaunching):
            (WebKit::WebProcessProxy::canTerminateChildProcess):
            * UIProcess/WebProcessProxy.h:
            (WebKit::WebProcessProxy::addProvisionalPageProxy):
            (WebKit::WebProcessProxy::removeProvisionalPageProxy):
            Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
            item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
            associated with this process yet, because it is still a ProvisionalPageProxy.

            * UIProcess/WebURLSchemeHandler.cpp:
            (WebKit::WebURLSchemeHandler::startTask):
            * UIProcess/WebURLSchemeHandler.h:
            * UIProcess/WebURLSchemeTask.cpp:
            (WebKit::WebURLSchemeTask::create):
            (WebKit::WebURLSchemeTask::WebURLSchemeTask):
            (WebKit::WebURLSchemeTask::didPerformRedirection):
            (WebKit::WebURLSchemeTask::didReceiveResponse):
            (WebKit::WebURLSchemeTask::didReceiveData):
            (WebKit::WebURLSchemeTask::didComplete):
            (WebKit::WebURLSchemeTask::pageDestroyed):
            * UIProcess/WebURLSchemeTask.h:
            Pass the process when constructing a WebURLSchemeTask and store it as a data member in addition to
            the page. This is necessary now that a WebPageProxy can be associated with several WebProcesses.

            * UIProcess/ios/ViewGestureControllerIOS.mm:
            (WebKit::ViewGestureController::endSwipeGesture):
            Use the provisional drawing area to display the swipe snapshot as it may differ from the one currently
            associated with the page in case of process swap.

            * WebKit.xcodeproj/project.pbxproj:
            Add ProvisionalPageProxy class.

            * WebProcess/WebPage/WebFrame.cpp:
            (WebKit::toPolicyAction):
            (WebKit::WebFrame::didReceivePolicyDecision):
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
            (WebKit::WebPage::reinitializeWebPage):
            (WebKit::WebPage::didReceivePolicyDecision):
            Stop dealing with WebPolicyAction::Suspend as it no longer exists.

            (WebKit::WebPage::didCompletePageTransition):

            (WebKit::WebPage::setIsSuspended):
            Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
            setIsSuspended(true) IPC is sent when we actually commit the provisional page.

            * WebProcess/WebPage/WebPage.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240258. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240259. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240260. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240262. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240263. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Revert r240264. rdar://problem/47099573

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240055. rdar://problem/47099573

    Regression(r240046) Several API tests are crashing
    https://bugs.webkit.org/show_bug.cgi?id=193509
    
    Reviewed by Geoffrey Garen.
    
    The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
    then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
    our process reference.
    
    To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
    loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
    of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
    our process stays alive.
    
    * UIProcess/ProvisionalPageProxy.cpp:
    (WebKit::ProvisionalPageProxy::loadData):
    (WebKit::ProvisionalPageProxy::loadRequest):
    (WebKit::ProvisionalPageProxy::didCreateMainFrame):
    (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
    (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
    (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
    (WebKit::ProvisionalPageProxy::startURLSchemeTask):
    (WebKit::ProvisionalPageProxy::backForwardGoToItem):
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::loadRequest):
    (WebKit::WebPageProxy::loadRequestWithNavigationShared):
    (WebKit::WebPageProxy::loadData):
    (WebKit::WebPageProxy::loadDataWithNavigationShared):
    (WebKit::WebPageProxy::didPerformDragControllerAction):
    (WebKit::WebPageProxy::findPlugin):
    (WebKit::WebPageProxy::didCreateMainFrame):
    (WebKit::WebPageProxy::didCreateSubframe):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
    (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
    (WebKit::WebPageProxy::didFinishLoadForFrame):
    (WebKit::WebPageProxy::didFailLoadForFrame):
    (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
    (WebKit::WebPageProxy::didReceiveTitleForFrame):
    (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
    (WebKit::WebPageProxy::didRunInsecureContentForFrame):
    (WebKit::WebPageProxy::frameDidBecomeFrameSet):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
    (WebKit::WebPageProxy::decidePolicyForResponse):
    (WebKit::WebPageProxy::decidePolicyForResponseShared):
    (WebKit::WebPageProxy::unableToImplementPolicy):
    (WebKit::WebPageProxy::willSubmitForm):
    (WebKit::WebPageProxy::didNavigateWithNavigationData):
    (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
    (WebKit::WebPageProxy::didPerformClientRedirect):
    (WebKit::WebPageProxy::didPerformClientRedirectShared):
    (WebKit::WebPageProxy::didPerformServerRedirect):
    (WebKit::WebPageProxy::didUpdateHistoryTitle):
    (WebKit::WebPageProxy::createNewPage):
    (WebKit::WebPageProxy::runJavaScriptAlert):
    (WebKit::WebPageProxy::runJavaScriptConfirm):
    (WebKit::WebPageProxy::runJavaScriptPrompt):
    (WebKit::WebPageProxy::unavailablePluginButtonClicked):
    (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
    (WebKit::WebPageProxy::runOpenPanel):
    (WebKit::WebPageProxy::printFrame):
    (WebKit::WebPageProxy::backForwardGoToItem):
    (WebKit::WebPageProxy::backForwardGoToItemShared):
    (WebKit::WebPageProxy::learnWord):
    (WebKit::WebPageProxy::ignoreWord):
    (WebKit::WebPageProxy::didReceiveEvent):
    (WebKit::WebPageProxy::editingRangeCallback):
    (WebKit::WebPageProxy::rectForCharacterRangeCallback):
    (WebKit::WebPageProxy::focusedFrameChanged):
    (WebKit::WebPageProxy::frameSetLargestFrameChanged):
    (WebKit::WebPageProxy::exceededDatabaseQuota):
    (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
    (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
    (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
    (WebKit::WebPageProxy::startURLSchemeTask):
    (WebKit::WebPageProxy::startURLSchemeTaskShared):
    (WebKit::WebPageProxy::stopURLSchemeTask):
    (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
    * UIProcess/WebPageProxy.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240055 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Regression(r240046) Several API tests are crashing
            https://bugs.webkit.org/show_bug.cgi?id=193509

            Reviewed by Geoffrey Garen.

            The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
            then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
            our process reference.

            To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
            loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
            of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
            our process stays alive.

            * UIProcess/ProvisionalPageProxy.cpp:
            (WebKit::ProvisionalPageProxy::loadData):
            (WebKit::ProvisionalPageProxy::loadRequest):
            (WebKit::ProvisionalPageProxy::didCreateMainFrame):
            (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
            (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
            (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
            (WebKit::ProvisionalPageProxy::startURLSchemeTask):
            (WebKit::ProvisionalPageProxy::backForwardGoToItem):
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::loadRequest):
            (WebKit::WebPageProxy::loadRequestWithNavigationShared):
            (WebKit::WebPageProxy::loadData):
            (WebKit::WebPageProxy::loadDataWithNavigationShared):
            (WebKit::WebPageProxy::didPerformDragControllerAction):
            (WebKit::WebPageProxy::findPlugin):
            (WebKit::WebPageProxy::didCreateMainFrame):
            (WebKit::WebPageProxy::didCreateSubframe):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
            (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::didCommitLoadForFrame):
            (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
            (WebKit::WebPageProxy::didFinishLoadForFrame):
            (WebKit::WebPageProxy::didFailLoadForFrame):
            (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
            (WebKit::WebPageProxy::didReceiveTitleForFrame):
            (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
            (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
            (WebKit::WebPageProxy::didRunInsecureContentForFrame):
            (WebKit::WebPageProxy::frameDidBecomeFrameSet):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            (WebKit::WebPageProxy::unableToImplementPolicy):
            (WebKit::WebPageProxy::willSubmitForm):
            (WebKit::WebPageProxy::didNavigateWithNavigationData):
            (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
            (WebKit::WebPageProxy::didPerformClientRedirect):
            (WebKit::WebPageProxy::didPerformClientRedirectShared):
            (WebKit::WebPageProxy::didPerformServerRedirect):
            (WebKit::WebPageProxy::didUpdateHistoryTitle):
            (WebKit::WebPageProxy::createNewPage):
            (WebKit::WebPageProxy::runJavaScriptAlert):
            (WebKit::WebPageProxy::runJavaScriptConfirm):
            (WebKit::WebPageProxy::runJavaScriptPrompt):
            (WebKit::WebPageProxy::unavailablePluginButtonClicked):
            (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
            (WebKit::WebPageProxy::runOpenPanel):
            (WebKit::WebPageProxy::printFrame):
            (WebKit::WebPageProxy::backForwardGoToItem):
            (WebKit::WebPageProxy::backForwardGoToItemShared):
            (WebKit::WebPageProxy::learnWord):
            (WebKit::WebPageProxy::ignoreWord):
            (WebKit::WebPageProxy::didReceiveEvent):
            (WebKit::WebPageProxy::editingRangeCallback):
            (WebKit::WebPageProxy::rectForCharacterRangeCallback):
            (WebKit::WebPageProxy::focusedFrameChanged):
            (WebKit::WebPageProxy::frameSetLargestFrameChanged):
            (WebKit::WebPageProxy::exceededDatabaseQuota):
            (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
            (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
            (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
            (WebKit::WebPageProxy::startURLSchemeTask):
            (WebKit::WebPageProxy::startURLSchemeTaskShared):
            (WebKit::WebPageProxy::stopURLSchemeTask):
            (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
            * UIProcess/WebPageProxy.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240046. rdar://problem/47099573

    Regression(PSON) View becomes blank after click a cross-site download link
    https://bugs.webkit.org/show_bug.cgi?id=193361
    <rdar://problem/47099573>
    
    Reviewed by Geoffrey Garen.
    
    Source/WebCore:
    
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::commitProvisionalLoad):
    When restoring from PageCache, make sure we notify the client that the load was committed
    *before* we tell it that the navigation is complete. This would confuse the ProvisionalPageProxy
    logic in the UIProcess.
    
    Source/WebKit:
    
    The issue tracked by rdar://problem/47099573 is that a provisional load may get
    canceled (or converted into a download) *after* we've decided to process-swap.
    In such cases, the view should keep displaying the current site and it should
    still be interactive. However, with the previous PSON model, the view (pageProxy)
    would have already swapped to the new process and would end up displaying the
    initially empty document.
    
    To address the issue, this patch introduces the concept of a provisional load
    in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
    process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
    provisional page until after the load was committed in the new process. This means
    that the view / WebPageProxy keeps using the old process and displays the current
    content until a load has committed in the provisional page. If no load commits
    in the provisional process (e.g. because the load is cancelled or converted into
    a download), then we merely destroy the ProvisionalPageProxy and terminate its
    process, without impacting the WebPageProxy.
    
    * Shared/WebPageCreationParameters.cpp:
    (WebKit::WebPageCreationParameters::encode const):
    (WebKit::WebPageCreationParameters::decode):
    * Shared/WebPageCreationParameters.h:
    Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
    delay attaching the drawing area in case of a process-swap, no matter what
    now that the previous process is kept alive until the provisional load is
    committed in the new process.
    
    * Shared/WebPolicyAction.h:
    Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
    process-swap, we now tell the previous process to simply ignore the load, while
    we create a ProvisionalPageProxy to do the new load in a new process.
    Suspension of the previous page in the old process, happens later, when a load
    is actually committed in the new process.
    
    * Sources.txt:
    Add new ProvisionalPageProxy file.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _killWebContentProcessAndResetState]):
    When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
    process and the provisional one, to maintain previous behavior in our API tests.
    
    * UIProcess/API/gtk/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/API/gtk/PageClientImpl.h:
    * UIProcess/API/wpe/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/API/wpe/PageClientImpl.h:
    * UIProcess/AcceleratedDrawingAreaProxy.cpp:
    (WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):
    (WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
    (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
    (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
    * UIProcess/AcceleratedDrawingAreaProxy.h:
    * UIProcess/Cocoa/WebViewImpl.h:
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::createDrawingAreaProxy):
    * UIProcess/DrawingAreaProxy.cpp:
    (WebKit::DrawingAreaProxy::DrawingAreaProxy):
    (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
    (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
    * UIProcess/DrawingAreaProxy.h:
    (WebKit::DrawingAreaProxy::process):
    * UIProcess/DrawingAreaProxyImpl.cpp:
    (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
    (WebKit::DrawingAreaProxyImpl::update):
    * UIProcess/DrawingAreaProxyImpl.h:
    * UIProcess/PageClient.h:
    * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
    * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
    (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
    (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
    * UIProcess/ios/PageClientImplIOS.h:
    * UIProcess/ios/PageClientImplIOS.mm:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/ios/WKContentView.h:
    * UIProcess/ios/WKContentView.mm:
    (-[WKContentView _createDrawingAreaProxy:]):
    * UIProcess/mac/PageClientImplMac.h:
    * UIProcess/mac/PageClientImplMac.mm:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
    * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
    (WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
    (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
    * UIProcess/mac/WebPageProxyMac.mm:
    * UIProcess/win/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/win/PageClientImpl.h:
    * UIProcess/win/PageClientImpl.cpp:
    (WebKit::PageClientImpl::createDrawingAreaProxy):
    * UIProcess/win/PageClientImpl.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    Pass the drawing area's associated process when constructing it and store it as a member
    in addition to the page. This is necessary now that a page can be associated with 2
    WebProcesses at a time, each having its own drawing area.
    
    * UIProcess/Cocoa/WebPageProxyCocoa.mm:
    (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
    Pass the process.
    
    * UIProcess/ProvisionalPageProxy.cpp: Added.
    (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::processDidTerminate):
    (WebKit::ProvisionalPageProxy::takeDrawingArea):
    (WebKit::ProvisionalPageProxy::cancel):
    (WebKit::ProvisionalPageProxy::processDidFinishLaunching):
    (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch):
    (WebKit::ProvisionalPageProxy::initializeWebPage):
    (WebKit::ProvisionalPageProxy::loadData):
    (WebKit::ProvisionalPageProxy::loadRequest):
    (WebKit::ProvisionalPageProxy::goToBackForwardItem):
    (WebKit::ProvisionalPageProxy::didCreateMainFrame):
    (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
    (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
    (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
    (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
    (WebKit::ProvisionalPageProxy::startURLSchemeTask):
    (WebKit::ProvisionalPageProxy::backForwardGoToItem):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
    * UIProcess/ProvisionalPageProxy.h: Added.
    (WebKit::ProvisionalPageProxy::page):
    (WebKit::ProvisionalPageProxy::mainFrame const):
    (WebKit::ProvisionalPageProxy::process):
    (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
    (WebKit::ProvisionalPageProxy::navigationID const):
    (WebKit::ProvisionalPageProxy::drawingArea const):
    New WebPageProxy-like class which is owned by the WebPageProxy and proxies IPC from
    the provisional process.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::unsuspend):
    (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
    Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
    when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
    which tries to register itself as an IPC message receiver for the same pageID when
    a process-swap occurs and we're switching to a suspended page.
    
    * UIProcess/WebFrameProxy.cpp:
    (WebKit::WebFrameProxy::isMainFrame const):
    WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
    Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
    m_mainFrame to maintain previous behavior.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::provisionalDrawingArea const):
    Add getter for the provisional drawing area. We normally only deal with the page's current drawing area, but
    the ViewGestureController needs access to the provisional once to display the swipe gesture snapshot.
    
    (WebKit::WebPageProxy::swapToWebProcess):
    swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
    later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
    to initialize some data members such as the drawing area and the main frame as it is transferring them over from
    the ProvisionalPageProxy which started the provisional load.
    
    (WebKit::WebPageProxy::finishAttachingToWebProcess):
    We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
    committed in the provisional process.
    
    (WebKit::WebPageProxy::setDrawingArea):
    (WebKit::WebPageProxy::initializeWebPage):
    - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
      committed in the provisional process.
    - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().
    
    (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
    (WebKit::WebPageProxy::loadRequest):
    (WebKit::WebPageProxy::loadRequestWithNavigationShared):
    Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
    Yes. This avoids hitting some assertions as this was already called during the first API call if needed.
    
    (WebKit::WebPageProxy::loadData):
    (WebKit::WebPageProxy::loadDataWithNavigationShared):
    (WebKit::WebPageProxy::stopLoading):
    (WebKit::WebPageProxy::reload):
    (WebKit::WebPageProxy::didPerformDragControllerAction):
    (WebKit::WebPageProxy::findPlugin):
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
    Suspension now happens later, only if we end up committing the provisional load in the new process.
    Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
    to happen a bit later but it is clearer if we do this as early as possible I think.
    
    (WebKit::WebPageProxy::commitProvisionalPage):
    When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
    - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
    - Suspending the current page.
    - Letting the client know the load is comitted
    - Destroy the ProvisionalPageProxy.
    This work used to happen earlier in continueNavigationInNewProcess().
    
    (WebKit::WebPageProxy::continueNavigationInNewProcess):
    Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
    without actually having the WebPageProxy switch to the new process yet.
    
    (WebKit::WebPageProxy::didCreateMainFrame):
    (WebKit::WebPageProxy::didCreateSubframe):
    (WebKit::WebPageProxy::didCreateWindow):
    Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.
    
    (WebKit::WebPageProxy::didDestroyNavigation):
    On process-swap, when telling the previous process to ignore the load and starting the new load in a new
    ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
    the call since the navigation is merely taken over by the ProvisionalPageProxy.
    
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
    Moved some PSON logic to the ProvisionalPageProxy instead.
    
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
    (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
    (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
    (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
    
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
    When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.
    
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
    (WebKit::WebPageProxy::didFinishLoadForFrame):
    (WebKit::WebPageProxy::didFailLoadForFrame):
    (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
    (WebKit::WebPageProxy::didReceiveTitleForFrame):
    (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
    (WebKit::WebPageProxy::didRunInsecureContentForFrame):
    (WebKit::WebPageProxy::frameDidBecomeFrameSet):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
    (WebKit::WebPageProxy::decidePolicyForNavigationAction):
    (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
    (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
    (WebKit::WebPageProxy::decidePolicyForResponse):
    (WebKit::WebPageProxy::decidePolicyForResponseShared):
    (WebKit::WebPageProxy::unableToImplementPolicy):
    (WebKit::WebPageProxy::willSubmitForm):
    (WebKit::WebPageProxy::didNavigateWithNavigationData):
    (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
    (WebKit::WebPageProxy::didPerformClientRedirect):
    (WebKit::WebPageProxy::didPerformClientRedirectShared):
    (WebKit::WebPageProxy::didPerformServerRedirect):
    (WebKit::WebPageProxy::didUpdateHistoryTitle):
    (WebKit::WebPageProxy::createNewPage):
    (WebKit::WebPageProxy::runJavaScriptAlert):
    (WebKit::WebPageProxy::runJavaScriptConfirm):
    (WebKit::WebPageProxy::runJavaScriptPrompt):
    (WebKit::WebPageProxy::unavailablePluginButtonClicked):
    (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
    (WebKit::WebPageProxy::runOpenPanel):
    (WebKit::WebPageProxy::printFrame):
    (WebKit::WebPageProxy::backForwardGoToItem):
    (WebKit::WebPageProxy::backForwardGoToItemShared):
    (WebKit::WebPageProxy::learnWord):
    (WebKit::WebPageProxy::ignoreWord):
    (WebKit::WebPageProxy::didReceiveEvent):
    (WebKit::WebPageProxy::editingRangeCallback):
    (WebKit::WebPageProxy::rectForCharacterRangeCallback):
    (WebKit::WebPageProxy::focusedFrameChanged):
    (WebKit::WebPageProxy::frameSetLargestFrameChanged):
    
    (WebKit::WebPageProxy::provisionalProcessDidTerminate):
    Cancel the provisiona load and destroy the ProvisionalPageProxy if
    the provisional process crashes.
    
    (WebKit::WebPageProxy::resetState):
    Drop some code that is no longer needed.
    
    (WebKit::WebPageProxy::creationParameters):
    - Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
    more than one call site. This was just some bad factoring.
    - Take the process in parameter now that we page can be associated with several processes at a time.
    
    (WebKit::WebPageProxy::exceededDatabaseQuota):
    (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
    (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
    (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
    (WebKit::WebPageProxy::startURLSchemeTask):
    (WebKit::WebPageProxy::startURLSchemeTaskShared):
    (WebKit::WebPageProxy::stopURLSchemeTask):
    (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
    (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
    (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
    * UIProcess/WebPageProxy.h:
    (WebKit::WebPageProxy::visitedLinkStore):
    (WebKit::WebPageProxy::provisionalPageProxy const):
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
    (WebKit::WebProcessProxy::updateBackForwardItem):
    (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
    (WebKit::WebProcessProxy::didFinishLaunching):
    (WebKit::WebProcessProxy::canTerminateChildProcess):
    * UIProcess/WebProcessProxy.h:
    (WebKit::WebProcessProxy::addProvisionalPageProxy):
    (WebKit::WebProcessProxy::removeProvisionalPageProxy):
    Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
    item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
    associated with this process yet, because it is still a ProvisionalPageProxy.
    
    * UIProcess/WebURLSchemeHandler.cpp:
    (WebKit::WebURLSchemeHandler::startTask):
    * UIProcess/WebURLSchemeHandler.h:
    * UIProcess/WebURLSchemeTask.cpp:
    (WebKit::WebURLSchemeTask::create):
    (WebKit::WebURLSchemeTask::WebURLSchemeTask):
    (WebKit::WebURLSchemeTask::didPerformRedirection):
    (WebKit::WebURLSchemeTask::didReceiveResponse):
    (WebKit::WebURLSchemeTask::didReceiveData):
    (WebKit::WebURLSchemeTask::didComplete):
    (WebKit::WebURLSchemeTask::pageDestroyed):
    * UIProcess/WebURLSchemeTask.h:
    Pass the process when constructing a WebURLSchemeTask and store it as a data member in addition to
    the page. This is necessary now that a WebPageProxy can be associated with several WebProcesses.
    
    * UIProcess/ios/ViewGestureControllerIOS.mm:
    (WebKit::ViewGestureController::endSwipeGesture):
    Use the provisional drawing area to display the swipe snapshot as it may differ from the one currently
    associated with the page in case of process swap.
    
    * WebKit.xcodeproj/project.pbxproj:
    Add ProvisionalPageProxy class.
    
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::toPolicyAction):
    (WebKit::WebFrame::didReceivePolicyDecision):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
    (WebKit::WebPage::reinitializeWebPage):
    (WebKit::WebPage::didReceivePolicyDecision):
    Stop dealing with WebPolicyAction::Suspend as it no longer exists.
    
    (WebKit::WebPage::didCompletePageTransition):
    
    (WebKit::WebPage::setIsSuspended):
    Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
    setIsSuspended(true) IPC is sent when we actually commit the provisional page.
    
    * WebProcess/WebPage/WebPage.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
    
    LayoutTests:
    
    Skip test testing the cross-process DOMWindow API as I broke it with this patch.
    The feature is far from ready and off by default anyway. I will add support back
    in a follow-up.
    
    * platform/wk2/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240046 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Regression(PSON) View becomes blank after click a cross-site download link
            https://bugs.webkit.org/show_bug.cgi?id=193361
            <rdar://problem/47099573>

            Reviewed by Geoffrey Garen.

            The issue tracked by rdar://problem/47099573 is that a provisional load may get
            canceled (or converted into a download) *after* we've decided to process-swap.
            In such cases, the view should keep displaying the current site and it should
            still be interactive. However, with the previous PSON model, the view (pageProxy)
            would have already swapped to the new process and would end up displaying the
            initially empty document.

            To address the issue, this patch introduces the concept of a provisional load
            in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
            process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
            provisional page until after the load was committed in the new process. This means
            that the view / WebPageProxy keeps using the old process and displays the current
            content until a load has committed in the provisional page. If no load commits
            in the provisional process (e.g. because the load is cancelled or converted into
            a download), then we merely destroy the ProvisionalPageProxy and terminate its
            process, without impacting the WebPageProxy.

            * Shared/WebPageCreationParameters.cpp:
            (WebKit::WebPageCreationParameters::encode const):
            (WebKit::WebPageCreationParameters::decode):
            * Shared/WebPageCreationParameters.h:
            Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
            delay attaching the drawing area in case of a process-swap, no matter what
            now that the previous process is kept alive until the provisional load is
            committed in the new process.

            * Shared/WebPolicyAction.h:
            Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
            process-swap, we now tell the previous process to simply ignore the load, while
            we create a ProvisionalPageProxy to do the new load in a new process.
            Suspension of the previous page in the old process, happens later, when a load
            is actually committed in the new process.

            * Sources.txt:
            Add new ProvisionalPageProxy file.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _killWebContentProcessAndResetState]):
            When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
            process and the provisional one, to maintain previous behavior in our API tests.

            * UIProcess/API/gtk/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/API/gtk/PageClientImpl.h:
            * UIProcess/API/wpe/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/API/wpe/PageClientImpl.h:
            * UIProcess/AcceleratedDrawingAreaProxy.cpp:
            (WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):
            (WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
            (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
            (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
            * UIProcess/AcceleratedDrawingAreaProxy.h:
            * UIProcess/Cocoa/WebViewImpl.h:
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::createDrawingAreaProxy):
            * UIProcess/DrawingAreaProxy.cpp:
            (WebKit::DrawingAreaProxy::DrawingAreaProxy):
            (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
            (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
            * UIProcess/DrawingAreaProxy.h:
            (WebKit::DrawingAreaProxy::process):
            * UIProcess/DrawingAreaProxyImpl.cpp:
            (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
            (WebKit::DrawingAreaProxyImpl::update):
            * UIProcess/DrawingAreaProxyImpl.h:
            * UIProcess/PageClient.h:
            * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
            * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
            (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
            (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
            * UIProcess/ios/PageClientImplIOS.h:
            * UIProcess/ios/PageClientImplIOS.mm:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/ios/WKContentView.h:
            * UIProcess/ios/WKContentView.mm:
            (-[WKContentView _createDrawingAreaProxy:]):
            * UIProcess/mac/PageClientImplMac.h:
            * UIProcess/mac/PageClientImplMac.mm:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
            * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
            (WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
            (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
            * UIProcess/mac/WebPageProxyMac.mm:
            * UIProcess/win/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/win/PageClientImpl.h:
            * UIProcess/win/PageClientImpl.cpp:
            (WebKit::PageClientImpl::createDrawingAreaProxy):
            * UIProcess/win/PageClientImpl.h:
            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
            Pass the drawing area's associated process when constructing it and store it as a member
            in addition to the page. This is necessary now that a page can be associated with 2
            WebProcesses at a time, each having its own drawing area.

            * UIProcess/Cocoa/WebPageProxyCocoa.mm:
            (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
            Pass the process.

            * UIProcess/ProvisionalPageProxy.cpp: Added.
            (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::processDidTerminate):
            (WebKit::ProvisionalPageProxy::takeDrawingArea):
            (WebKit::ProvisionalPageProxy::cancel):
            (WebKit::ProvisionalPageProxy::processDidFinishLaunching):
            (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch):
            (WebKit::ProvisionalPageProxy::initializeWebPage):
            (WebKit::ProvisionalPageProxy::loadData):
            (WebKit::ProvisionalPageProxy::loadRequest):
            (WebKit::ProvisionalPageProxy::goToBackForwardItem):
            (WebKit::ProvisionalPageProxy::didCreateMainFrame):
            (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
            (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
            (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
            (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
            (WebKit::ProvisionalPageProxy::startURLSchemeTask):
            (WebKit::ProvisionalPageProxy::backForwardGoToItem):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
            * UIProcess/ProvisionalPageProxy.h: Added.
            (WebKit::ProvisionalPageProxy::page):
            (WebKit::ProvisionalPageProxy::mainFrame const):
            (WebKit::ProvisionalPageProxy::process):
            (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
            (WebKit::ProvisionalPageProxy::navigationID const):
            (WebKit::ProvisionalPageProxy::drawingArea const):
            New WebPageProxy-like class which is owned by the WebPageProxy and proxies IPC from
            the provisional process.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::unsuspend):
            (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
            Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
            when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
            which tries to register itself as an IPC message receiver for the same pageID when
            a process-swap occurs and we're switching to a suspended page.

            * UIProcess/WebFrameProxy.cpp:
            (WebKit::WebFrameProxy::isMainFrame const):
            WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
            Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
            m_mainFrame to maintain previous behavior.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::provisionalDrawingArea const):
            Add getter for the provisional drawing area. We normally only deal with the page's current drawing area, but
            the ViewGestureController needs access to the provisional once to display the swipe gesture snapshot.

            (WebKit::WebPageProxy::swapToWebProcess):
            swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
            later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
            to initialize some data members such as the drawing area and the main frame as it is transferring them over from
            the ProvisionalPageProxy which started the provisional load.

            (WebKit::WebPageProxy::finishAttachingToWebProcess):
            We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
            committed in the provisional process.

            (WebKit::WebPageProxy::setDrawingArea):
            (WebKit::WebPageProxy::initializeWebPage):
            - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
              committed in the provisional process.
            - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().

            (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
            (WebKit::WebPageProxy::loadRequest):
            (WebKit::WebPageProxy::loadRequestWithNavigationShared):
            Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
            Yes. This avoids hitting some assertions as this was already called during the first API call if needed.

            (WebKit::WebPageProxy::loadData):
            (WebKit::WebPageProxy::loadDataWithNavigationShared):
            (WebKit::WebPageProxy::stopLoading):
            (WebKit::WebPageProxy::reload):
            (WebKit::WebPageProxy::didPerformDragControllerAction):
            (WebKit::WebPageProxy::findPlugin):
            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
            Suspension now happens later, only if we end up committing the provisional load in the new process.
            Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
            to happen a bit later but it is clearer if we do this as early as possible I think.

            (WebKit::WebPageProxy::commitProvisionalPage):
            When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
            - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
            - Suspending the current page.
            - Letting the client know the load is comitted
            - Destroy the ProvisionalPageProxy.
            This work used to happen earlier in continueNavigationInNewProcess().

            (WebKit::WebPageProxy::continueNavigationInNewProcess):
            Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
            without actually having the WebPageProxy switch to the new process yet.

            (WebKit::WebPageProxy::didCreateMainFrame):
            (WebKit::WebPageProxy::didCreateSubframe):
            (WebKit::WebPageProxy::didCreateWindow):
            Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.

            (WebKit::WebPageProxy::didDestroyNavigation):
            On process-swap, when telling the previous process to ignore the load and starting the new load in a new
            ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
            the call since the navigation is merely taken over by the ProvisionalPageProxy.

            (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
            Moved some PSON logic to the ProvisionalPageProxy instead.

            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
            (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
            (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
            (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):

            (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
            When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.

            (WebKit::WebPageProxy::didCommitLoadForFrame):
            (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
            (WebKit::WebPageProxy::didFinishLoadForFrame):
            (WebKit::WebPageProxy::didFailLoadForFrame):
            (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
            (WebKit::WebPageProxy::didReceiveTitleForFrame):
            (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
            (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
            (WebKit::WebPageProxy::didRunInsecureContentForFrame):
            (WebKit::WebPageProxy::frameDidBecomeFrameSet):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
            (WebKit::WebPageProxy::decidePolicyForNavigationAction):
            (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
            (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            (WebKit::WebPageProxy::decidePolicyForResponseShared):
            (WebKit::WebPageProxy::unableToImplementPolicy):
            (WebKit::WebPageProxy::willSubmitForm):
            (WebKit::WebPageProxy::didNavigateWithNavigationData):
            (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
            (WebKit::WebPageProxy::didPerformClientRedirect):
            (WebKit::WebPageProxy::didPerformClientRedirectShared):
            (WebKit::WebPageProxy::didPerformServerRedirect):
            (WebKit::WebPageProxy::didUpdateHistoryTitle):
            (WebKit::WebPageProxy::createNewPage):
            (WebKit::WebPageProxy::runJavaScriptAlert):
            (WebKit::WebPageProxy::runJavaScriptConfirm):
            (WebKit::WebPageProxy::runJavaScriptPrompt):
            (WebKit::WebPageProxy::unavailablePluginButtonClicked):
            (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
            (WebKit::WebPageProxy::runOpenPanel):
            (WebKit::WebPageProxy::printFrame):
            (WebKit::WebPageProxy::backForwardGoToItem):
            (WebKit::WebPageProxy::backForwardGoToItemShared):
            (WebKit::WebPageProxy::learnWord):
            (WebKit::WebPageProxy::ignoreWord):
            (WebKit::WebPageProxy::didReceiveEvent):
            (WebKit::WebPageProxy::editingRangeCallback):
            (WebKit::WebPageProxy::rectForCharacterRangeCallback):
            (WebKit::WebPageProxy::focusedFrameChanged):
            (WebKit::WebPageProxy::frameSetLargestFrameChanged):

            (WebKit::WebPageProxy::provisionalProcessDidTerminate):
            Cancel the provisiona load and destroy the ProvisionalPageProxy if
            the provisional process crashes.

            (WebKit::WebPageProxy::resetState):
            Drop some code that is no longer needed.

            (WebKit::WebPageProxy::creationParameters):
            - Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
            more than one call site. This was just some bad factoring.
            - Take the process in parameter now that we page can be associated with several processes at a time.

            (WebKit::WebPageProxy::exceededDatabaseQuota):
            (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
            (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
            (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
            (WebKit::WebPageProxy::startURLSchemeTask):
            (WebKit::WebPageProxy::startURLSchemeTaskShared):
            (WebKit::WebPageProxy::stopURLSchemeTask):
            (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
            (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
            (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
            * UIProcess/WebPageProxy.h:
            (WebKit::WebPageProxy::visitedLinkStore):
            (WebKit::WebPageProxy::provisionalPageProxy const):

            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
            (WebKit::WebProcessProxy::updateBackForwardItem):
            (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
            (WebKit::WebProcessProxy::didFinishLaunching):
            (WebKit::WebProcessProxy::canTerminateChildProcess):
            * UIProcess/WebProcessProxy.h:
            (WebKit::WebProcessProxy::addProvisionalPageProxy):
            (WebKit::WebProcessProxy::removeProvisionalPageProxy):
            Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
            item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
            associated with this process yet, because it is still a ProvisionalPageProxy.

            * UIProcess/WebURLSchemeHandler.cpp:
            (WebKit::WebURLSchemeHandler::startTask):
            * UIProcess/WebURLSchemeHandler.h:
            * UIProcess/WebURLSchemeTask.cpp:
            (WebKit::WebURLSchemeTask::create):
            (WebKit::WebURLSchemeTask::WebURLSchemeTask):
            (WebKit::WebURLSchemeTask::didPerformRedirection):
            (WebKit::WebURLSchemeTask::didReceiveResponse):
            (WebKit::WebURLSchemeTask::didReceiveData):
            (WebKit::WebURLSchemeTask::didComplete):
            (WebKit::WebURLSchemeTask::pageDestroyed):
            * UIProcess/WebURLSchemeTask.h:
            Pass the process when constructing a WebURLSchemeTask and store it as a data member in addition to
            the page. This is necessary now that a WebPageProxy can be associated with several WebProcesses.

            * UIProcess/ios/ViewGestureControllerIOS.mm:
            (WebKit::ViewGestureController::endSwipeGesture):
            Use the provisional drawing area to display the swipe snapshot as it may differ from the one currently
            associated with the page in case of process swap.

            * WebKit.xcodeproj/project.pbxproj:
            Add ProvisionalPageProxy class.

            * WebProcess/WebPage/WebFrame.cpp:
            (WebKit::toPolicyAction):
            (WebKit::WebFrame::didReceivePolicyDecision):
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
            (WebKit::WebPage::reinitializeWebPage):
            (WebKit::WebPage::didReceivePolicyDecision):
            Stop dealing with WebPolicyAction::Suspend as it no longer exists.

            (WebKit::WebPage::didCompletePageTransition):

            (WebKit::WebPage::setIsSuspended):
            Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
            setIsSuspended(true) IPC is sent when we actually commit the provisional page.

            * WebProcess/WebPage/WebPage.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r240015. rdar://problem/47099573

    Unreviewed, rolling out r239993, r239995, r239997, and
    r239999.
    
    Caused assertions under
    ViewGestureController::disconnectFromProcess()
    
    Reverted changesets:
    
    "Regression(PSON) View becomes blank after click a cross-site
    download link"
    https://bugs.webkit.org/show_bug.cgi?id=193361
    https://trac.webkit.org/changeset/239993
    
    "Unreviewed iOS build fix after r239993."
    https://trac.webkit.org/changeset/239995
    
    "Fix iOS build after r239993"
    https://bugs.webkit.org/show_bug.cgi?id=193361
    https://trac.webkit.org/changeset/239997
    
    "Unreviewed, revert part of r239997 as it is not needed to fix
    the build."
    https://trac.webkit.org/changeset/239999
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240015 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-15  Chris Dumez  <cdumez@apple.com>

            Unreviewed, rolling out r239993, r239995, r239997, and
            r239999.

            Caused assertions under
            ViewGestureController::disconnectFromProcess()

            Reverted changesets:

            "Regression(PSON) View becomes blank after click a cross-site
            download link"
            https://bugs.webkit.org/show_bug.cgi?id=193361
            https://trac.webkit.org/changeset/239993

            "Unreviewed iOS build fix after r239993."
            https://trac.webkit.org/changeset/239995

            "Fix iOS build after r239993"
            https://bugs.webkit.org/show_bug.cgi?id=193361
            https://trac.webkit.org/changeset/239997

            "Unreviewed, revert part of r239997 as it is not needed to fix
            the build."
            https://trac.webkit.org/changeset/239999

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239997. rdar://problem/47099573

    Fix iOS build after r239993
    https://bugs.webkit.org/show_bug.cgi?id=193361
    
    Source/WebKit:
    
    * UIProcess/ProvisionalPageProxy.h:
    * UIProcess/SuspendedPageProxy.h:
    
    Source/WTF:
    
    * wtf/RefCounter.h:
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239997 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Fix iOS build after r239993
            https://bugs.webkit.org/show_bug.cgi?id=193361

            * UIProcess/ProvisionalPageProxy.h:
            * UIProcess/SuspendedPageProxy.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239995. rdar://problem/47099573

    Unreviewed iOS build fix after r239993.
    
    * UIProcess/SuspendedPageProxy.h:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239995 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-15  Chris Dumez  <cdumez@apple.com>

            Unreviewed iOS build fix after r239993.

            * UIProcess/SuspendedPageProxy.h:

2019-01-22  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239993. rdar://problem/47099573

    Regression(PSON) View becomes blank after click a cross-site download link
    https://bugs.webkit.org/show_bug.cgi?id=193361
    <rdar://problem/47099573>
    
    Reviewed by Geoff Garen.
    
    Source/WebCore:
    
    * loader/FrameLoader.cpp:
    (WebCore::FrameLoader::commitProvisionalLoad):
    When restoring from PageCache, make sure we notify the client that the load was committed
    *before* we tell it that the navigation is complete. This would confuse the ProvisionalPageProxy
    logic in the UIProcess.
    
    Source/WebKit:
    
    The issue tracked by rdar://problem/47099573 is that a provisional load may get
    canceled (or converted into a download) *after* we've decided to process-swap.
    In such cases, the view should keep displaying the current site and it should
    still be interactive. However, with the previous PSON model, the view (pageProxy)
    would have already swapped to the new process and would end up displaying the
    initially empty document.
    
    To address the issue, this patch introduces the concept of a provisional load
    in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
    process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
    provisional page until after the load was committed in the new process. This means
    that the view / WebPageProxy keeps using the old process and displays the current
    content until a load has committed in the provisional page. If no load commits
    in the provisional process (e.g. because the load is cancelled or converted into
    a download), then we merely destroy the ProvisionalPageProxy and terminate its
    process, without impacting the WebPageProxy.
    
    * Shared/WebPageCreationParameters.cpp:
    (WebKit::WebPageCreationParameters::encode const):
    (WebKit::WebPageCreationParameters::decode):
    * Shared/WebPageCreationParameters.h:
    Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
    delay attaching the drawing area in case of a process-swap, no matter what
    now that the previous process is kept alive until the provisional load is
    committed in the new process.
    
    * Shared/WebPolicyAction.h:
    Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
    process-swap, we now tell the previous process to simply ignore the load, while
    we create a ProvisionalPageProxy to do the new load in a new process.
    Suspension of the previous page in the old process, happens later, when a load
    is actually committed in the new process.
    
    * Sources.txt:
    Add new ProvisionalPageProxy file.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _killWebContentProcessAndResetState]):
    When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
    process and the provisional one, to maintain previous behavior in our API tests.
    
    * UIProcess/PageClient.h:
    Tiny build fix.
    
    * UIProcess/ProvisionalPageProxy.cpp: Added.
    (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
    (WebKit::ProvisionalPageProxy::takeDrawingArea):
    (WebKit::ProvisionalPageProxy::cancel):
    (WebKit::ProvisionalPageProxy::initializeWebPage):
    (WebKit::ProvisionalPageProxy::loadDataWithNavigation):
    (WebKit::ProvisionalPageProxy::loadRequestWithNavigation):
    (WebKit::ProvisionalPageProxy::goToBackForwardItem):
    (WebKit::ProvisionalPageProxy::didCreateMainFrame):
    (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
    (WebKit::ProvisionalPageProxy::didReceiveMessage):
    (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
    * UIProcess/ProvisionalPageProxy.h: Added.
    (WebKit::ProvisionalPageProxy::page):
    (WebKit::ProvisionalPageProxy::mainFrame const):
    (WebKit::ProvisionalPageProxy::process):
    (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
    (WebKit::ProvisionalPageProxy::navigationID const):
    Add new ProvisionalPageProxy class to wrap the provisional load in the new process
    after a swap. The provisional page is owned by the WebPageProxy and we only commit
    the provisional page when the load is committed. Until then, the WebPageProxy keeps
    using the old process and displaying the current content.
    
    * UIProcess/SuspendedPageProxy.cpp:
    (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
    (WebKit::SuspendedPageProxy::unsuspend):
    (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
    Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
    when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
    which tries to register itself as an IPC message receiver for the same pageID when
    a process-swap occurs and we're switching to a suspended page.
    
    * UIProcess/WebFrameProxy.cpp:
    (WebKit::WebFrameProxy::isMainFrame const):
    WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
    Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
    m_mainFrame to maintain previous behavior.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::swapToWebProcess):
    swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
    later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
    to initialize some data members such as the drawing area and the main frame as it is transferring them over from
    the ProvisionalPageProxy which started the provisional load.
    
    (WebKit::WebPageProxy::finishAttachingToWebProcess):
    We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
    committed in the provisional process.
    
    (WebKit::WebPageProxy::initializeWebPage):
    - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
      committed in the provisional process.
    - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().
    
    (WebKit::WebPageProxy::loadRequestWithNavigation):
    Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
    Yes. This avoids hitting some assertions as this was already called during the first API call if needed.
    
    (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
    In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
    Suspension now happens later, only if we end up committing the provisional load in the new process.
    Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
    to happen a bit later but it is clearer if we do this as early as possible I think.
    
    (WebKit::WebPageProxy::commitProvisionalPage):
    When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
    - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
    - Suspending the current page.
    - Letting the client know the load is comitted
    - Destroy the ProvisionalPageProxy.
    This work used to happen earlier in continueNavigationInNewProcess().
    
    (WebKit::WebPageProxy::continueNavigationInNewProcess):
    Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
    without actually having the WebPageProxy switch to the new process yet.
    
    (WebKit::WebPageProxy::didCreateMainFrame):
    (WebKit::WebPageProxy::didCreateWindow):
    Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.
    
    (WebKit::WebPageProxy::didDestroyNavigation):
    On process-swap, when telling the previous process to ignore the load and starting the new load in a new
    ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
    the call since the navigation is merely taken over by the ProvisionalPageProxy.
    
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    Moved some PSON logic to the ProvisionalPageProxy instead.
    
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.
    
    (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
    (WebKit::WebPageProxy::decidePolicyForResponse):
    Capture the process in the lambda, to make sure we send the policy decision to the same process that
    asked for it, so as to not get confused by process swaps.
    
    (WebKit::WebPageProxy::resetState):
    Drop some code that is no longer needed.
    
    (WebKit::WebPageProxy::creationParameters):
    Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
    more than one call site. This was just some bad factoring.
    
    (WebKit::WebPageProxy::PageProcessOverride::PageProcessOverride):
    (WebKit::WebPageProxy::PageProcessOverride::~PageProcessOverride):
    * UIProcess/WebPageProxy.h:
    (WebKit::WebPageProxy::temporarilyOverrideProcess):
    Add utility class to temporarily override the WebPageProxy's m_process with the provisional one when
    the ProvisionalPageProxy interacts with the WebPageProxy.
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
    (WebKit::WebProcessProxy::updateBackForwardItem):
    Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
    item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
    associated with this process yet, because it is still a ProvisionalPageProxy.
    
    (WebKit::WebProcessProxy::canTerminateChildProcess):
    Do not terminate the WebProcess if there are ProvisionalPageProxy objects using it.
    
    * UIProcess/WebProcessProxy.h:
    (WebKit::WebProcessProxy::addProvisionalPageProxy):
    (WebKit::WebProcessProxy::removeProvisionalPageProxy):
    
    * WebKit.xcodeproj/project.pbxproj:
    
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::toPolicyAction):
    (WebKit::WebFrame::didReceivePolicyDecision):
    Stop dealing with WebPolicyAction::Suspend as it no longer exists.
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::reinitializeWebPage):
    (WebKit::WebPage::didReceivePolicyDecision):
    
    (WebKit::WebPage::setIsSuspended):
    Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
    setIsSuspended(true) IPC is sent when we actually commit the provisional page.
    
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
    (-[PSONNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
    
    LayoutTests:
    
    Skip test testing the cross-process DOMWindow API as I broke it with this patch.
    The feature is far from ready and off by default anyway. I will add support back
    in a follow-up.
    
    * platform/wk2/TestExpectations:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239993 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-15  Chris Dumez  <cdumez@apple.com>

            Regression(PSON) View becomes blank after click a cross-site download link
            https://bugs.webkit.org/show_bug.cgi?id=193361
            <rdar://problem/47099573>

            Reviewed by Geoff Garen.

            The issue tracked by rdar://problem/47099573 is that a provisional load may get
            canceled (or converted into a download) *after* we've decided to process-swap.
            In such cases, the view should keep displaying the current site and it should
            still be interactive. However, with the previous PSON model, the view (pageProxy)
            would have already swapped to the new process and would end up displaying the
            initially empty document.

            To address the issue, this patch introduces the concept of a provisional load
            in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
            process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
            provisional page until after the load was committed in the new process. This means
            that the view / WebPageProxy keeps using the old process and displays the current
            content until a load has committed in the provisional page. If no load commits
            in the provisional process (e.g. because the load is cancelled or converted into
            a download), then we merely destroy the ProvisionalPageProxy and terminate its
            process, without impacting the WebPageProxy.

            * Shared/WebPageCreationParameters.cpp:
            (WebKit::WebPageCreationParameters::encode const):
            (WebKit::WebPageCreationParameters::decode):
            * Shared/WebPageCreationParameters.h:
            Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
            delay attaching the drawing area in case of a process-swap, no matter what
            now that the previous process is kept alive until the provisional load is
            committed in the new process.

            * Shared/WebPolicyAction.h:
            Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
            process-swap, we now tell the previous process to simply ignore the load, while
            we create a ProvisionalPageProxy to do the new load in a new process.
            Suspension of the previous page in the old process, happens later, when a load
            is actually committed in the new process.

            * Sources.txt:
            Add new ProvisionalPageProxy file.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _killWebContentProcessAndResetState]):
            When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
            process and the provisional one, to maintain previous behavior in our API tests.

            * UIProcess/PageClient.h:
            Tiny build fix.

            * UIProcess/ProvisionalPageProxy.cpp: Added.
            (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
            (WebKit::ProvisionalPageProxy::takeDrawingArea):
            (WebKit::ProvisionalPageProxy::cancel):
            (WebKit::ProvisionalPageProxy::initializeWebPage):
            (WebKit::ProvisionalPageProxy::loadDataWithNavigation):
            (WebKit::ProvisionalPageProxy::loadRequestWithNavigation):
            (WebKit::ProvisionalPageProxy::goToBackForwardItem):
            (WebKit::ProvisionalPageProxy::didCreateMainFrame):
            (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
            (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
            (WebKit::ProvisionalPageProxy::didReceiveMessage):
            (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
            * UIProcess/ProvisionalPageProxy.h: Added.
            (WebKit::ProvisionalPageProxy::page):
            (WebKit::ProvisionalPageProxy::mainFrame const):
            (WebKit::ProvisionalPageProxy::process):
            (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
            (WebKit::ProvisionalPageProxy::navigationID const):
            Add new ProvisionalPageProxy class to wrap the provisional load in the new process
            after a swap. The provisional page is owned by the WebPageProxy and we only commit
            the provisional page when the load is committed. Until then, the WebPageProxy keeps
            using the old process and displaying the current content.

            * UIProcess/SuspendedPageProxy.cpp:
            (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
            (WebKit::SuspendedPageProxy::unsuspend):
            (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
            Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
            when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
            which tries to register itself as an IPC message receiver for the same pageID when
            a process-swap occurs and we're switching to a suspended page.

            * UIProcess/WebFrameProxy.cpp:
            (WebKit::WebFrameProxy::isMainFrame const):
            WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
            Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
            m_mainFrame to maintain previous behavior.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::swapToWebProcess):
            swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
            later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
            to initialize some data members such as the drawing area and the main frame as it is transferring them over from
            the ProvisionalPageProxy which started the provisional load.

            (WebKit::WebPageProxy::finishAttachingToWebProcess):
            We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
            committed in the provisional process.

            (WebKit::WebPageProxy::initializeWebPage):
            - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
              committed in the provisional process.
            - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().

            (WebKit::WebPageProxy::loadRequestWithNavigation):
            Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
            Yes. This avoids hitting some assertions as this was already called during the first API call if needed.

            (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
            In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
            Suspension now happens later, only if we end up committing the provisional load in the new process.
            Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
            to happen a bit later but it is clearer if we do this as early as possible I think.

            (WebKit::WebPageProxy::commitProvisionalPage):
            When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
            - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
            - Suspending the current page.
            - Letting the client know the load is comitted
            - Destroy the ProvisionalPageProxy.
            This work used to happen earlier in continueNavigationInNewProcess().

            (WebKit::WebPageProxy::continueNavigationInNewProcess):
            Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
            without actually having the WebPageProxy switch to the new process yet.

            (WebKit::WebPageProxy::didCreateMainFrame):
            (WebKit::WebPageProxy::didCreateWindow):
            Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.

            (WebKit::WebPageProxy::didDestroyNavigation):
            On process-swap, when telling the previous process to ignore the load and starting the new load in a new
            ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
            the call since the navigation is merely taken over by the ProvisionalPageProxy.

            (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
            Moved some PSON logic to the ProvisionalPageProxy instead.

            (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
            When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.

            (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
            (WebKit::WebPageProxy::decidePolicyForResponse):
            Capture the process in the lambda, to make sure we send the policy decision to the same process that
            asked for it, so as to not get confused by process swaps.

            (WebKit::WebPageProxy::resetState):
            Drop some code that is no longer needed.

            (WebKit::WebPageProxy::creationParameters):
            Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
            more than one call site. This was just some bad factoring.

            (WebKit::WebPageProxy::PageProcessOverride::PageProcessOverride):
            (WebKit::WebPageProxy::PageProcessOverride::~PageProcessOverride):
            * UIProcess/WebPageProxy.h:
            (WebKit::WebPageProxy::temporarilyOverrideProcess):
            Add utility class to temporarily override the WebPageProxy's m_process with the provisional one when
            the ProvisionalPageProxy interacts with the WebPageProxy.

            * UIProcess/WebProcessProxy.cpp:
            (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
            (WebKit::WebProcessProxy::updateBackForwardItem):
            Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
            item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
            associated with this process yet, because it is still a ProvisionalPageProxy.

            (WebKit::WebProcessProxy::canTerminateChildProcess):
            Do not terminate the WebProcess if there are ProvisionalPageProxy objects using it.

            * UIProcess/WebProcessProxy.h:
            (WebKit::WebProcessProxy::addProvisionalPageProxy):
            (WebKit::WebProcessProxy::removeProvisionalPageProxy):

            * WebKit.xcodeproj/project.pbxproj:

            * WebProcess/WebPage/WebFrame.cpp:
            (WebKit::toPolicyAction):
            (WebKit::WebFrame::didReceivePolicyDecision):
            Stop dealing with WebPolicyAction::Suspend as it no longer exists.

            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::reinitializeWebPage):
            (WebKit::WebPage::didReceivePolicyDecision):

            (WebKit::WebPage::setIsSuspended):
            Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
            setIsSuspended(true) IPC is sent when we actually commit the provisional page.

            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

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

        REGRESSION (r236935): Holding down arrow key does not cause repeated DOM keydown events on device
        https://bugs.webkit.org/show_bug.cgi?id=191408
        <rdar://problem/45895135>

        Rubber-stamped by Simon Fraser.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _scrollByContentOffset:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView scrollViewWillStartPanOrPinchGesture]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView keyCommands]):
        (-[WKContentView _arrowKeyForWebView:]):
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):
        (-[WKContentView _scrollOffsetForEvent:]):
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]): Deleted.
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]): Deleted.
        (-[WKContentView keyboardScrollViewAnimatorWillScroll:]): Deleted.
        (-[WKContentView keyboardScrollViewAnimatorDidFinishScrolling:]): Deleted.
        * UIProcess/ios/WKKeyboardScrollingAnimator.h: Removed.
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm: Removed.
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView dealloc]):
        (-[WKPDFView web_handleKeyEvent:]):
        (-[WKPDFView web_initWithFrame:webView:mimeType:]):
        * WebKit.xcodeproj/project.pbxproj:
        Revert WKKeyboardScrollingAnimator.

2019-01-16  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/47260377

    Cherry-pick r239887. rdar://problem/47260377
    
        IndexedDB: leak WebIDBConnectionToClient for retain cycle
        https://bugs.webkit.org/show_bug.cgi?id=193097
        <rdar://problem/46899601>
    
        Reviewed by Brady Eidson.
    
        Source/WebCore:
    
        Let IDBConnectionToClient hold a WeakPtr of IDBConnectionToClientDelegate.
    
        * Modules/indexeddb/server/IDBConnectionToClient.cpp:
        (WebCore::IDBServer::IDBConnectionToClient::IDBConnectionToClient):
        (WebCore::IDBServer::IDBConnectionToClient::identifier const):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteDatabase):
        (WebCore::IDBServer::IDBConnectionToClient::didOpenDatabase):
        (WebCore::IDBServer::IDBConnectionToClient::didAbortTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::didCreateObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didRenameObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didClearObjectStore):
        (WebCore::IDBServer::IDBConnectionToClient::didCreateIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didRenameIndex):
        (WebCore::IDBServer::IDBConnectionToClient::didPutOrAdd):
        (WebCore::IDBServer::IDBConnectionToClient::didGetRecord):
        (WebCore::IDBServer::IDBConnectionToClient::didGetAllRecords):
        (WebCore::IDBServer::IDBConnectionToClient::didGetCount):
        (WebCore::IDBServer::IDBConnectionToClient::didDeleteRecord):
        (WebCore::IDBServer::IDBConnectionToClient::didOpenCursor):
        (WebCore::IDBServer::IDBConnectionToClient::didIterateCursor):
        (WebCore::IDBServer::IDBConnectionToClient::didCommitTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::fireVersionChangeEvent):
        (WebCore::IDBServer::IDBConnectionToClient::didStartTransaction):
        (WebCore::IDBServer::IDBConnectionToClient::didCloseFromServer):
        (WebCore::IDBServer::IDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebCore::IDBServer::IDBConnectionToClient::didGetAllDatabaseNames):
        * Modules/indexeddb/server/IDBConnectionToClient.h:
        * Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
    
        Source/WebKit:
    
        Let WebIDBConnectionToClient hold reference to IPC::Connection instead of NetworkConnectionToWebProcess to break
        the cycle.
    
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
    
        git-svn-id: http://svn.webkit.org/repository/webkit/trunk@239887 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-16  David Kilzer  <ddkilzer@apple.com>

            Cherry-pick r239887. rdar://problem/47260377

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

            IndexedDB: leak WebIDBConnectionToClient for retain cycle
            https://bugs.webkit.org/show_bug.cgi?id=193097
            <rdar://problem/46899601>

            Reviewed by Brady Eidson.

            Let WebIDBConnectionToClient hold reference to IPC::Connection instead of NetworkConnectionToWebProcess to break
            the cycle.

            * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
            (WebKit::WebIDBConnectionToClient::create):
            (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
            (WebKit::WebIDBConnectionToClient::messageSenderConnection):
            * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
            * NetworkProcess/NetworkConnectionToWebProcess.cpp:
            (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):

2019-01-16  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239852. rdar://problem/47260195

    [WebAuthN] Change the nonce in the CTAP kInit command to weak random values
    https://bugs.webkit.org/show_bug.cgi?id=192061
    <rdar://problem/46471091>
    
    Reviewed by Chris Dumez.
    
    Change the nonce in the CTAP kInit command to weak random values as the nonce is mainly
    for being a probabilistically unique global identifier for hand shakes, instead of
    preventing replay attacks. Otherwise, it might exhaust system entropy unnecessarily.
    
    The patch also removes all logging when debugging the test case flakiness.
    
    * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
    (WebKit::AuthenticatorManager::respondReceived):
    (WebKit::AuthenticatorManager::initTimeOutTimer):
    (WebKit::AuthenticatorManager::timeOutTimerFired):
    * UIProcess/WebAuthentication/Cocoa/HidService.mm:
    (WebKit::HidService::deviceAdded):
    * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
    (WebKit::MockAuthenticatorManager::respondReceivedInternal):
    * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
    (WebKit::MockHidConnection::send):
    * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
    (WebKit::CtapHidAuthenticator::makeCredential):
    (WebKit::CtapHidAuthenticator::getAssertion):
    * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
    (WebKit::CtapHidDriver::Worker::write):
    (WebKit::CtapHidDriver::Worker::read):
    (WebKit::CtapHidDriver::Worker::returnMessage):
    (WebKit::CtapHidDriver::transact):
    (WebKit::CtapHidDriver::continueAfterChannelAllocated):
    (WebKit::CtapHidDriver::continueAfterResponseReceived):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239852 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  Jiewen Tan  <jiewen_tan@apple.com>

            [WebAuthN] Change the nonce in the CTAP kInit command to weak random values
            https://bugs.webkit.org/show_bug.cgi?id=192061
            <rdar://problem/46471091>

            Reviewed by Chris Dumez.

            Change the nonce in the CTAP kInit command to weak random values as the nonce is mainly
            for being a probabilistically unique global identifier for hand shakes, instead of
            preventing replay attacks. Otherwise, it might exhaust system entropy unnecessarily.

            The patch also removes all logging when debugging the test case flakiness.

            * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
            (WebKit::AuthenticatorManager::respondReceived):
            (WebKit::AuthenticatorManager::initTimeOutTimer):
            (WebKit::AuthenticatorManager::timeOutTimerFired):
            * UIProcess/WebAuthentication/Cocoa/HidService.mm:
            (WebKit::HidService::deviceAdded):
            * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
            (WebKit::MockAuthenticatorManager::respondReceivedInternal):
            * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
            (WebKit::MockHidConnection::send):
            * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
            (WebKit::CtapHidAuthenticator::makeCredential):
            (WebKit::CtapHidAuthenticator::getAssertion):
            * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
            (WebKit::CtapHidDriver::Worker::write):
            (WebKit::CtapHidDriver::Worker::read):
            (WebKit::CtapHidDriver::Worker::returnMessage):
            (WebKit::CtapHidDriver::transact):
            (WebKit::CtapHidDriver::continueAfterChannelAllocated):
            (WebKit::CtapHidDriver::continueAfterResponseReceived):

2019-01-16  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239757. rdar://problem/47260195

    [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
    https://bugs.webkit.org/show_bug.cgi?id=192061
    
    Reviewed by Dewei Zhu.
    
    Part 6.
    
    Add some additional temporary logging info to determine if data is actually sent.
    Once the bug is determined and fixed, we should remove all logging added in this patch.
    
    * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
    (WebKit::MockHidConnection::send):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239757 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-08  Jiewen Tan  <jiewen_tan@apple.com>

            [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
            https://bugs.webkit.org/show_bug.cgi?id=192061

            Reviewed by Dewei Zhu.

            Part 6.

            Add some additional temporary logging info to determine if data is actually sent.
            Once the bug is determined and fixed, we should remove all logging added in this patch.

            * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
            (WebKit::MockHidConnection::send):

2019-01-10  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Change the nonce in the CTAP kInit command to weak random values
        https://bugs.webkit.org/show_bug.cgi?id=192061
        <rdar://problem/46471091>

        Reviewed by Chris Dumez.

        Change the nonce in the CTAP kInit command to weak random values as the nonce is mainly
        for being a probabilistically unique global identifier for hand shakes, instead of
        preventing replay attacks. Otherwise, it might exhaust system entropy unnecessarily.

        The patch also removes all logging when debugging the test case flakiness.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):
        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::deviceAdded):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::getAssertion):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239904. rdar://problem/4726030

    Have prefers-color-scheme: light always match on macOS versions before Mojave.
    https://bugs.webkit.org/show_bug.cgi?id=191655
    rdar://problem/46074680
    
    Reviewed by Megan Gardner.
    
    Source/JavaScriptCore:
    
    * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
    
    Source/WebCore:
    
    Tests: css-dark-mode/older-systems/prefers-color-scheme.html
           css-dark-mode/older-systems/supported-color-schemes-css.html
           css-dark-mode/older-systems/supported-color-schemes.html
    
    Use new HAVE(OS_DARK_MODE_SUPPORT) to make it easier to find code.
    Added HAVE(OS_DARK_MODE_SUPPORT) around more bits to make it work on older systems.
    
    * Configurations/FeatureDefines.xcconfig:
    * dom/Document.cpp:
    (WebCore::Document::useDarkAppearance const):
    * inspector/agents/InspectorPageAgent.cpp:
    (WebCore::InspectorPageAgent::enable):
    * page/Page.cpp:
    (WebCore::Page::setUseDarkAppearance):
    (WebCore::Page::useDarkAppearance const):
    (WebCore::Page::setUseDarkAppearanceOverride):
    * platform/mac/LocalDefaultSystemAppearance.h:
    (WebCore::LocalDefaultSystemAppearance::usingDarkAppearance const):
    * platform/mac/LocalDefaultSystemAppearance.mm:
    (WebCore::LocalDefaultSystemAppearance::LocalDefaultSystemAppearance):
    (WebCore::LocalDefaultSystemAppearance::~LocalDefaultSystemAppearance):
    * platform/mac/ScrollAnimatorMac.mm:
    * rendering/RenderThemeMac.mm:
    (-[WebCoreTextFieldCell _adjustedCoreUIDrawOptionsForDrawingBordersOnly:]):
    (-[WebListButtonCell drawWithFrame:inView:]):
    (WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const):
    (WebCore::RenderThemeMac::platformInactiveSelectionForegroundColor const):
    (WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const):
    (WebCore::RenderThemeMac::platformInactiveListBoxSelectionBackgroundColor const):
    (WebCore::RenderThemeMac::platformInactiveListBoxSelectionForegroundColor const):
    (WebCore::RenderThemeMac::systemColor const):
    
    Source/WebCore/PAL:
    
    * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
    
    Source/WebKit:
    
    * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::effectiveAppearanceIsDark):
    * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm:
    
    Source/WebKitLegacy/mac:
    
    * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
    * WebView/WebView.mm:
    (-[WebView _effectiveAppearanceIsDark]):
    
    Source/WTF:
    
    * wtf/Platform.h: Define HAVE_OS_DARK_MODE_SUPPORT on macOS 10.14.
    
    Tools:
    
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
    * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle.mm:
    
    LayoutTests:
    
    * css-dark-mode/older-systems/prefers-color-scheme-expected.txt: Added.
    * css-dark-mode/older-systems/prefers-color-scheme.html: Added.
    * css-dark-mode/older-systems/supported-color-schemes-css-expected.txt: Added.
    * css-dark-mode/older-systems/supported-color-schemes-css.html: Added.
    * css-dark-mode/older-systems/supported-color-schemes-expected.txt: Added.
    * css-dark-mode/older-systems/supported-color-schemes.html: Added.
    * platform/mac/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239904 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-12  Timothy Hatcher  <timothy@apple.com>

            Have prefers-color-scheme: light always match on macOS versions before Mojave.
            https://bugs.webkit.org/show_bug.cgi?id=191655
            rdar://problem/46074680

            Reviewed by Megan Gardner.

            * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::effectiveAppearanceIsDark):
            * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm:

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239888. rdar://problem/47260286

    Compile out Web API Statistics Collection
    https://bugs.webkit.org/show_bug.cgi?id=193370
    <rdar://problem/45388584>
    
    Reviewed by Brent Fulgham.
    
    Source/JavaScriptCore:
    
    * Configurations/FeatureDefines.xcconfig:
        Defined ENABLE_WEB_API_STATISTICS, off by default.
    
    Source/WebCore:
    
    No new tests. This patch disables functionality. The associated tests
    are skipped.
    
    These functions are now no-ops unless web API statistics is enabled.
    
    * Configurations/FeatureDefines.xcconfig:
    * loader/ResourceLoadObserver.cpp:
    (WebCore::ResourceLoadObserver::logFontLoad):
    (WebCore::ResourceLoadObserver::logCanvasRead):
    (WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
    (WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
    (WebCore::ResourceLoadObserver::logScreenAPIAccessed):
    * loader/ResourceLoadStatistics.cpp:
    (WebCore::ResourceLoadStatistics::encode const):
    (WebCore::ResourceLoadStatistics::decode):
    (WebCore::ResourceLoadStatistics::toString const):
    (WebCore::ResourceLoadStatistics::merge):
    * loader/ResourceLoadStatistics.h:
        The associated struct members are skipped unless web API
        statistics is enabled.
    
    Source/WebCore/PAL:
    
    * Configurations/FeatureDefines.xcconfig:
        Defined ENABLE_WEB_API_STATISTICS, off by default.
    
    Source/WebKit:
    
    * Configurations/FeatureDefines.xcconfig:
        Defined ENABLE_WEB_API_STATISTICS, off by default.
    * Shared/WebCoreArgumentCoders.cpp:
    (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        Skipped encoding of web API statistics.
    (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        Skipped decoding of web API statistics.
    
    Source/WebKitLegacy/mac:
    
    * Configurations/FeatureDefines.xcconfig:
        Defined ENABLE_WEB_API_STATISTICS, off by default.
    
    Tools:
    
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
        Defined ENABLE_WEB_API_STATISTICS, off by default.
    
    LayoutTests:
    
    * platform/ios-wk2/TestExpectations:
        http/tests/webAPIStatistics skipped.
    * platform/mac-wk2/TestExpectations:
        http/tests/webAPIStatistics skipped.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239888 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-11  John Wilander  <wilander@apple.com>

            Compile out Web API Statistics Collection
            https://bugs.webkit.org/show_bug.cgi?id=193370
            <rdar://problem/45388584>

            Reviewed by Brent Fulgham.

            * Configurations/FeatureDefines.xcconfig:
                Defined ENABLE_WEB_API_STATISTICS, off by default.
            * Shared/WebCoreArgumentCoders.cpp:
            (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
                Skipped encoding of web API statistics.
            (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
                Skipped decoding of web API statistics.

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239880. rdar://problem/47260310

    REGRESSION (PSON): Firefox app lacks Open in New Tab in menu
    https://bugs.webkit.org/show_bug.cgi?id=193366
    <rdar://problem/46097212>
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    * platform/RuntimeApplicationChecks.h:
    * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
    (WebCore::IOSApplication::isFirefox):
    Add a Firefox Mobile bundle check.
    
    Source/WebKit:
    
    A pair of unrelated changes broke Firefox's use of WKWebView internals
    to override the long-press menu. Maintain binary compatibility by
    introducing linked-on-or-after checks.
    
    * UIProcess/Cocoa/VersionChecks.h:
    * UIProcess/WebProcessPool.cpp:
    (WebKit::WebProcessPool::createWebPage):
    Disable PSON in Firefox when linked against an SDK where PSON wasn't enabled by default.
    Because gestures are very stateful, we always swap them out when swapping
    processes (changing that behavior is fairly risky). Also, we don't always
    inform the client when we swap processes (only when the process actually crashes),
    so they currently don't re-adjust the gesture recognizers when a PSON swap occurs.
    
    * UIProcess/ios/WKContentView.mm:
    (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
    Synchronously install gesture recognizers under -init when linked against
    an SDK before the version that introduces lazy gesture recognizer installation.
    r237331 is an optimization that made us lazily install gestures when the
    view is parented, but Firefox (and potentially other clients) depend
    on them being installed synchronously in order to find and override them.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239880 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            REGRESSION (PSON): Firefox app lacks Open in New Tab in menu
            https://bugs.webkit.org/show_bug.cgi?id=193366
            <rdar://problem/46097212>

            Reviewed by Simon Fraser.

            A pair of unrelated changes broke Firefox's use of WKWebView internals
            to override the long-press menu. Maintain binary compatibility by
            introducing linked-on-or-after checks.

            * UIProcess/Cocoa/VersionChecks.h:
            * UIProcess/WebProcessPool.cpp:
            (WebKit::WebProcessPool::createWebPage):
            Disable PSON in Firefox when linked against an SDK where PSON wasn't enabled by default.
            Because gestures are very stateful, we always swap them out when swapping
            processes (changing that behavior is fairly risky). Also, we don't always
            inform the client when we swap processes (only when the process actually crashes),
            so they currently don't re-adjust the gesture recognizers when a PSON swap occurs.

            * UIProcess/ios/WKContentView.mm:
            (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
            Synchronously install gesture recognizers under -init when linked against
            an SDK before the version that introduces lazy gesture recognizer installation.
            r237331 is an optimization that made us lazily install gestures when the
            view is parented, but Firefox (and potentially other clients) depend
            on them being installed synchronously in order to find and override them.

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239851. rdar://problem/47260326

    Add WKBundlePage SPI to temporarily force light or dark appearance on a page.
    https://bugs.webkit.org/show_bug.cgi?id=193327
    rdar://problem/47093222
    
    Reviewed by Tim Horton.
    
    Source/WebKit:
    
    Tests: WebKit.ForceLightAppearanceInBundle API Test
    
    * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
    (WKBundlePageSetUseDarkAppearance): Added.
    (WKBundlePageIsUsingDarkAppearance): Added.
    * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
    
    Tools:
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle.mm: Added.
    (TestWebKitAPI::didFinishNavigation):
    (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
    (TestWebKitAPI::TEST):
    * TestWebKitAPI/Tests/WebKit/mac/ForceLightAppearanceInBundle_Bundle.mm: Added.
    (TestWebKitAPI::ForceLightAppearanceInBundleTest::ForceLightAppearanceInBundleTest):
    (TestWebKitAPI::ForceLightAppearanceInBundleTest::didCreatePage):
    (TestWebKitAPI::ForceLightAppearanceInBundleTest::didReceiveMessage):
    * TestWebKitAPI/Tests/WebKit/mac/dark-mode.html: Added.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239851 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  Timothy Hatcher  <timothy@apple.com>

            Add WKBundlePage SPI to temporarily force light or dark appearance on a page.
            https://bugs.webkit.org/show_bug.cgi?id=193327
            rdar://problem/47093222

            Reviewed by Tim Horton.

            Tests: WebKit.ForceLightAppearanceInBundle API Test

            * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
            (WKBundlePageSetUseDarkAppearance): Added.
            (WKBundlePageIsUsingDarkAppearance): Added.
            * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239850. rdar://problem/47260243

    DeviceID hash salt manager can be NULL
    https://bugs.webkit.org/show_bug.cgi?id=193334
    <rdar://problem/47179650>
    
    Reviewed by Youenn Fablet.
    
    * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
    (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): No need to
    NULL-check websiteDataStore.deviceIdHashSaltStorage, it is a Ref.
    (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
    (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Ditto.
    (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.
    
    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
    (WebKit::WebsiteDataStore::WebsiteDataStore): m_deviceIdHashSaltStorage is a Ref.
    (WebKit::WebsiteDataStore::fetchDataAndApply): Ditto.
    (WebKit::WebsiteDataStore::removeData): Ditto.
    * UIProcess/WebsiteData/WebsiteDataStore.h:
    (WebKit::WebsiteDataStore::deviceIdHashSaltStorage): Ditto.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239850 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            DeviceID hash salt manager can be NULL
            https://bugs.webkit.org/show_bug.cgi?id=193334
            <rdar://problem/47179650>

            Reviewed by Youenn Fablet.

            * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
            (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): No need to
            NULL-check websiteDataStore.deviceIdHashSaltStorage, it is a Ref.
            (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
            (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Ditto.
            (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.

            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
            (WebKit::WebsiteDataStore::WebsiteDataStore): m_deviceIdHashSaltStorage is a Ref.
            (WebKit::WebsiteDataStore::fetchDataAndApply): Ditto.
            (WebKit::WebsiteDataStore::removeData): Ditto.
            * UIProcess/WebsiteData/WebsiteDataStore.h:
            (WebKit::WebsiteDataStore::deviceIdHashSaltStorage): Ditto.

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239843. rdar://problem/47260277

    REGRESSION (r237658): Tap highlight limits cause the highlight to no longer show with legitimate button sizes
    https://bugs.webkit.org/show_bug.cgi?id=193294
    <rdar://problem/46006678>
    
    Reviewed by Simon Fraser.
    
    Input type elements should always paint tap highlight (ignore size heuristic).
    
    * UIProcess/PageClient.h:
    * UIProcess/WebPageProxy.h:
    * UIProcess/WebPageProxy.messages.in:
    * UIProcess/ios/PageClientImplIOS.h:
    * UIProcess/ios/PageClientImplIOS.mm:
    (WebKit::PageClientImpl::didGetTapHighlightGeometries):
    * UIProcess/ios/WKContentViewInteraction.h:
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView _showTapHighlight]):
    (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:nodeHasBuiltInClickHandling:]):
    (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]): Deleted.
    * UIProcess/ios/WebPageProxyIOS.mm:
    (WebKit::WebPageProxy::didGetTapHighlightGeometries):
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::sendTapHighlightForNodeIfNecessary):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239843 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  Zalan Bujtas  <zalan@apple.com>

            REGRESSION (r237658): Tap highlight limits cause the highlight to no longer show with legitimate button sizes
            https://bugs.webkit.org/show_bug.cgi?id=193294
            <rdar://problem/46006678>

            Reviewed by Simon Fraser.

            Input type elements should always paint tap highlight (ignore size heuristic).

            * UIProcess/PageClient.h:
            * UIProcess/WebPageProxy.h:
            * UIProcess/WebPageProxy.messages.in:
            * UIProcess/ios/PageClientImplIOS.h:
            * UIProcess/ios/PageClientImplIOS.mm:
            (WebKit::PageClientImpl::didGetTapHighlightGeometries):
            * UIProcess/ios/WKContentViewInteraction.h:
            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView _showTapHighlight]):
            (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:nodeHasBuiltInClickHandling:]):
            (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]): Deleted.
            * UIProcess/ios/WebPageProxyIOS.mm:
            (WebKit::WebPageProxy::didGetTapHighlightGeometries):
            * WebProcess/WebPage/ios/WebPageIOS.mm:
            (WebKit::WebPage::sendTapHighlightForNodeIfNecessary):

2019-01-15  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239832. rdar://problem/47260343

    Override the session configuration for cookieAcceptPolicy
    https://bugs.webkit.org/show_bug.cgi?id=190925
    <rdar://problem/45497382>
    
    Patch by John Wilander <wilander@apple.com> on 2019-01-10
    Reviewed by Alexey Proskuryakov and Alex Christensen.
    
    Source/WebCore/PAL:
    
    * pal/spi/cf/CFNetworkSPI.h:
        Declaration of _overrideSessionCookieAcceptPolicy on NSHTTPCookieStorage.
    
    Source/WebKit:
    
    * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
    (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        Now sets cookieStorage._overrideSessionCookieAcceptPolicy to YES.
    
    Source/WTF:
    
    * wtf/Platform.h:
        Definition of HAVE_CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY.
    
    Tools:
    
    Test infrastructure for setting a first-party-only cookie policy.
    
    * DumpRenderTree/TestRunner.cpp:
    (setOnlyAcceptFirstPartyCookiesCallback):
    (TestRunner::staticFunctions):
    * DumpRenderTree/TestRunner.h:
    * DumpRenderTree/mac/TestRunnerMac.mm:
    (TestRunner::setOnlyAcceptFirstPartyCookies):
    * DumpRenderTree/win/TestRunnerWin.cpp:
    (TestRunner::setOnlyAcceptFirstPartyCookies):
    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::setOnlyAcceptFirstPartyCookies):
    * WebKitTestRunner/InjectedBundle/TestRunner.h:
    * WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
    
    LayoutTests:
    
    * TestExpectations:
        Skipped since this cookie policy is only supported on Cocoa platforms.
    * http/tests/cookies/only-accept-first-party-cookies-expected.txt: Added.
    * http/tests/cookies/only-accept-first-party-cookies.html: Added.
    * http/tests/cookies/resources/reset-cookies.html: Added.
        To support reset of third-party cookies in an iframe.
    * http/tests/cookies/resources/set-cookie-and-redirect-back.php: Added.
        A simple bounce to set a cookie.
    * platform/ios/TestExpectations:
        Skipped for now. Will be fixed in <rdar://problem/47165939>.
    * platform/mac/TestExpectations:
        Skipped for now. Will be fixed in <rdar://problem/47165939>.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-10  John Wilander  <wilander@apple.com>

            Override the session configuration for cookieAcceptPolicy
            https://bugs.webkit.org/show_bug.cgi?id=190925
            <rdar://problem/45497382>

            Reviewed by Alexey Proskuryakov and Alex Christensen.

            * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
            (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
                Now sets cookieStorage._overrideSessionCookieAcceptPolicy to YES.

2019-01-15  Alan Coon  <alancoon@apple.com>

        Apply patch. rdar://problem/47260255

    2019-01-15  Chris Dumez  <cdumez@apple.com>

            Better disable Automatic HTTPS upgrade
            <rdar://problem/47213216>

            Reviewed by Geoff Garen.

            Drop database file from the bundle as it is currently huge and increases
            our project size unnecessarily.

            Also hide the feature from the experimental feature menu since enabling
            it will not do anything without its database.

            * DerivedSources.make:
            * Shared/WebPreferences.yaml:
            * WebKit.xcodeproj/project.pbxproj:

2019-01-15  Alan Coon  <alancoon@apple.com>

        Revert r239446. rdar://problem/47125351

2019-01-09  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r239777. rdar://problem/47158629

    [PSON] Flash of blank content while transitioning from page A to page B.
    https://bugs.webkit.org/show_bug.cgi?id=193283
    
    Reviewed by Chris Dumez.
    
    Layer tree is not frozen during WebPage construction. If the flush timer (started for the initial
    empty document) manages to run before the actual page load starts, we'll get a flash.
    
    * Shared/WebPageCreationParameters.cpp:
    (WebKit::WebPageCreationParameters::encode const):
    (WebKit::WebPageCreationParameters::decode):
    * Shared/WebPageCreationParameters.h:
    
    Rename shouldDelayAttachingDrawingArea bit to isSwapFromSuspended and make it available on all platforms.
    
    * UIProcess/RemoteLayerTree/mac/ScrollerMac.h: Removed.
    * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm: Removed.
    * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.h: Removed.
    * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm: Removed.
    * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: Removed.
    * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h: Removed.
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::swapToWebProcess):
    (WebKit::WebPageProxy::finishAttachingToWebProcess):
    (WebKit::WebPageProxy::initializeWebPage):
    (WebKit::WebPageProxy::continueNavigationInNewProcess):
    * UIProcess/WebPageProxy.h:
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
    
    Freeze the layer tree in WebPage constructor if this is a swap from a suspended process.
    
    (WebKit::WebPage::reinitializeWebPage):
    (WebKit::WebPage::didCompletePageTransition):
    
    Unfreeze on first non-initial empty document page transition.
    
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
    (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239777 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-09  Antti Koivisto  <antti@apple.com>

            [PSON] Flash of blank content while transitioning from page A to page B.
            https://bugs.webkit.org/show_bug.cgi?id=193283

            Reviewed by Chris Dumez.

            Layer tree is not frozen during WebPage construction. If the flush timer (started for the initial
            empty document) manages to run before the actual page load starts, we'll get a flash.

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

            Rename shouldDelayAttachingDrawingArea bit to isSwapFromSuspended and make it available on all platforms.

            * UIProcess/RemoteLayerTree/mac/ScrollerMac.h: Removed.
            * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm: Removed.
            * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.h: Removed.
            * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm: Removed.
            * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: Removed.
            * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h: Removed.
            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::swapToWebProcess):
            (WebKit::WebPageProxy::finishAttachingToWebProcess):
            (WebKit::WebPageProxy::initializeWebPage):
            (WebKit::WebPageProxy::continueNavigationInNewProcess):
            * UIProcess/WebPageProxy.h:
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::m_shouldAttachDrawingAreaOnPageTransition):

            Freeze the layer tree in WebPage constructor if this is a swap from a suspended process.

            (WebKit::WebPage::reinitializeWebPage):
            (WebKit::WebPage::didCompletePageTransition):

            Unfreeze on first non-initial empty document page transition.

            * WebProcess/WebPage/WebPage.h:
            * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
            (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

2019-01-09  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r239694. rdar://problem/47158722

    Deactivate audio session whenever possible
    https://bugs.webkit.org/show_bug.cgi?id=193188
    <rdar://problem/42678977>
    
    Reviewed by Jer Noble.
    
    Source/WebCore:
    
    Test: media/deactivate-audio-session.html
    
    * platform/audio/AudioSession.cpp:
    (WebCore::AudioSession::tryToSetActive):
    (WebCore::AudioSession::tryToSetActiveInternal):
    * platform/audio/AudioSession.h:
    (WebCore::AudioSession::isActive const):
    
    * platform/audio/PlatformMediaSessionManager.cpp:
    (WebCore::PlatformMediaSessionManager::removeSession):
    (WebCore::deactivateAudioSession):
    (WebCore::PlatformMediaSessionManager::shouldDeactivateAudioSession):
    (WebCore::PlatformMediaSessionManager::setShouldDeactivateAudioSession):
    * platform/audio/PlatformMediaSessionManager.h:
    
    * platform/audio/ios/AudioSessionIOS.mm:
    (WebCore::AudioSession::tryToSetActiveInternal):
    (WebCore::AudioSession::tryToSetActive): Deleted.
    
    * platform/audio/mac/AudioSessionMac.cpp:
    (WebCore::AudioSession::tryToSetActiveInternal):
    (WebCore::AudioSession::tryToSetActive): Deleted.
    
    * testing/Internals.cpp:
    (WebCore::Internals::audioSessionActive const):
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::WebPage):
    
    LayoutTests:
    
    * TestExpectations: Skip the new test.
    * media/deactivate-audio-session-expected.txt: Added.
    * media/deactivate-audio-session.html: Added.
    * platform/ios/TestExpectations: Run the new test.
    * platform/mac-wk2/TestExpectations: Ditto.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239694 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Deactivate audio session whenever possible
            https://bugs.webkit.org/show_bug.cgi?id=193188
            <rdar://problem/42678977>

            Reviewed by Jer Noble.

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

2019-01-09  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r239691. rdar://problem/47158674

    [Cocoa] Add SPI to check if a WKWebView has an inspector frontend
    https://bugs.webkit.org/show_bug.cgi?id=193162
    <rdar://problem/24267143>
    
    Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-01-07
    Reviewed by Alex Christensen.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _hasInspectorFrontend]):
    * UIProcess/API/Cocoa/WKWebViewPrivate.h:
    * UIProcess/WebPageProxy.h:
    (WebKit::WebPageProxy::hasInspectorFrontend const):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239691 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-07  Joseph Pecoraro  <pecoraro@apple.com>

            [Cocoa] Add SPI to check if a WKWebView has an inspector frontend
            https://bugs.webkit.org/show_bug.cgi?id=193162
            <rdar://problem/24267143>

            Reviewed by Alex Christensen.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _hasInspectorFrontend]):
            * UIProcess/API/Cocoa/WKWebViewPrivate.h:
            * UIProcess/WebPageProxy.h:
            (WebKit::WebPageProxy::hasInspectorFrontend const):

2019-01-09  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r239686. rdar://problem/47158659

    Unwanted page navigation after showing & dismissing contextual menu with control-click
    https://bugs.webkit.org/show_bug.cgi?id=192912
    <rdar://problem/46318508>
    
    Reviewed by Timothy Hatcher.
    
    After the conversion to use a mouse event queue, this behavior was observed rarely, especially
    when CPU is under load and lots of things are going on in the page. In other words, it's racy.
    
    Based on NSEvent logging, it seems that when the system is under load, we simply take too long
    to enter the nested runloop that AppKit uses to handle events when the context menu is present.
    AppKit doesn't care whether or not the MouseDown triggered a nested runloop; on my machine it delivers
    the MouseUp event about 130ms after the MouseDown event. If we haven't show the context menu in
    that time, then the MouseUp is enqueued as a normal mouse event. If the Ctrl-click is on a link,
    then the MouseUp will be interpreted by EventHandler as a click event, which in the simplest case
    will initiate a main frame navigation. When the context menu is dismissed and the nested runloop
    is torn down, the navigation IPC message is handled in UIProcess and the page navigates away.
    
    We can't do much to change AppKit's inherently racy behavior, but we can avoid processing
    mouse events that are delivered whilst we are processing the context menu-initiating event.
    From the WebProcess point of view, there is no race anymore because it does not receive the
    MouseUp event.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::showContextMenu):
    If new events come in, drop them on the floor. Based on testing, the nested runloop will discard
    the unpaired MouseUp event anyway, so this does not cause a change in behavior.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239686 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2019-01-07  Brian Burg  <bburg@apple.com>

            Unwanted page navigation after showing & dismissing contextual menu with control-click
            https://bugs.webkit.org/show_bug.cgi?id=192912
            <rdar://problem/46318508>

            Reviewed by Timothy Hatcher.

            After the conversion to use a mouse event queue, this behavior was observed rarely, especially
            when CPU is under load and lots of things are going on in the page. In other words, it's racy.

            Based on NSEvent logging, it seems that when the system is under load, we simply take too long
            to enter the nested runloop that AppKit uses to handle events when the context menu is present.
            AppKit doesn't care whether or not the MouseDown triggered a nested runloop; on my machine it delivers
            the MouseUp event about 130ms after the MouseDown event. If we haven't show the context menu in
            that time, then the MouseUp is enqueued as a normal mouse event. If the Ctrl-click is on a link,
            then the MouseUp will be interpreted by EventHandler as a click event, which in the simplest case
            will initiate a main frame navigation. When the context menu is dismissed and the nested runloop
            is torn down, the navigation IPC message is handled in UIProcess and the page navigates away.

            We can't do much to change AppKit's inherently racy behavior, but we can avoid processing
            mouse events that are delivered whilst we are processing the context menu-initiating event.
            From the WebProcess point of view, there is no race anymore because it does not receive the
            MouseUp event.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::showContextMenu):
            If new events come in, drop them on the floor. Based on testing, the nested runloop will discard
            the unpaired MouseUp event anyway, so this does not cause a change in behavior.

2019-01-09  Alan Coon  <alancoon@apple.com>

        Cherry-pick r239776. rdar://problem/47147610

    WebKit Networking process crashes if the HTTPSUpgradeList is not found in the bundle
    https://bugs.webkit.org/show_bug.cgi?id=193285
    <rdar://problem/47147610>
    
    Reviewed by Geoffrey Garen.
    
    * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
    (WebKit::networkHTTPSUpgradeCheckerDatabasePath):
    (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239776 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            WebKit Networking process crashes if the HTTPSUpgradeList is not found in the bundle
            https://bugs.webkit.org/show_bug.cgi?id=193285
            <rdar://problem/47147610>

            Reviewed by Geoffrey Garen.

            * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
            (WebKit::networkHTTPSUpgradeCheckerDatabasePath):
            (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):

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

        Modernize CacheModel and disk cache fetching and clearing
        https://bugs.webkit.org/show_bug.cgi?id=193164

        Reviewed by Joseph Pecoraro.

        fetchDiskCacheEntries and clearDiskCacheEntries now use an early-return model.
        CacheModel is now an enum class.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::fetchDiskCacheEntries):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::clearDiskCacheEntries):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord const):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::clearDiskCache):
        * Shared/CacheModel.cpp:
        (WebKit::calculateMemoryCacheSizes):
        (WebKit::calculateURLCacheSizes):
        * Shared/CacheModel.h:
        (): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toCacheModel):
        (WebKit::toAPI):
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration pageCacheEnabled]):
        (-[_WKProcessPoolConfiguration setPageCacheEnabled:]):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::setCacheModel):
        (WebKit::WebProcess::clearResourceCaches):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-01-06  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import U2F command/response converters from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=193150
        <rdar://problem/47054028>

        Reviewed by Brent Fulgham.

        Moves helper functions to WebAuthenticationUtils.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticatorInternal::produceHashSet):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (): Deleted.
        (WebKit::LocalAuthenticatorInternal::buildAuthData): Deleted.
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::feedReports):

2019-01-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use save sheet instead of dialog where possible
        https://bugs.webkit.org/show_bug.cgi?id=193160
        <rdar://problem/37399759>

        Reviewed by Devin Rousso.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformSave):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformSave):

2019-01-04  Jer Noble  <jer.noble@apple.com>

        [WebKitLegacy] Media playback pauses on scroll
        https://bugs.webkit.org/show_bug.cgi?id=192829

        Reviewed by Eric Carlson.

        Add a new WebPage, WebPageProxy, & WKWebView SPI to stop, suspend, and resume all
        existing media playback in the page.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _stopAllMediaPlayback]):
        (-[WKWebView _suspendAllMediaPlayback]):
        (-[WKWebView _resumeAllMediaPlayback]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::stopAllMediaPlayback):
        (WebKit::WebPageProxy::suspendAllMediaPlayback):
        (WebKit::WebPageProxy::resumeAllMediaPlayback):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController _showPhishingAlert]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::stopAllMediaPlayback):
        (WebKit::WebPage::suspendAllMediaPlayback):
        (WebKit::WebPage::resumeAllMediaPlayback):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        Add support for toggling device orientation API support per site
        https://bugs.webkit.org/show_bug.cgi?id=193143
        <rdar://problem/46605724>

        Reviewed by Alex Christensen.

        Add support for toggling device orientation API support per site via _WKWebsitePolicies.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _simulateDeviceOrientationChangeWithAlpha:beta:gamma:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setDeviceOrientationEventEnabled:]):
        (-[_WKWebsitePolicies deviceOrientationEventEnabled]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::simulateDeviceOrientationChange):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::simulateDeviceOrientationChange):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        Crash under WebPageProxy::continueNavigationInNewProcess()
        https://bugs.webkit.org/show_bug.cgi?id=193113
        <rdar://problem/46938686>

        Reviewed by Brady Eidson.

        The crash was happening in continueNavigationInNewProcess() when dereferencing
        the Optional<> value returned by API::Navigation::backForwardFrameLoadType(), after verifying
        that API::Navigation::targetItem() is not null.

        When constructing an API::Navigation object with a targetItem, you HAVE to pass
        in a backForwardFrameLoadType as well so this normally is not possible. However,
        it can happen because API::Navigation::setTargetItem() can get called later on and
        set a target item on a Navigation object which potentially does not have a
        backForwardFrameLoadType. This setter was only called in one place in
        decidePolicyForNavigationAction() to update an existing Navigation object using
        the targetItem provided by a NavigationAction. This logic was added with PSON
        support.

        Because I was unable to write a test case reproducing this and because I do not know
        how it can happen in practice that we'd have a NavigationAction with a targetItem
        even though the Navigation object itself is not for a back/forward navigation, I have
        chosen to drop the unsafe API::Navigation::setTargetItem() setter and the call site.
        When the call site was added, with ProcessSwap.NavigateToDataURLThenBack API test,
        the intention was to create a back/forward navigation object instead of a standard load
        navigation one if there is currently no existing Navigation object in the UIProcess.
        This can happen when the back/forward navigation is triggered by the WebProcess via
        JS (e.g. history.back()) and this is what the API test covers. The part of the logic
        that updates an existing Navigation object with a targetItem coming from the
        NavigationAction is untested and I have no evidence it does anything useful. However,
        we DO have evidence that it can cause crashes.

        * UIProcess/API/APINavigation.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

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

        Remove some nonexistent files from the WebKit Xcode project

        * WebKit.xcodeproj/project.pbxproj:
        r238468 and r237205 forgot to remove some files from the project.

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

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

        Reviewed by Chris Dumez.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::startPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

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

        Use WebsiteDataStoreParameters instead of NetworkProcessCreationParameters for IndexedDB directories
        https://bugs.webkit.org/show_bug.cgi?id=193114

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        Deprecate WKContextCreate
        https://bugs.webkit.org/show_bug.cgi?id=193118

        Reviewed by Brady Eidson.

        It has only one use that is being removed in rdar://problem/47030792
        This is a step towards removing ProcessPoolConfiguration::createWithLegacyOptions.
        Also make WKContextCreateWithConfiguration accept a null configuration to make it easier to use.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextCreateWithConfiguration):
        * UIProcess/API/C/WKContext.h:

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

        Fix the build

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):

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

        Share ink choice and ruler between all editable images
        https://bugs.webkit.org/show_bug.cgi?id=193130
        <rdar://problem/46826491>

        Reviewed by Wenson Hsieh.

        * SourcesCocoa.txt:
        Add WKDrawingCoordinator, which maintains WKWebView-wide drawing state,
        and manages a single shared ink picker.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::createDrawingView):
        * UIProcess/ios/EditableImageController.mm:
        (WebKit::EditableImageController::ensureEditableImage):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::createDrawingView):
        Plumb WKDrawingView creation through PageClient, so that it can be instantiated
        with knowledge of its owning WKContentView.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):
        (-[WKContentView _drawingCoordinator]):
        (-[WKContentView _installInkPickerForDrawingViewWithID:]): Deleted.
        (-[WKContentView _uninstallInkPicker]): Deleted.
        Move ink picker management into WKDrawingCoordinator.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:contentView:]):
        (-[WKDrawingView _canvasViewWillBeginDrawing:]):
        (-[WKDrawingView invalidateAttachment]):
        (-[WKDrawingView didChangeRulerState:]):
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]): Deleted.
        (-[WKDrawingView canvasView]): Deleted.
        Use a shared ruler, owned by WKDrawingCoordinator.
        Update the editable image's ink when drawing begins. This way, we don't have
        to push ink changes to all drawings as they happen.

        * UIProcess/ios/WKInkPickerView.h:
        * UIProcess/ios/WKInkPickerView.mm:
        (-[WKInkPickerView initWithContentView:]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        (-[WKInkPickerView setInk:]):
        (-[WKInkPickerView ink]):
        (-[WKInkPickerView initWithDrawingView:]): Deleted.
        (-[WKInkPickerView didPickInk]): Deleted.
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]): Deleted.
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2019-01-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Merge WebEditCommandProxy::nameForEditAction and undoNameForEditAction into a single function
        https://bugs.webkit.org/show_bug.cgi?id=193129

        Reviewed by Tim Horton.

        Remove WebEditCommandProxy::nameForEditAction and use WebCore::nameForUndoRedo instead.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::registerEditCommand):
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::WebEditCommandProxy):
        (WebKit::WebEditCommandProxy::~WebEditCommandProxy):
        (WebKit::WebEditCommandProxy::nameForEditAction): Deleted.
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::addEditCommand):
        (WebKit::WebPageProxy::removeEditCommand):
        (WebKit::WebPageProxy::isValidEditCommand): Deleted.

        Bit of drive-by refactoring: remove an unused function, and make addEditCommand and removeEditCommand take
        references instead of pointers, since these are assumed to be nonnull.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::registerEditCommand):

2019-01-03  Matt Rajca  <mrajca@apple.com>

        Make DidPlayMediaPreventedFromPlaying autoplay event more generic.
        https://bugs.webkit.org/show_bug.cgi?id=193128
        rdar://34554231

        Reviewed by Jer Noble.

        Today, the "DidPlayMediaPreventedFromPlaying" autoplay event is only sent for
        media prevented from autoplaying. It could be generalized to a "DidPlayMediaWithUserGesture"
        event along with a flag that indicates whether or not autoplay was actually prevented.

        Tests: existing API tests were updated to reflect the new names. New API tests
        were added for the new case in which the "DidPlayMediaWithUserGesture" event is sent.

        * Shared/WebCoreArgumentCoders.h: Take into account new flags.
        * UIProcess/API/C/WKPage.cpp: Ditto.
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h: Ditto.
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Ditto.
        * UIProcess/Cocoa/UIDelegate.mm: Ditto.
        (WebKit::toWKAutoplayEventFlags):
        (WebKit::toWKAutoplayEvent):

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

        [curl] Move cookiePersistentStorageFile from NetworkProcessCreationParameters to NetworkSessionCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192970

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const): Removed code for cookiePersistentStorageFile.
        (WebKit::NetworkProcessCreationParameters::decode): Ditto.
        * NetworkProcess/NetworkProcessCreationParameters.h: Ditto.
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess): Ditto.

        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters): Added code for cookiePersistentStorageFile.
        (WebKit::NetworkSessionCreationParameters::encode const): Ditto.
        (WebKit::NetworkSessionCreationParameters::decode): Ditto.
        * NetworkProcess/NetworkSessionCreationParameters.h: Ditto.
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl): Ditto.

        * NetworkProcess/Cookies/WebCookieManager.h: Removed setCookiePersistentStorage method of curl port extension.
        * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage): Deleted.

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

        [PSON] Calling history.back() from inside the load event handler prevents process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=193120

        Reviewed by Alex Christensen.

        A HistoryItem is created only *after* we've fired the load event. As a result, if you call
        history.back() in JS from inside the load event handler, the current HistoryItem and and
        the target HistoryItem will be the same. This is normally not an issue. However, there was
        logic inside of WebProcessPool::processForNavigationInternal() which would compare the
        processID of the source and destination BackForwardListItems and which would force a process
        reuse if both BackForwardListItems came from the same WebContent process. So even though
        we swapped when doing a standard load from site A to site B, we would fail to swap if site
        B called history.back() from inside its load event handler.

        To address the issue, stop relying on the source backforward item's processID. Instead, just
        use the WebContent process matching the destination backforward item's processID if it still
        exists.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

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

        Bring back parent processID for logging
        https://bugs.webkit.org/show_bug.cgi?id=193121
        <rdar://problem/47031634>

        Reviewed by Alex Christensen.

        Bug 192961 removes presentingApplicationPID from
        NetworkProcessCreationParameters because it was (a) stored in some
        global state, the use of which is being minimized, and (b) it was
        largely unused. However, it was actually still being used in some
        useful logging in order to tie together child processes with their
        parent process. Re-introduce this value in NetworkLoadParameters so
        that we can log it.

        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::preconnectTo):

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

        Make RestrictedHTTPResponseAccess an internal flag
        https://bugs.webkit.org/show_bug.cgi?id=193145

        Reviewed by Chris Dumez.

        * Shared/WebPreferences.yaml: This will ease debugging.

2019-01-04  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Enable logging for services in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=192705

        Reviewed by Brent Fulgham.

        When running layout tests, we didn’t see 107 services being looked up through launchd. We should
        add logging to these services to determine which services we actually need in the sandbox.

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

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

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

        Breaks shipping tests (Requested by bfulgha__ on #webkit).

        Reverted changeset:

        "[iOS] Update sandbox profile to use iconservices instead of
        lsdiconservice"
        https://bugs.webkit.org/show_bug.cgi?id=193115
        https://trac.webkit.org/changeset/239603

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

        Crash under WebProcessPool::addSuspendedPage()
        https://bugs.webkit.org/show_bug.cgi?id=193110

        Reviewed by Youenn Fablet.

        When PageCache is disabled, WebProcessPool::m_maxSuspendedPageCount is 0 and WebProcessPool::addSuspendedPage()
        would call m_suspendedPages.removeFirst() even though m_suspendedPages is empty, causing a crash.
        Do an early return when m_maxSuspendedPageCount is 0 since we do not want to add any suspended page in this
        case.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addSuspendedPage):

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Silently deny access to mail settings triggered by MessageUI framework
        https://bugs.webkit.org/show_bug.cgi?id=193123
        <rdar://problem/42485581>

        Reviewed by Alexey Proskuryakov.

        Remove unhelpful logging generated when we block access to non-WebKit preferences. These
        invalid checks are done by an system framework that we cannot modify.

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

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Update sandbox profile to use iconservices instead of lsdiconservice
        https://bugs.webkit.org/show_bug.cgi?id=193115
        <rdar://problem/44867379>

        Reviewed by Eric Carlson.

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

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        Remove logic handling DNT header during redirects
        https://bugs.webkit.org/show_bug.cgi?id=193082
        <rdar://problem/45555965>

        Reviewed by Chris Dumez.

        Test: http/wpt/fetch/dnt-header-after-redirection.html.

        Don't bother looking for (or passing along) DNT headers during redirects.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::check):
        (WebKit::NetworkLoadChecker::prepareRedirectedRequest): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::restartNetworkLoad):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):

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

        Add release logging to help debug HTTPS upgrade issues
        https://bugs.webkit.org/show_bug.cgi?id=193075

        Reviewed by Alex Christensen.

        Add release logging to help debug HTTPS upgrade issues like Bug 193026.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::query):

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

        NetworkProcess should initialize its default NetworkSession with parameters from the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192967

        Reviewed by Brent Fulgham.

        I moved 3 of the NetworkProcessCreationParameters to use corresponding values of a WebsiteDataStoreParameters.
        More will be moved in the near future, like indexedDatabaseDirectory.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2019-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] REGRESSION (r239441): Tab cycling to offscreen <select> may not scroll it into view
        https://bugs.webkit.org/show_bug.cgi?id=193084
        <rdar://problem/47006882>

        Reviewed by Simon Fraser.

        In `WKWebView.mm`, `-_zoomToFocusRect:` will ignore the given selection rect if it is of size `{ 0, 0 }` and at
        the origin. Prior to r239441, when using the tab key to move focus between non-editable form controls (or any
        other method that doesn't involve tapping on the focused select element, with the exception of the next and
        previous buttons in the input accessory view), we would compute a selection rect of `{{ 0, 0 }, { 0, 0 }}`, and
        subsequently try to scroll the focused element to the center of the visible area, without taking the selection
        rect into account.

        However, after r239441, the web process sends the element interaction location to the UI process, which then
        computes the selection rect by taking this location and adding a size of `{ 1, 1 }` (before r239441, this was
        done in `WebPage::getAssistedNodeInformation`). However, our new implementation doesn't take into account the
        case where the element interaction rect is null, which happens when the last interaction location is outside of
        the bounding rect of the element. In this case, we set the element interaction location to { 0, 0 } and end up
        computing a selection rect of `{{ 0, 0 }, { 1, 1 }}` instead of `{{ 0, 0 }, { 0, 0 }}` as we would have
        previously done. This causes us to scroll up to the origin, instead of revealing the focused element.

        To fix this, we restore the pre-r239441 behavior. See additional comments below for details.

        Test: fast/forms/ios/scroll-to-reveal-focused-select.html

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

        Rename `elementInteractionLocation` to `lastInteractionLocation`. This was previously
        `elementInteractionLocation` due to existing logic that tries to move the interaction location into the bounding
        rect of the element in the case where visual viewports are disabled; however, since this feature has long been
        enabled by default for all modern WebKit clients (internal and external), it's simpler to just use always send
        the last interaction location over to the UI process, and have the UI process use `{{ 0, 0 }, { 0, 0 }}` if
        the interaction location is outside of the element rect.

        In the very unlikely event that any modern WebKit client disables visual viewports, this will still behave
        reasonably, since we'll just use `{{ 0, 0 }, { 0, 0 }}` as the target rect and scroll to reveal the entire
        element rather than the top left corner of the element.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (rectToRevealWhenZoomingToFocusedElement):
        * WebProcess/WebPage/ios/WebPageIOS.mm:

        Move the check for whether the interaction location is inside the element's bounding rect from the web process
        to the UI process. This relocates the logic to determine whether the selection rect should be a 1 by 1 fallback
        interaction rect or the zero rect (`{{ 0, 0 }, { 0, 0 }}`) closer to the code that actually uses this rect.

        (WebKit::WebPage::getFocusedElementInformation):

2019-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebUndoStep's monotonically increasing identifier should be a WebUndoStepID instead of uint64_t
        https://bugs.webkit.org/show_bug.cgi?id=193100

        Reviewed by Simon Fraser.

        Add a type alias, WebUndoStepID, to represent the monotonically increasing undo step ID for each undoable
        editing command, and use this type alias in lieu of `uint64_t`. No change in behavior.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::WebEditCommandProxy):
        * UIProcess/WebEditCommandProxy.h:
        (WebKit::WebEditCommandProxy::create):
        (WebKit::WebEditCommandProxy::commandID const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::registerEditCommandForUndo):
        * UIProcess/WebPageProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):

        Store the step ID in a temporary variable, since `webUndoStep` is now moved when calling `addWebUndoStep`.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::webUndoStep):
        (WebKit::WebPage::addWebUndoStep):

        Make this take a `Ref<WebUndoStep>&&` instead of a `WebUndoStep*`, and use move semantics to transfer the
        given `Ref` to the table.

        (WebKit::WebPage::removeWebEditCommand):
        (WebKit::WebPage::unapplyEditCommand):
        (WebKit::WebPage::reapplyEditCommand):

        Use `auto*` in a couple of places.

        (WebKit::WebPage::didRemoveEditCommand):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebUndoStep.cpp:
        (WebKit::generateUndoStep):
        * WebProcess/WebPage/WebUndoStep.h:
        (WebKit::WebUndoStep::stepID const):
        (WebKit::WebUndoStep::WebUndoStep):
        * WebProcess/WebPage/WebUndoStepID.h: Copied from Source/WebKit/WebProcess/WebPage/WebUndoStep.cpp.

2019-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for using the current text selection as the find string on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193034
        <rdar://problem/45138739>

        Reviewed by Tim Horton.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _takeFindStringFromSelection:]):

        Provides a way to set the find string on iOS and macOS (an aside: takeFindStringFromSelection: already exists on
        macOS, but there is no equivalent protocol method on iOS, so this new SPI acts as a cross-platform way for
        WebKit clients to take the find string from the selection across all Cocoa platforms).

        (+[WKWebView _stringForFind]):
        (+[WKWebView _setStringForFind:]):

        Call into find-in-page helper functions.

        (-[WKWebView _findString:options:maxCount:]):

        On iOS, additionally update the find-in-page string when exercising the _findString:options:maxCount: SPI. This
        mirrors macOS behavior of updating the find pasteboard every time the find string changes; however, on macOS,
        this is implemented by the platform (in AppKit), whereas there's no platform find pasteboard on iOS, let alone
        logic to update it in UIKit. As such, we directly drive updates to the find string within WebKit.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add some new cross-platform find-in-page SPI. See above for more details.

        * UIProcess/Cocoa/GlobalFindInPageState.h: Added.
        * UIProcess/Cocoa/GlobalFindInPageState.mm: Added.
        (WebKit::findPasteboard):
        (WebKit::globalStringForFind):

        Fetch the string to use when finding text in the page. On macOS, this accesses the AppKit find pasteboard; on
        iOS, this instead returns the current global find string.

        (WebKit::updateStringForFind):

        Sets the global find string. Uses the find pasteboard on macOS, and sets the global find string on iOS.

        (WebKit::stringForFind):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Add plumbing to allow WebEditorClient to deliver the update the global find string in the UI process.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::updateStringForFind):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::updateStringForFind):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateStringForFind):

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Allow WebContent process access to some drawing-related IOKit properties
        https://bugs.webkit.org/show_bug.cgi?id=193086
        <rdar://problem/46568088>

        Reviewed by Eric Carlson.

        Update the iOS WebContent process sandbox to allow access to some IOKit properties
        that are needed for drawing and media playback operations.

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

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Remove unused logging service 
        https://bugs.webkit.org/show_bug.cgi?id=193081
        <rdar://problem/40414815>

        Reviewed by Alexey Proskuryakov.

        We don't use this logging service, so don't open an exception for it.

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

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Remove temporary workaround for CVMS code signing objects
        https://bugs.webkit.org/show_bug.cgi?id=193079
        <rdar://problem/40139202>

        Reviewed by Alexey Proskuryakov.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r239441): [iOS] Selection UI sometimes doesn't change after tapping "select all" in the callout bar
        https://bugs.webkit.org/show_bug.cgi?id=193070
        <rdar://problem/46921508>

        Reviewed by Tim Horton.

        r239441 added logic to include an EditorState in the next layer tree commit when refocusing an element; this was
        done to ensure that after tapping an element that has already been programmatically focused, we still send up-
        to-date editor information to the UI process for the purposes of zooming to the selection rect, even if the
        selection in the DOM is unchanged, since other aspects of the editor state may have changed since the element
        was initially focused.

        We currently try to flag the next layer tree commit by setting `m_hasPendingEditorStateUpdate` to `true`.
        However, this is problematic since we aren't guaranteed in all cases that a compositing flush has been
        scheduled. In the case where it hasn't, we'll end up in a state where the editor state update flag has been set,
        yet the update will not make it over to the UI process until something happens that forces a layer tree commit
        (e.g. scrolling, pinch zooming). Worse still, if the selection is then programmatically changed from the web
        process, we will bail from sending a subsequent editor state update to the UI process because `WebPage` thinks
        that a pending editor state has already been scheduled. This manifests in selection UI not updating after
        tapping "Select All" in the callout bar, if the callout bar was brought up by tapping near the selection (since
        this refocuses the element).

        To fix this, we adjust this logic in `WebPage::elementDidRefocus` so that it sets the flag and then schedules a
        compositing flush, but only if the user is actually interacting with the focused element (i.e., if the page
        calls `focus` repeatedly, we won't continue to schedule compositing flushes).

        Test: editing/selection/ios/change-selection-after-tapping-focused-element.html

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::elementDidRefocus):
        (WebKit::WebPage::sendEditorStateUpdate):
        (WebKit::WebPage::scheduleFullEditorStateUpdate):

        Add a private helper method to schedule an editor state update by setting `m_hasPendingEditorStateUpdate` to
        `true` and then scheduling a compositing layer flush. Also, add a FIXME aluding to the fact that scheduling an
        entire compositing layer flush to send an editor state update is somewhat wasteful, and should be replaced by
        just scheduling this work to be done before the next frame (see: <rdar://problem/36523583> for more detail).

        We also use this helper method in a few places where we currently turn on the editor state flag and schedule a
        subsequent compositing flush.

        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):
        * WebProcess/WebPage/WebPage.h:

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

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

        basic browsing seems not to work (Requested by thorton on
        #webkit).

        Reverted changeset:

        "Expand use of sourceApplicationAuditData"
        https://bugs.webkit.org/show_bug.cgi?id=192995
        https://trac.webkit.org/changeset/239524

2019-01-01  Jeff Miller  <jeffm@apple.com>

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

        Reviewed by Mark Lam.

        * 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:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

2018-12-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        Move WKEditCommandObjC and WKEditorUndoTargetObjC into a separate file
        https://bugs.webkit.org/show_bug.cgi?id=193049

        Reviewed by Sam Weinig.

        Pull common code (WKEditCommandObjC and WKEditorUndoTargetObjC) on iOS and macOS out into a separate file. No
        change in behavior.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WKEditCommand.h: Added.
        * UIProcess/Cocoa/WKEditCommand.mm: Added.

        Rename WKEditCommandObjC to WKEditCommand, and WKEditorUndoTargetObjC to WKEditorUndoTarget. The ObjC suffix in
        the name seems to diverge from the common naming scheme in other parts of WebKit, where most WK- and _WK-
        prefixed names already refer to Objective-C objects. Additionally, mark -[WKEditCommand init] as unavailable.

        (-[WKEditCommand initWithWebEditCommandProxy:]):

        Make the return type instancetype instead of id, and also make this take a Ref<WebEditCommandProxy>&& instead
        of a RefPtr.

        (-[WKEditCommand command]):

        Make this return a reference to the WebEditCommandProxy, rather than a pointer, since the WebEditCommandProxy
        should always be non-null.

        (-[WKEditorUndoTarget undoEditing:]):
        (-[WKEditorUndoTarget redoEditing:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::registerEditCommand):

        Use WTFMove instead of copying the Ref when creating a WKEditCommand.

        (-[WKEditCommandObjC initWithWebEditCommandProxy:]): Deleted.
        (-[WKEditCommandObjC command]): Deleted.
        (-[WKEditorUndoTargetObjC undoEditing:]): Deleted.
        (-[WKEditorUndoTargetObjC redoEditing:]): Deleted.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::registerEditCommand):

        Use WTFMove instead of creating a new RefPtr when creating a WKEditCommand.

        (-[WKEditCommandObjC initWithWebEditCommandProxy:]): Deleted.
        (-[WKEditCommandObjC command]): Deleted.
        (-[WKEditorUndoTargetObjC undoEditing:]): Deleted.
        (-[WKEditorUndoTargetObjC redoEditing:]): Deleted.
        * UIProcess/mac/PageClientImplMac.h:
        * WebKit.xcodeproj/project.pbxproj:

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

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

        Reviewed by Yusuke Suzuki.

        * PlatformMac.cmake:

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

        [MSVC] error C2381: 'WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker': redefinition; '__declspec(noreturn)' or '[[noreturn]]' differs
        https://bugs.webkit.org/show_bug.cgi?id=193030

        Reviewed by Ross Kirsling.

        Windows Debug builds are failing to compile due to
        NO_RETURN_DUE_TO_ASSERT inconsistency of
        NetworkHTTPSUpgradeChecker destructor's definition and
        declaration.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Added
        NO_RETURN_DUE_TO_ASSERT to NetworkHTTPSUpgradeChecker destructor
        declaration.
        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: Removed
        NO_RETURN_DUE_TO_ASSERT from the definition.

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

        [WebKit][Win] Remove using namespace in the global scope
        https://bugs.webkit.org/show_bug.cgi?id=192968

        Reviewed by Alex Christensen.

        Moved using namespace statements in the global scope to inside
        namespaces.
        <https://webkit.org/code-style-guidelines/#using-position>

        * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
        * Shared/Plugins/Netscape/NetscapePluginModuleNone.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        * Shared/win/NativeWebKeyboardEventWin.cpp:
        * Shared/win/WebEventFactory.cpp:
        * UIProcess/Automation/WebAutomationSession.cpp:

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

        Remove "using namespace std;"
        https://bugs.webkit.org/show_bug.cgi?id=192973

        Reviewed by Alex Christensen.

        * Platform/IPC/win/ConnectionWin.cpp:

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

        Change ScrollingNodeType to an enum class
        https://bugs.webkit.org/show_bug.cgi?id=193009

        Reviewed by Zalan Bujtas.

        Change the ScrollingNodeType enum to an enum class.
        
        No behavior change.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::encodeNodeAndDescendants):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        (WebKit::dump):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll):

2018-12-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Remove some unnecessary editing SPI after <rdar://problem/46047546>
        https://bugs.webkit.org/show_bug.cgi?id=193019

        Reviewed by Dan Bernstein.

        Remove these SPI method declarations, as well as method forwarding in WKContentView. Mail was the only adoptee
        of these methods; after <rdar://problem/46047546>, they have moved to the underscore-prefixed versions, so we
        we have no need for these erroneously-named SPI methods anymore. There is no change in behavior; verified this
        through existing API tests (WKWebViewEditActions), as well as building iOS Mail against WebKit with these
        changes to WKWebViewPrivate.h.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]):
        (-[WKWebView targetForAction:withSender:]):
        (-[WKWebView _setFont:sender:]):
        (-[WKWebView _setFontSize:sender:]):
        (-[WKWebView _setTextColor:sender:]):
        (-[WKWebView setFont:sender:]): Deleted.
        (-[WKWebView setTextColor:sender:]): Deleted.
        (-[WKWebView setFontSize:sender:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView setFontForWebView:sender:]): Deleted.
        (-[WKContentView setFontSizeForWebView:sender:]): Deleted.
        (-[WKContentView setTextColorForWebView:sender:]): Deleted.

2018-12-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix fast/ruby/ruby-base-merge-block-children-crash-2.html after r239543
        https://bugs.webkit.org/show_bug.cgi?id=193015
        <rdar://problem/46583527>

        Reviewed by Tim Horton.

        Fix the crash by gracefully handling integer overflow when computing the area of a very large editable element.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _updateChangedSelection:]):

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

        [iOS] Suppress native selection behaviors when focusing a very small editable element
        https://bugs.webkit.org/show_bug.cgi?id=193005
        <rdar://problem/46583527>

        Reviewed by Tim Horton.

        In r238146, I added a mechanism to detect when the selection is hidden within transparent editable elements, and
        used this to suppress native selection on iOS (such as selection handles, highlight, callout bar, etc.) to avoid
        conflicts between the page's editing UI and the platform.

        However, one additional technique observed on some websites involves hiding the selection by moving it into a
        tiny (1x1) editable element. Here, we currently still present a callout bar with editing actions, as well as
        show a selection caret or handles on iOS. To fix this, we extend the mechanism added in r238146 by also
        suppressing the selection assistant in the case where the editable element's area is beneath a tiny minimum
        threshold.

        Test: editing/selection/ios/hide-selection-in-tiny-contenteditable.html

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        (WebKit::operator<<):
        * Shared/EditorState.h:

        Rename selectionClipRect to focusedElementRect. We currently propagate the bounds of the focused element to the
        UI process through EditorState updates, but only for the purpose of returning it in the computed selection clip
        rect; instead, rename this member to something more general-purpose, so we can also use it when determining
        whether to suppress the selection assistant.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _candidateRect]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::handleRequestedCandidates):
        * UIProcess/ios/WKContentViewInteraction.h:

        Add a new SuppressSelectionAssistantReason that corresponds to focusing tiny editable elements.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView _selectionClipRect]):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _updateChangedSelection:]):

        Check the size of the focused element, and begin or stop suppressing the selection assistant accordingly.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformEditorState const):

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

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

        Reviewed by Alex Christensen.

        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::create):
        * PluginProcess/WebProcessConnection.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (-[WKConnection sendMessageWithName:body:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
        (-[WKWebView _takeViewSnapshot]):
        (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
        * UIProcess/API/glib/WebKitGeolocationProvider.cpp:
        (WebKit::WebKitGeolocationProvider::notifyPositionChanged):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_allow_tls_certificate_for_host):
        * UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp:
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
        * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
        * UIProcess/BackingStore.cpp:
        (WebKit::BackingStore::incorporateUpdate):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::createErrorWithRecoveryAttempter):
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionManagerProxy::create):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::create):
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::setPasteboardBufferForType):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeViewSnapshot):
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::createDownloadProxy):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::show):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateSubframe):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getStatistics):
        (WebKit::WebProcessPool::requestWebContentStatistics):
        (WebKit::WebProcessPool::requestNetworkingStatistics):
        * UIProcess/WebProcessPool.h:
        * UIProcess/gstreamer/WebPageProxyGStreamer.cpp:
        (WebKit::WebPageProxy::requestInstallMissingMediaPlugins):
        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setPromisedDataForImage):
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm:
        (-[WKDOMRange initWithDocument:]):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::snapshot):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::addArchiveResource):
        (WebKit::PDFPlugin::snapshot):
        (WebKit::PDFPlugin::writeItemsToPasteboard):
        * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
        (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::snapshot):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performURLRequest):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::exceededDatabaseQuota):
        (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getPathnamesForType):
        * WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
        (WebKit::convertCairoSurfaceToShareableBitmap):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::updateFindIndicator):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::webArchiveData):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPage::performDragControllerAction):
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::replaceDictatedText):
        (WebKit::WebPage::getPositionInformation):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::storageArea):
        (WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea):
        (WebKit::StorageNamespaceImpl::copy):
        * WebProcess/WebStorage/StorageNamespaceImpl.h:
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::getOrCreate):
        (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace):
        * WebProcess/WebStorage/WebStorageNamespaceProvider.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::createModelAndInterface):

2018-12-21  Chris Dumez  <cdumez@apple.com>

        navigator.userAgent in service workers does not reflect customUserAgent set by client
        https://bugs.webkit.org/show_bug.cgi?id=192951

        Reviewed by Youenn Fablet.

        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

        Expand use of sourceApplicationAuditData
        https://bugs.webkit.org/show_bug.cgi?id=192995
        <rdar://problem/46627875>

        Reviewed by Brady Eidson.

        sourceApplicationAuditData has been used for a long time on iOS, but it's needed on more platforms.
        I also made it return an Optional instead of a bool and returning by reference. Ahhh. So much nicer.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::getAuditToken):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::sourceApplicationAuditData const):

2018-12-21  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 5.

        Add some additional temporary logging info to determine if the time out value passed to the timer is respected.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        Reviewed by Dewei Zhu.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):

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

        Crash in com.apple.WebKit: WebKit::WebResourceLoader::willSendRequest + 223
        https://bugs.webkit.org/show_bug.cgi?id=192989

        Reviewed by Chris Dumez.

        willSendRequest is calling maybeLoadFallbackForRedirect, which can
        delete “this”. After that, some new logging code tries to access
        “this” and causes the crash. Fix this by adjusting the scope of a
        "protectedThis".

        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):

2018-12-21  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add DeviceIdHashSaltStorage disk persistence
        https://bugs.webkit.org/show_bug.cgi?id=190466

        Reviewed by Youenn Fablet.

        Added persistency to the DeviceIdHashSaltStorage. Implemented a
        decoder and an encoder for the HashSaltForOrigin struct to store
        it in a file, this allows us to save the lastTimeUsed, the origin
        and the hash salt. It uses a new directory where it creates a file
        per hash salt, the name of the file is the hash salt to avoid
        leaking information in the system. The last time used and the
        origin are stored inside the file, it also adds a version
        directory used to change the structure of the file in the future,
        if we need to do it. In the DeviceIdHashSaltStorage class the disk
        operations happen in a WorkQueue, but all interactions go in the
        main thread. We added code to handle the operations when the load
        still did not finish.

        * Platform/Logging.h:
        Added channel DiskPersistency..
        * Sources.txt: Added new files.
        * UIProcess/API/APIProcessPoolConfiguration.cpp: Added code to set
        the directory for the deviceIdHashSalts. That way we can use the
        configuration when creating the DeviceIdHashSaltStorage.
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):
        Added code to set the directory in the disk used to store the
        information.
        * UIProcess/API/APIWebsiteDataStore.h: Ditto.
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: Added dummy
        implementation to get the directory in cocoa.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: Defined the
        default directories used to store the information in the disk.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        (webkitWebsiteDataManagerGetDataStore): Added the directory used
        to store the information.
        (webkit_website_data_manager_remove): Modified the way we use to
        make sure when we remove the cookies we also remove the hash salts.
        * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: Added dummy
        implementations to get the directory in windows platform.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        * UIProcess/API/C/WKBackForwardListItemRef.cpp: Add namespace, it
        seems some unified build compilation issue.
        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::create): Added a create method
        used to pass the directory and the persistency status of the websitedatastore.
        (WebKit::DeviceIdHashSaltStorage::completeHandler): Added to share
        the code copying the origins to complete the get handler.
        (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall):
        Added to share the code when completing the task of getting a new
        hash salt.
        (WebKit::DeviceIdHashSaltStorage::DeviceIdHashSaltStorage): Added
        a new constructor for the create method.
        (WebKit::getSecurityOriginData): Added to get the
        SecurityOriginData from a field in the decoder and do all the
        checks.
        (WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk): Open the
        directory and restore all the hash salts from disk to the memory
        structure.
        (WebKit::DeviceIdHashSaltStorage::createEncoderFromData const):
        Creates the decoder to store the HashSaltForOrigin structure.
        (WebKit::DeviceIdHashSaltStorage::storeHashSaltToDisk): Write to
        disk a decoder object created from a HashSaltForOrigin
        structure. It uses the writeEncoderToDisk function.
        (WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin): Make
        sure we store in disk a new hash salt when it is generated and the
        WebsiteDataStore is persistent. Add a completionHandler to return
        the value found or generated, this way we can control if the
        HashMap is already loaded from disk.
        (WebKit::DeviceIdHashSaltStorage::getDeviceIdHashSaltOrigins):
        Make sure we run the get in a queue now that we store information
        in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteHashSaltFromDiskIfNeeded):
        Added code to make sure we remove the files in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins):
        Added code to use the deleteHashSaltFromDiskIfNeeded and remove the files in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltOriginsModifiedSince):
        Added code to use the deleteHashSaltFromDiskIfNeeded and remove the files in disk.
        * UIProcess/DeviceIdHashSaltStorage.h: Ditto.
        * UIProcess/PersistencyUtils.cpp: Added file to share the
        persistency code with the ResourceLoadStatisticsPersistentStorage class.
        (WebKit::createDecoderForFile): Ditto.
        (WebKit::writeEncoderToDisk): Ditto.
        * UIProcess/PersistencyUtils.h: Ditto.
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp: Use the
        new PersistencyUtils functions shared with the
        DeviceIdHashSaltStorage class.
        (WebKit::ResourceLoadStatisticsPersistentStorage::refreshMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: After
        changing the API of the deviceIdHashSaltForOrigin we now use a
        completionHandler because it could happen the HashMap is not still
        loaded and we would have to wait for it. We refactored the calls
        to the method to use this new completionHandler.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore): Create the
        DeviceIdHashSaltStorage class with the persistency information.
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Make
        sure we have the directory to store the information.
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: Add get
        and set functions for the deviceHashSaltStorageDirectory.
        * WebKit.xcodeproj/project.pbxproj: Added PersistencyUtils file to
        the xcode compilation.

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

        Remove unused NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192961

        Reviewed by Andy Estes.

        loadThrottleLatency isn't used since I replaced it with NetworkSessionCreationParameters.loadThrottleLatency in r238654
        presentingApplicationPID has no effect because that value is only used in the WebProcess in NetworkExtensionContentFilter::initialize

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::hasValue() instead of Optional::has_value()
        https://bugs.webkit.org/show_bug.cgi?id=192948

        Reviewed by Tim Horton.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::AutomationCommandError::toProtocolString):
        (WebKit::WebAutomationSession::willClosePage):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):

2018-12-20  Jeremy Jones  <jeremyj@apple.com>

        Flicker when exiting element fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=192774
        rdar://problem/33088878

        Reviewed by Jer Noble.

        Fixes an issue where the web page would flicker upon exiting element fullscreen.

        Replace WebView with a snapshot while the WebView is restyled and resized for inline.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController initWithWindow:webView:page:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Move HTTPS_UPGRADE code behind a runtime flag, off by default
        https://bugs.webkit.org/show_bug.cgi?id=192937

        Reviewed by Youenn Fablet.

        Move HTTPS_UPGRADE code behind a runtime flag, off by default and drop the build time flag.

        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * Shared/WebPreferences.yaml:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        * config.h:

2018-12-20  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a runtime flag for local authenticator
        https://bugs.webkit.org/show_bug.cgi?id=192792
        <rdar://problem/46798738>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebAuthenticationLocalAuthenticatorEnabled):
        (WKPreferencesGetWebAuthenticationLocalAuthenticatorEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::isAvailable):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::valueOr() instead of Optional::value_or()
        https://bugs.webkit.org/show_bug.cgi?id=192933

        Reviewed by Geoffrey Garen.

        * Shared/API/c/WKSecurityOriginRef.cpp:
        (WKSecurityOriginGetPort):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/WKSecurityOrigin.mm:
        (-[WKSecurityOrigin port]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _cpuLimit]):
        * UIProcess/API/glib/WebKitSecurityOrigin.cpp:
        (webkit_security_origin_get_port):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseHandleWheelEvent):
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputKeyFrame::maximumDuration const):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Automation/WebAutomationSessionMacros.h:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::deviceScaleFactor const):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewportSizeForCSSViewportUnits const):
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::activateItem):
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFormDataElement):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::convertFromPDFViewToRootView const):
        (WebKit::PDFPlugin::boundsOnScreen const):
        (WebKit::PDFPlugin::geometryDidChange):
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFormData):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):
        * WebProcess/WebPage/wpe/CompositingManager.cpp:
        (WebKit::CompositingManager::releaseConnectionFd):

2018-12-20  Keith Rollin  <krollin@apple.com>

        Improve release-level page-load logging
        https://bugs.webkit.org/show_bug.cgi?id=192872
        <rdar://problem/46850309>

        Reviewed by Chris Dumez.

        There are a number of reported bugs that are difficult or impossible
        to track down with our current level of logging. Additionally, some
        software groups lower in the page-loading stack have requested logging
        sufficient for tracking a user-visible error message down to the
        requested resource that caused the message. Add more-comprehensive
        logging to address these issues/requests.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_editableImageController):
        (WebKit::WebPageProxy::~WebPageProxy):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::tryClose):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPageProxy::stopLoading):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::tryRestoreScrollPosition):
        (WebKit::WebPageProxy::updateThrottleState):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::restoreFromSessionState):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):
        (WebKit::WebPageProxy::tryReloadAfterProcessTermination):
        (WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
        (WebKit::WebPageProxy::didExceedBackgroundCPULimitWhileInForeground):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):
        (WebKit::WebResourceLoader::didReceiveResponse):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):

2018-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Replace "node assistance" terminology in WebKit with "focused element"
        https://bugs.webkit.org/show_bug.cgi?id=192936

        Reviewed by Tim Horton.

        Renames a few methods and data structures in WebKit, to refer to "focused elements" rather than "assisted nodes";
        see below for more details. No new tests, because there should be no change in behavior.

        * Shared/FocusedElementInformation.cpp: Renamed from Source/WebKit/Shared/AssistedNodeInformation.cpp.
        (WebKit::OptionItem::encode const):
        (WebKit::OptionItem::decode):
        (WebKit::FocusedElementInformation::encode const):
        (WebKit::FocusedElementInformation::decode):
        * Shared/FocusedElementInformation.h: Renamed from Source/WebKit/Shared/AssistedNodeInformation.h.

        Rename AssistedNodeInformation to FocusedElementInformation. Additionally, introduce a named type for the
        focusedElementIdentifier (which is currently just a `uint64_t`).

        (WebKit::OptionItem::OptionItem):
        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        (WebKit::InteractionInformationAtPosition::decode):
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _shouldUpdateKeyboardWithInfo:]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:

        Rename NodeAssistanceArguments to ElementDidFocusArguments (and also add a FIXME for removing this mechanism
        eventually).

        (WebKit::WebPageProxy::focusNextFocusedElement):
        (WebKit::WebPageProxy::focusNextAssistedNode): Deleted.
        * UIProcess/WebPageProxy.messages.in:

        Rename StartAssistingNode to ElementDidFocus, and StopAssistingNode to ElementDidBlur.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::elementDidFocus):
        (WebKit::PageClientImpl::isFocusingElement):
        (WebKit::PageClientImpl::elementDidBlur):
        (WebKit::PageClientImpl::startAssistingNode): Deleted.
        (WebKit::PageClientImpl::isAssistingNode): Deleted.
        (WebKit::PageClientImpl::stopAssistingNode): Deleted.
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView isFocusingElement]):
        (-[WKContentView _didCommitLoadForMainFrame]):
        (-[WKContentView isAssistingNode]): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithFocusedElementInformation:isUserInitiated:userObject:]):
        (hasFocusedElement):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView shouldHideSelectionWhenScrolling]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView inputView]):
        (-[WKContentView _selectionClipRect]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView clearSelection]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView _isInteractingWithFocusedElement]):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView selectPositionAtPoint:completionHandler:]):
        (-[WKContentView selectPositionAtBoundary:inDirection:fromPoint:completionHandler:]):
        (-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]):
        (-[WKContentView updateSelectionWithExtentPoint:completionHandler:]):
        (-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]):
        (-[WKContentView accessoryTab:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView accessoryClear]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView insertTextSuggestion:]):
        (-[WKContentView setSelectedTextRange:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView focusedElementInformation]):
        (-[WKContentView focusedSelectElementOptions]):
        (rectToRevealWhenZoomingToFocusedElement):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):
        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):
        (-[WKContentView updateCurrentFocusedElementInformation:]):
        (-[WKContentView presentViewControllerForCurrentFocusedElement]):
        (-[WKContentView focusedFormControlViewDidSubmit:]):
        (-[WKContentView focusedFormControlViewDidCancel:]):
        (-[WKContentView focusedFormControlViewDidBeginEditing:]):
        (-[WKContentView rectForFocusedFormControlView:]):
        (-[WKContentView nextRectForFocusedFormControlView:]):
        (-[WKContentView previousRectForFocusedFormControlView:]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView focusedFormControlViewDidRequestNextNode:]):
        (-[WKContentView focusedFormControlViewDidRequestPreviousNode:]):
        (-[WKContentView hasNextNodeForFocusedFormControlView:]):
        (-[WKContentView hasPreviousNodeForFocusedFormControlView:]):
        (-[WKContentView selectMenu:didSelectItemAtIndex:]):
        (-[WKContentView numberOfItemsInSelectMenu:]):
        (-[WKContentView selectMenu:displayTextForItemAtIndex:]):
        (-[WKContentView selectMenu:didCheckItemAtIndex:checked:]):
        (-[WKContentView selectMenuUsesMultipleSelection:]):
        (-[WKContentView selectMenu:hasSelectedOptionAtIndex:]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView dismissQuickboardViewControllerAndRevealFocusedFormOverlayIfNecessary:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView inputLabelTextForViewController:]):
        (-[WKContentView initialValueForViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]): Deleted.
        (hasAssistedNode): Deleted.

        Replaced with hasFocusedElement.

        (-[WKContentView _isInteractingWithAssistedNode]): Deleted.
        (-[WKContentView assistedNodeInformation]): Deleted.
        (-[WKContentView assistedNodeSelectOptions]): Deleted.
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]): Deleted.
        (-[WKContentView _stopAssistingNode]): Deleted.
        (-[WKContentView updateCurrentAssistedNodeInformation:]): Deleted.
        (-[WKContentView presentViewControllerForCurrentAssistedNode]): Deleted.
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsControl textAlignment]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::focusedElementInformationCallback):
        (WebKit::WebPageProxy::requestFocusedElementInformation):
        (WebKit::WebPageProxy::computeCustomFixedPositionRect const):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::selectWithGesture):
        (WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
        (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::selectPositionAtPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPageProxy::blurFocusedElement):
        (WebKit::WebPageProxy::elementDidFocus):
        (WebKit::WebPageProxy::elementDidBlur):
        (WebKit::WebPageProxy::focusNextFocusedElement):
        (WebKit::WebPageProxy::setFocusedElementValue):
        (WebKit::WebPageProxy::setFocusedElementValueAsNumber):
        (WebKit::WebPageProxy::setFocusedElementSelectedIndex):
        (WebKit::WebPageProxy::assistedNodeInformationCallback): Deleted.
        (WebKit::WebPageProxy::requestAssistedNodeInformation): Deleted.
        (WebKit::WebPageProxy::blurAssistedNode): Deleted.
        (WebKit::WebPageProxy::startAssistingNode): Deleted.
        (WebKit::WebPageProxy::stopAssistingNode): Deleted.
        (WebKit::WebPageProxy::focusNextAssistedNode): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeValue): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeValueAsNumber): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeSelectedIndex): Deleted.
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        (-[WKColorPicker initWithView:]):
        (-[WKColorPicker setControlValueFromUIColor:]):
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKDateTimePicker initWithView:datePickerMode:]):
        (-[WKDateTimePicker shouldPresentGregorianCalendar:]):
        (-[WKDateTimePicker _dateChangedSetAsNumber]):
        (-[WKDateTimePicker _dateChangedSetAsString]):
        (-[WKDateTimePicker controlBeginEditing]):
        (-[WKFormInputControl initWithView:]):
        (-[WKDateTimePopover clear:]):
        (-[WKDateTimePopover initWithView:datePickerMode:]):
        * UIProcess/ios/forms/WKFormPopover.mm:
        (-[WKRotatingPopover presentPopoverAnimated:]):
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        (-[WKFormSelectControl initWithView:]):
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        (-[WKMultipleSelectPicker initWithView:]):
        (-[WKMultipleSelectPicker pickerView:viewForRow:forComponent:reusingView:]):
        (-[WKMultipleSelectPicker pickerView:numberOfRowsInComponent:]):
        (-[WKMultipleSelectPicker findItemIndexAt:]):
        (-[WKMultipleSelectPicker pickerView:row:column:checked:]):
        (-[WKSelectSinglePicker initWithView:]):
        (-[WKSelectSinglePicker controlEndEditing]):
        (-[WKSelectSinglePicker pickerView:numberOfRowsInComponent:]):
        (-[WKSelectSinglePicker pickerView:attributedTitleForRow:forComponent:]):
        (-[WKSelectSinglePicker pickerView:didSelectRow:inComponent:]):
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController initWithView:hasGroups:]):
        (-[WKSelectTableViewController tableView:numberOfRowsInSection:]):
        (-[WKSelectTableViewController tableView:titleForHeaderInSection:]):
        (-[WKSelectTableViewController findItemIndexAt:]):
        (-[WKSelectTableViewController findItemAt:]):
        (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
        (-[WKSelectTableViewController tableView:didSelectRowAtIndexPath:]):
        (-[WKSelectPopover initWithView:hasGroups:]):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::elementDidFocus):
        (WebKit::WebChromeClient::elementDidRefocus):
        (WebKit::WebChromeClient::elementDidBlur):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::setTextAsync):
        (WebKit::WebPage::resetFocusedElementForFrame):
        (WebKit::WebPage::elementDidRefocus):
        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::elementDidBlur):
        (WebKit::WebPage::didCommitLoad):
        (WebKit::WebPage::resetAssistedNodeForFrame): Deleted.
        * WebProcess/WebPage/WebPage.h:

        Refactor elementDid{Refocus|Focus|Blur} to take `Element&` rather than `Node*`.

        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:

        Replace m_assistedNode (a `RefPtr<Node>`) with m_focusedElement (a `RefPtr<Element>`).

        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::requestFocusedElementInformation):
        (WebKit::WebPage::blurFocusedElement):
        (WebKit::WebPage::setFocusedElementValue):
        (WebKit::WebPage::setFocusedElementValueAsNumber):
        (WebKit::WebPage::setFocusedElementSelectedIndex):
        (WebKit::innerFrameQuad):
        (WebKit::constrainPoint):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::startAutoscrollAtPosition):
        (WebKit::WebPage::visiblePositionInFocusedNodeForPoint):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::rangeForGranularityAtPoint):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):
        (WebKit::WebPage::getPositionInformation):
        (WebKit::WebPage::focusNextFocusedElement):
        (WebKit::WebPage::getFocusedElementInformation):
        (WebKit::WebPage::autofillLoginCredentials):
        (WebKit::WebPage::requestAssistedNodeInformation): Deleted.
        (WebKit::WebPage::blurAssistedNode): Deleted.
        (WebKit::WebPage::setAssistedNodeValue): Deleted.
        (WebKit::WebPage::setAssistedNodeValueAsNumber): Deleted.
        (WebKit::WebPage::setAssistedNodeSelectedIndex): Deleted.
        (WebKit::WebPage::focusNextAssistedNode): Deleted.
        (WebKit::WebPage::getAssistedNodeInformation): Deleted.

2018-12-20  Brent Fulgham  <bfulgham@apple.com>

        WKWebView default UA doesn't freeze the build number
        https://bugs.webkit.org/show_bug.cgi?id=192809
        <rdar://problem/44687185>

        Reviewed by Andy Estes.

        Always reports the frozen build number.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (defaultApplicationNameForUserAgent): Do not expose the actual build number through this API.

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

        Enable MediaCapabilities by default.
        https://bugs.webkit.org/show_bug.cgi?id=192340
        <rdar://problem/46435149>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-12-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: tests in imported/w3c/webdriver/tests/element_clear/user_prompts.py are failing
        https://bugs.webkit.org/show_bug.cgi?id=192927

        Reviewed by Michael Catanzaro.

        Give the focus back to the web view when a dialog is dismissed.

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

2018-12-20  Tim Horton  <timothy_horton@apple.com>

        Unparented WKWebView can't retrieve main resource data for a main frame plugin
        https://bugs.webkit.org/show_bug.cgi?id=192923
        <rdar://problem/46859068>

        Reviewed by Wenson Hsieh.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::liveResourceData const):
        If the WKWebView is unparented, we may not immediately initialize the plugin.
        In that case, PluginView holds on to the backing data until the plugin
        is initialized. If a WKWebView API client asks for the backing data
        for the plugin during this time, we should return it, instead of bailing.

2018-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Focusing an editable element should scroll to reveal the selection
        https://bugs.webkit.org/show_bug.cgi?id=192802
        <rdar://problem/46781759>

        Reviewed by Tim Horton.

        Currently, when tapping on an editable element, logic in -[WKWebView _zoomToFocusRect:…:] attempts to adjust the
        visible viewport such that the rect containing the selection is visible. However, AssistedNodeInformation's
        selectionRect is used here, which (as the FIXME in WebPage::getAssistedNodeInformation notes) is either the last
        touch location, or the top left of the element if the touch location is outside of the element's bounding rect.
        This leads to confusing and undesirable behavior when tapping near the bottom of a large contenteditable element
        to focus it, since the actual selection will end up near the top of the element, yet we'll try to scroll to
        reveal the bottom of the element, which causes the visible selection to scroll offscreen. Notably, this affects
        scenarios involving editable web views embedded in apps, such as Mail compose.

        Right now, we use the last touch location as an approximation for the selection rect because the selection may
        have not yet been updated at the moment when focus moves into an editable element. To fix this, we defer the
        process of zooming to the focused element rect until after the selection changes and the UI process is updated
        with information about the new selection rects.

        Test: editing/selection/ios/selection-is-visible-after-focusing-editable-area.html

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

        Rename selectionRect to elementInteractionLocation, to more accurately reflect its value and purpose. This isn't
        strictly always the last touch location, since we may default to the focused element location instead if the
        last touch location is outside of the element rect.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

        Tweak a constant that determines the minimum amount of margin to leave between the selection rect and the edge
        of the window when scrolling to reveal the focused element. Previously, this was larger than necessary to
        accomodate for the fact that the "selection rect" used when zooming to the focused element did not take the
        actual selection into account at all, and was simply a 1 by 1 rect; this meant that the margin needed to be
        large enough to exceed the usual height of a text caret in editable content. Since we now use the real selection
        rect, we can be much less generous with this margin.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView observeValueForKeyPath:ofObject:change:context:]):

        Don't additionally update the selection in the middle of triggering zooming to the focused element; on
        particular versions of iOS, this now attempts to scroll the selection rect on-screen, which then conflicts with
        zooming to reveal the focused element.

        (-[WKContentView _zoomToRevealFocusedElement]):

        Renamed from _displayFormNodeInputView to _zoomToRevealFocusedElement, to make the purpose of this function more
        clear. Additionally, pull logic to update the accessory view out of this method, so that it's strictly concerned
        with zooming to the focused element.

        (-[WKContentView inputView]):

        Add a FIXME describing the implications of zooming to the focused element in the implementation of -inputView.
        See also: <https://bugs.webkit.org/show_bug.cgi?id=192878>.

        (-[WKContentView accessoryTab:]):

        Fix a subtle issue when keeping track of _didAccessoryTabInitiateFocus. Currently, this is set to YES in
        -accessoryTab: and unset in _displayFormNodeInputView, but since _displayFormNodeInputView may be invoked
        multiple times for the same focused element (see: -inputView), we might end up zooming to the focused element
        with _didAccessoryTabInitiateFocus set to NO, even though we initiated focus with the previous/next buttons.

        Instead, temporarily set a different ivar, _isChangingFocusUsingAccessoryTab, to YES in -accessoryTab:, and
        unset it in the completion handler after the focused element has changed. Then, when we _startAssistingNode:,
        set _didAccessoryTabInitiateFocus to _isChangingFocusUsingAccessoryTab. This ensures that the correctness of
        _didAccessoryTabInitiateFocus isn't tied to the number of times -[WKContentView inputView] is invoked when
        focusing an element.

        (shouldZoomToRevealSelectionRect):
        (rectToRevealWhenZoomingToFocusedElement):

        Add a helper method to determine the selection rect to use when zooming to reveal the focused element. ASSERTs
        that we have post-layout data in the EditorState.

        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        When "assisting" a focused element, immediately zoom to it if we don't need selection information to compute the
        rect to zoom to; otherwise, defer zooming until we receive the first editor state update in the UI process that
        contains information about our selection rects.

        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):

        If necessary, reveal the focused element by zooming.

        (-[WKContentView _updateInitialWritingDirectionIfNecessary]):

        Pull this initial writing direction update logic out into a separate helper method.

        (-[WKContentView _displayFormNodeInputView]): Deleted.

        Replaced by _zoomToRevealFocusedElement.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::elementDidRefocus):

        This currently calls WebChromeClient::elementDidFocus; instead, call the new WebPage::elementDidRefocus;
        additionally, make this available on all PLATFORM(COCOA), rather than just IOS_FAMILY.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::elementDidRefocus): Deleted.

        Replaced by the PLATFORM(COCOA) version.

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

        When refocusing an element, ensure that post-layout editor state data is sent to the UI process by including a
        full EditorState in the next layer tree transaction.

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

        Call elementDidRefocus instead of elementDidFocus, in the case where the existing focused element is clicked.

        (WebKit::WebPage::getAssistedNodeInformation):

        Adjust for the change from selectionRect to elementInteractionLocation.

2018-12-20  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Grant the sandbox read access to XDG_DATA_HOME/prgname
        https://bugs.webkit.org/show_bug.cgi?id=192929

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        [PSON] SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache
        https://bugs.webkit.org/show_bug.cgi?id=192873

        Reviewed by Antti Koivisto.

        SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache, preventing
        the process from suspending on iOS.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        (WebKit::SuspendedPageProxy::didReceiveMessage):
        (WebKit::SuspendedPageProxy::didSuspend): Deleted.
        (WebKit::SuspendedPageProxy::didFailToSuspend): Deleted.
        * UIProcess/SuspendedPageProxy.h:

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

        wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
        https://bugs.webkit.org/show_bug.cgi?id=192728
        <rdar://problem/46746779>

        Reviewed by Geoff Garen.

        * NetworkProcess/*:
        * Platform/*:
        * Scripts/*:
        * Shared/*:
        * UIProcess/*:
        * WebProcess/*:

2018-12-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence -Wpragmas warning

        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:

2018-12-19  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Use full sqlite upgrade list
        https://bugs.webkit.org/show_bug.cgi?id=192736
        <rdar://problem/45851427>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: Added.
        (WebKit::NetworkHTTPSUpgradeCheckerDatabasePath):
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::query):
        (WebKit::NetworkHTTPSUpgradeChecker::isAlwaysOnLoggingAllowed const):
        * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Added.
        (WebKit::NetworkHTTPSUpgradeChecker::didSetupCompleteSuccessfully const):
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

2018-12-19  Tim Horton  <timothy_horton@apple.com>

        Use delegate instead of drawingDelegate in WKDrawingView
        https://bugs.webkit.org/show_bug.cgi?id=192899
        <rdar://problem/46733339>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Do the dance.

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

        Navigations away from the SafeBrowsing interstitial show a flash of old content
        https://bugs.webkit.org/show_bug.cgi?id=192676

        Reviewed by Chris Dumez.

        When a user clicks through a safe browsing warning, do not remove the warning until content is drawn for the destination.
        Otherwise, the user will confusingly see the page before the warning while the navigation happens.
        We can only do this for warnings caused by main frame navigations, though.  Other warnings (such as those caused by iframes)
        need to be cleared immediately, and we still need to clear the warning immediately if the user has said to go back.

        This change is reflected in an updated API test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning forMainFrameNavigation]):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::clearSafeBrowsingWarningIfForMainFrameNavigation):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::clearSafeBrowsingWarningIfForMainFrameNavigation):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::forMainFrameNavigation const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::clearSafeBrowsingWarningIfForMainFrameNavigation):

2018-12-19  Tim Horton  <timothy_horton@apple.com>

        UI process crash when focusing an editable image
        https://bugs.webkit.org/show_bug.cgi?id=192839
        <rdar://problem/46786670>

        Reviewed by Wenson Hsieh.

        * SourcesCocoa.txt:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView inputView]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _installInkPickerForDrawingViewWithID:]):
        (-[WKContentView _uninstallInkPicker]):
        * UIProcess/ios/WKInkPickerView.h: Renamed from Source/WebKit/UIProcess/ios/WKInkPickerControl.h.
        * UIProcess/ios/WKInkPickerView.mm: Renamed from Source/WebKit/UIProcess/ios/WKInkPickerControl.mm.
        (-[WKInkPickerView initWithDrawingView:]):
        (-[WKInkPickerView didPickInk]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]):
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]):
        (-[WKInkPickerView inkPickerSize]):
        (-[WKInkPickerView layoutSubviews]):
        (-[WKInkPickerView sizeThatFits:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        * WebKit.xcodeproj/project.pbxproj:
        Make WKInkPickerView a WKWebView subview instead of an inputView.
        Also, don't force the keyboard to be visible when an editable image is focused.

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

        [MediaStream] Force system camera/microphone TCC prompt if necessary
        https://bugs.webkit.org/show_bug.cgi?id=192820
        <rdar://problem/42680098>

        Reviewed by Jer Noble.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Enable TCC check 
        and prompt on Mojave.

2018-12-19  Megan Gardner  <megan_gardner@apple.com>

        Allow clients to set the navigator platform
        https://bugs.webkit.org/show_bug.cgi?id=192735

        Reviewed by Tim Horton.

        Add private API to allow clients to override the default navigator
        platform. Some websites check for the platform, which 
        interfears with our request desktop site feature. This should
        help more sites function as expected.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
        (-[_WKWebsitePolicies customNavigatorPlatform]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

2018-12-19  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r239358.

        Revision caused imported/w3c/web-platform-tests/IndexedDB/ to
        crash on Debug bots

        Reverted changeset:

        "Clean up IndexedDB files between tests"
        https://bugs.webkit.org/show_bug.cgi?id=192796
        https://trac.webkit.org/changeset/239358

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

        REGRESSION(r239134) iOS safe browsing warning unable to show details
        https://bugs.webkit.org/show_bug.cgi?id=192837

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning addContent]):
        I had a fragile design that relied on the internal view heirarchy structure of UIScrollView,
        which I changed in r239134 by introducing a layout which changed where its scrollbars were in the view heirarchy.
        I now have a more robust design that saves a WeakObjCPtr to the view I need to traverse to.
        Testing is problematic because this had to do with scrollbars and UIScrollView internals which seem to behave
        differently in TestWebKitAPI, but I verified manually that this fixes the issue.

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

        [Win][Clang] Fix compilation warnings under Source/WebKit directory
        https://bugs.webkit.org/show_bug.cgi?id=192695

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/NetworkCacheData.cpp:
        (makeSalt): Enclosed by #if !OS(WINDOWS).
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::directoryEntryType): Ditto.
        * Platform/win/ModuleWin.cpp:
        (WebKit::Module::platformFunctionPointer const): Cast a function pointer with reinterpret_cast<void*>().
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::DrawingMonitor):
        Moved the initializer of m_webPage in order to be encluded by #if PLATFORM(GTK).
        * UIProcess/DrawingAreaProxyImpl.h: Ditto.
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::processName): Removed the duplicated 'const' type qualifier.
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformAttach): Removed an unused variable.
        (WebKit::WebInspectorProxy::platformDetach): Ditto.
        * UIProcess/win/WebPopupMenuProxyWin.cpp: Ditto.
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::paint): Ditto.
        (WebKit::WebPopupMenu::setUpPlatformData): Ditto.
        * UIProcess/win/WebPopupMenuProxyWin.h: Marked override methods with 'override'.
        * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.h: Ditto.
        * WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp: Removed an unused variable.

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] fast/forms/datalist/datalist-textinput-suggestions-order.html sometimes crashes after r239337
        https://bugs.webkit.org/show_bug.cgi?id=192836
        <rdar://problem/45321184>

        Reviewed by Tim Horton.

        r239337 exposed a subtle issue in the implementation of `-[WKDataListSuggestionsView updateWithInformation:]`,
        wherein we might end up recomputing information for table view cells at rows that no longer exist. This currently
        happens because we first set the datalist's `_suggestions`, then change the table view's frame, and then finally
        reload the table view; however, in the case where the number of suggestions decreased and the frame changed
        (which prompts AppKit to ask us again for table cell views), we'll attempt to access an out-of-bounds index in
        the `_suggestions` vector.

        To address this, we change our suggestions and immediately reload the table view before updating `NSTableView`'s
        frame, so that we only provide table view cells for rows that actually correspond to items in `_suggestions`.

        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (-[WKDataListSuggestionsView updateWithInformation:]):

2018-12-18  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 4.

        Add some additional temporary logging info to determine if the time out value passed to the timer is right.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):

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

        Clean up IndexedDB files between tests
        https://bugs.webkit.org/show_bug.cgi?id=192796

        Reviewed by Geoffrey Garen.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllIndexedDatabasesSync):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2018-12-18  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Scripts / preprocessing necessary to create new database in future
        https://bugs.webkit.org/show_bug.cgi?id=192612
        <rdar://problem/46651207>

        Reviewed by Andy Estes.

        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * Scripts/generate-https-upgrade-database.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the 32-bit watchOS build after r239314

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

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

        WKWebView has old URL while displaying SafeBrowsing interstitial, for link-click navigations
        https://bugs.webkit.org/show_bug.cgi?id=192675

        Reviewed by Geoffrey Garen.

        When a safe browsing warning is being shown, WKWebView.URL should be the unsafe website, not the safe website before it.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:details:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::url const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-12-18  Chris Dumez  <cdumez@apple.com>

        Regression(r239182) SuspendedPage's process reuse for link navigation optimization sometimes broken
        https://bugs.webkit.org/show_bug.cgi?id=192772

        Reviewed by Antti Koivisto.

        With r239182, if the page in the previous process would fail to enter PageCache, we would destroy
        the corresponding SuspendedPageProxy, which would potentially terminate the process. This would
        regress performance when trying to navigate back in history to that page. This would also regress
        performance when link-navigating to the same domain as we would have previously reused the suspended
        page's process for such navigation.

        Address the issue by keeping the SuspendedPageProxy alive even if the WebPage fails to suspend.
        When trying to reuse a SuspendedPageProxy, if the page failed to suspend, reuse its process but
        not the suspended page itself.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::waitUntilReadyToUnsuspend):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didSuspend):
        (WebKit::SuspendedPageProxy::didFailToSuspend):
        (WebKit::SuspendedPageProxy::loggingString const):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-12-17  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 3.

        Add some additional temporary logging info to determine if the timer is working as expected.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):

2018-12-17  Saam barati  <sbarati@apple.com>

        Enable HTTP and HTTPS proxies on iOS and make it a property of the NSURLSession
        https://bugs.webkit.org/show_bug.cgi?id=192374
        <rdar://problem/46506286>

        Reviewed by Alex Christensen.

        This patch makes it so that we can use HTTP/HTTPS proxies on iOS as well.
        To enable on iOS, you can do something like:
        $ defaults write -g WebKit2HTTPProxy -string "http://localhost:8080"
        $ defaults write -g WebKit2HTTPSProxy -string "http://localhost:8080"
        
        This patch also changes the Proxy to be enabled on a per NSURLSession
        basis instead of a per process basis.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::proxyDictionary):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::overrideSystemProxies): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration httpProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPProxy:]):
        (-[_WKWebsiteDataStoreConfiguration httpsProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPSProxy:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::httpProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPProxy):
        (WebKit::WebsiteDataStoreConfiguration::httpsProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPSProxy):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Tap highlights should not be shown on iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=192797
        <rdar://problem/46793995>

        Reviewed by Tim Horton.

        WKWebViews in iOSMac should avoid painting tap highlights, since tap highlights are not present in the rest of
        the macOS platform. Simply disable this functionality by bailing in `-[WKContentView _showTapHighlight]`.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showTapHighlight]):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOSMac engineering build again

        After r239311, `WebProcessProxy::fullKeyboardAccessEnabled` in `WebProcessProxyIOS.mm` attempts to use
        `WKFullKeyboardAccessWatcher`, which is guarded by `ENABLE(FULL_KEYBOARD_ACCESS)`. However, on iOSMac,
        `ENABLE(FULL_KEYBOARD_ACCESS)` is 0. Fix the build by putting access to `WKFullKeyboardAccessWatcher` behind
        `ENABLE(FULL_KEYBOARD_ACCESS)`.

        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOSMac engineering build

        `generateRequestID()` is only invoked from code under `ENABLE(MEDIA_STREAM)`; move it under this guard to avoid
        an unused function warning.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary object copy in CPUMonitor::setCPULimit()
        <https://webkit.org/b/192707>
        <rdar://problem/46734926>

        Reviewed by Daniel Bates.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateCPUMonitorState):
        - Pass m_cpuLimit directly since getting its value causes an
          identical std::optional<double> to be created unnecessarily.

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Focusing a large editable element always scrolls to the top of the element
        https://bugs.webkit.org/show_bug.cgi?id=192745
        <rdar://problem/46758445>

        Reviewed by Tim Horton.

        Currently, when focusing form controls or editable elements, we try to scroll such that the focused element rect
        is centered within the visible area. In the case of very large focusable elements whose dimensions exceed the
        width or height of the visible area, we instead scroll such that the top left point of the element is at the top
        left corner of the visible area.

        However, this results in unnecessary scrolling if the top of the element is already near the top of the visible
        area. For WebKit2-based rich text editors that have an editable body element with a top content inset that
        contains additional content, this means we will always scroll the additional content away when focusing the
        editable body.

        To avoid this behavior, adjust focused element zooming logic for editable elements that are too large to be
        centered in the visible area, such that we only scroll the top left position of the focused element to the top
        half or top right of the visible area, respectively. This reduces the amount of scrolling when focusing large
        editable elements, while still making it clear which element is being focused.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

        Make some small adjustments to improve the readability of this method by using `clampTo` instead of clamping
        values by comparing and setting values.

        Also, fix an existing bug wherein focusable elements that are meant to be centered within the visible area are
        currently offset by half the difference between the bottom inset amount and the top inset amount, in the case
        where the `_obscuredInsets` SPI is used to specify content insets for the web view (i.e., MobileSafari).

        * UIProcess/API/Cocoa/WKWebViewInternal.h:

        Make a couple of arguments `const FloatRect&` instead of just `FloatRect`.

2018-12-17  Ryosuke Niwa  <rniwa@webkit.org>

        offsetLeft and offsetParent should adjust across shadow boundaries
        https://bugs.webkit.org/show_bug.cgi?id=157437
        <rdar://problem/26154021>

        Reviewed by Simon Fraser.

        Use *forBindings variants of offsetLeft, offsetTop, and offsetParent.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp:
        (webkit_dom_element_get_offset_left):
        (webkit_dom_element_get_offset_top):
        (webkit_dom_element_get_offset_parent):

2018-12-17  Chris Fleizach  <cfleizach@apple.com>

        Some builds are broken after r239262
        https://bugs.webkit.org/show_bug.cgi?id=192777

        Reviewed by Simon Fraser.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.h:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm:
        (platformIsFullKeyboardAccessEnabled):
        (-[WKFullKeyboardAccessWatcher init]):
        Fix the build by being more clear about when it's OK to use AccessibilitySupport.

2018-12-17  Chris Dumez  <cdumez@apple.com>

        Allow passing nil as session state to [WKWebView _restoreSessionState:]
        https://bugs.webkit.org/show_bug.cgi?id=192789
        <rdar://problem/46755277>

        Reviewed by Alex Christensen.

        Allow passing nil as session state to [WKWebView _restoreSessionState:] instead of crashing.

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

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

        Fix occasional null-dereference crash in WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame
        https://bugs.webkit.org/show_bug.cgi?id=192744
        <rdar://problem/45842668>

        Reviewed by Chris Dumez.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        Things happen.  Navigations can be null.  If they are, we shouldn't dereference pointers to them.

2018-12-17  Chris Dumez  <cdumez@apple.com>

        Unreviewed, revert recent CrashReporterClient build fixes as they are no longer needed.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-17  Suresh Koppisetty  <skoppisettyt@apple.com>

        Rollout r235411
        https://bugs.webkit.org/show_bug.cgi?id=192778
        <rdar://46789485>

        Disabling access to CoreServices is causing a performance
        regression in process launch time.  See <rdar://46141878>

        Reviewed by Alex Christensen.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-12-17  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed WPE build fix after r239277.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextClearCurrentModifierStateForTesting):
        Use the WebKit:: namespace specifier as it is used across this file.

2018-12-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239265 and r239274.
        https://bugs.webkit.org/show_bug.cgi?id=192765

        unorm_normalize is deprecated, and broke an internal build
        (Requested by Truitt on #webkit).

        Reverted changesets:

        "[GTK][WPE] Need a function to convert internal URI to display
        ("pretty") URI"
        https://bugs.webkit.org/show_bug.cgi?id=174816
        https://trac.webkit.org/changeset/239265

        "Fix the Apple Internal Mac build with a newer SDK"
        https://trac.webkit.org/changeset/239274

2018-12-17  Daniel Bates  <dabates@apple.com>

        Implement UIScriptController::toggleCapsLock() for iOS
        https://bugs.webkit.org/show_bug.cgi?id=191815

        Reviewed by Andy Estes.

        Add test infrastructure to clear the current modifier state. We will use this to ensure that
        the caps lock state does not persist between tests.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextClearCurrentModifierStateForTesting): Added.
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::clearCurrentModifierStateForTesting): Added.
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::clearCurrentModifierStateForTesting): Added.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r239262): Fix broken builds prior to Mojave
        <https://bugs.webkit.org/show_bug.cgi?id=192373>
        <rdar://problem/46462670>

        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm:
        Wrap header in ENABLE(ACCESSIBILITY_EVENTS) to fix the build.

2018-12-17  Daniel Bates  <dabates@apple.com>

        [iOS] Remove -[WebEvent initWithKeyEventType:...:characterSet:]
        https://bugs.webkit.org/show_bug.cgi?id=192633

        Reviewed by Wenson Hsieh.

        Update code to use the modern initializer.

        * UIProcess/ios/WKWebEvent.mm:
        (-[WKWebEvent initWithEvent:]):

2018-12-17  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r239254.

        This broke the Windows 10 Debug build

        Reverted changeset:

        "Replace many uses of String::format with more type-safe
        alternatives"
        https://bugs.webkit.org/show_bug.cgi?id=192742
        https://trac.webkit.org/changeset/239254

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: loop variable is copied but only used as const reference in WebCore, WebKit, Tools
        <https://webkit.org/b/192751>
        <rdar://problem/46771623>

        Reviewed by Daniel Bates.

        Change loop variables to const references to avoid unnecessary
        copies.

        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSErrors):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::getPluginProcess):
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveDataRecords const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
        (WebKit::LocalStorageDatabaseTracker::origins const):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::didUpdateActivityStateTimerFired):

2018-12-17  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
        https://bugs.webkit.org/show_bug.cgi?id=174816

        Reviewed by Michael Catanzaro.

        Add webkit_uri_for_display for GTK and WPE.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitURIUtilities.cpp: Added.
        (webkit_uri_for_display):
        * UIProcess/API/gtk/WebKitURIUtilities.h: Added.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/wpe/WebKitURIUtilities.h: Added.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
        * UIProcess/API/wpe/docs/wpe-docs.sgml:
        * UIProcess/API/wpe/webkit.h:

2018-12-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add API to notify about frame displayed view backend callback
        https://bugs.webkit.org/show_bug.cgi?id=192224

        Reviewed by Michael Catanzaro.

        Add API to add a callback to the view to be called when the view backend notifies that a frame has been
        displayed.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (FrameDisplayedCallback::FrameDisplayedCallback):
        (FrameDisplayedCallback::~FrameDisplayedCallback):
        (webkit_web_view_add_frame_displayed_callback):
        (webkit_web_view_remove_frame_displayed_callback):
        * UIProcess/API/wpe/WebKitWebView.h:
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:

2018-12-16  Chris Fleizach  <cfleizach@apple.com>

        AX: Support keyboard access preference for iOS in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=192373
        <rdar://problem/46462670>

        Reviewed by Tim Horton.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.h: Added.
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm: Added.
        (platformIsFullKeyboardAccessEnabled):
        (-[WKFullKeyboardAccessWatcher notifyAllProcessPools]):
        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]):
        (-[WKFullKeyboardAccessWatcher init]):
        (+[WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled]):
        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
        * UIProcess/mac/WKFullKeyboardAccessWatcher.h: Removed.
        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-12-16  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed follow up after r239260
        https://bugs.webkit.org/show_bug.cgi?id=192714
        <rdar://problem/46762407>

        * Platform/win/SharedMemoryWin.cpp:
        (WebKit::SharedMemory::allocate): Use PAGE_READWRITE directly instead
        of going through the protectAttribute() function, which is removed
        because it is now unused.

2018-12-16  Adrian Perez de Castro  <aperez@igalia.com>

        Unify SharedMemory factory functions
        https://bugs.webkit.org/show_bug.cgi?id=192714

        Reviewed by Darin Adler.

        This unifies SharedMemory so in the following way, across platforms:

        - SharedMemory::create() is removed, to avoid ambiguity.
        - SharedMemory::allocate() always allocates a new block of shared memory.
        - SharedMemory::wrapMap() always creates a SharedMemory object which refers to an
          existing region of memory resulting from memory-mapping a file.

        * NetworkProcess/cache/NetworkCacheDataCocoa.mm:
        (WebKit::NetworkCache::Data::tryCreateSharedMemory const): Use SharedMemory::wrapMap().
        * Platform/SharedMemory.h: Remove the definition of SharedMemory::create(), and make
        SharedMemory::wrapMap() available on OS(DARWIN) as well.
        * Platform/cocoa/SharedMemoryCocoa.cpp:
        (WebKit::SharedMemory::wrapMap): Renamed from ::create().
        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::allocate): Renamed from ::create().
        * Platform/win/SharedMemoryWin.cpp:
        (WebKit::SharedMemory::allocate): Renamed from ::create()
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::createExtension): Use NetworkCache::Data::tryCreateSharedMemory() instead of
        SharedMemory::create().

2018-12-15  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 7: Files in UIProcess/API

        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKApplicationCacheManager.cpp:
        (WKApplicationCacheManagerGetTypeID):
        (WKApplicationCacheManagerGetApplicationCacheOrigins):
        (WKApplicationCacheManagerDeleteEntriesForOrigin):
        (WKApplicationCacheManagerDeleteAllEntries):
        * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
        (WKAuthenticationDecisionListenerGetTypeID):
        (WKAuthenticationDecisionListenerUseCredential):
        (WKAuthenticationDecisionListenerCancel):
        (WKAuthenticationDecisionListenerRejectProtectionSpaceAndContinue):
        * UIProcess/API/C/WKBackForwardListItemRef.cpp:
        (WKBackForwardListItemGetTypeID):
        (WKBackForwardListItemCopyURL):
        (WKBackForwardListItemCopyTitle):
        (WKBackForwardListItemCopyOriginalURL):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetTypeID):
        (WKContextCreate):
        (WKContextCreateWithInjectedBundlePath):
        (WKContextCreateWithConfiguration):
        (WKContextSetClient):
        (WKContextSetInjectedBundleClient):
        (WKContextSetHistoryClient):
        (WKContextSetDownloadClient):
        (WKContextSetConnectionClient):
        (WKContextDownloadURLRequest):
        (WKContextResumeDownload):
        (WKContextSetInitializationUserDataForInjectedBundle):
        (WKContextPostMessageToInjectedBundle):
        (WKContextGetGlobalStatistics):
        (WKContextAddVisitedLink):
        (WKContextClearVisitedLinks):
        (WKContextSetCacheModel):
        (WKContextGetCacheModel):
        (WKContextSetMaximumNumberOfProcesses):
        (WKContextGetMaximumNumberOfProcesses):
        (WKContextSetAlwaysUsesComplexTextCodePath):
        (WKContextSetShouldUseFontSmoothing):
        (WKContextSetAdditionalPluginsDirectory):
        (WKContextRefreshPlugIns):
        (WKContextRegisterURLSchemeAsEmptyDocument):
        (WKContextRegisterURLSchemeAsSecure):
        (WKContextRegisterURLSchemeAsBypassingContentSecurityPolicy):
        (WKContextRegisterURLSchemeAsCachePartitioned):
        (WKContextRegisterURLSchemeAsCanDisplayOnlyIfCanRequest):
        (WKContextSetDomainRelaxationForbiddenForURLScheme):
        (WKContextSetCanHandleHTTPSServerTrustEvaluation):
        (WKContextSetPrewarmsProcessesAutomatically):
        (WKContextSetCustomWebContentServiceBundleIdentifier):
        (WKContextSetDiskCacheSpeculativeValidationEnabled):
        (WKContextPreconnectToServer):
        (WKContextGetCookieManager):
        (WKContextGetWebsiteDataStore):
        (WKContextGetGeolocationManager):
        (WKContextGetMediaSessionFocusManager):
        (WKContextGetNotificationManager):
        (WKContextStartMemorySampler):
        (WKContextStopMemorySampler):
        (WKContextAllowSpecificHTTPSCertificateForHost):
        (WKContextDisableProcessTermination):
        (WKContextEnableProcessTermination):
        (WKContextSetHTTPPipeliningEnabled):
        (WKContextWarmInitialProcess):
        (WKContextGetStatistics):
        (WKContextGetStatisticsWithOptions):
        (WKContextJavaScriptConfigurationFileEnabled):
        (WKContextSetJavaScriptConfigurationFileEnabled):
        (WKContextGarbageCollectJavaScriptObjects):
        (WKContextSetJavaScriptGarbageCollectorTimerEnabled):
        (WKContextUseTestingNetworkSession):
        (WKContextSetAllowsAnySSLCertificateForWebSocketTesting):
        (WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting):
        (WKContextClearCachedCredentials):
        (WKContextCopyPlugInAutoStartOriginHashes):
        (WKContextSetPlugInAutoStartOriginHashes):
        (WKContextSetPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
        (WKContextSetPlugInAutoStartOrigins):
        (WKContextSetInvalidMessageFunction):
        (WKContextSetMemoryCacheDisabled):
        (WKContextSetFontWhitelist):
        (WKContextTerminateNetworkProcess):
        (WKContextTerminateServiceWorkerProcess):
        (WKContextGetNetworkProcessIdentifier):
        (WKContextAddSupportedPlugin):
        (WKContextClearSupportedPlugins):
        (WKContextSetIDBPerOriginQuota):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:

2018-12-15  Darin Adler  <darin@apple.com>

        Use warning-ignoring macros more consistently and simply
        https://bugs.webkit.org/show_bug.cgi?id=192743

        Reviewed by Mark Lam.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Use ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _EVOrganizationName]): Ditto.

        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: Use
        IGNORE_WARNINGS_BEGIN/END instead of IGNORE_CLANG_WARNINGS_BEGIN/END
        because there is no need to accomodate non-clang compilers here.
        Also use #pragma once, add a missing "explicit", and fix conditionals.

2018-12-15  Darin Adler  <darin@apple.com>

        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

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

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

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

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

        Unreviewed, fix the build with recent SDKs.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):

2018-12-14  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 2.

        Add some additional temporary logging info. Since the failure cannot be reproduced easily by human, we have to
        rely on the test infrastructure to reporoduce it. Once the bug is determined and fixed, we should remove all
        logging added in this patch.

        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::deviceAdded):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::getAssertion):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):

2018-12-14  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Unreviewed build fix.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Add missing WebPolicyAction.h include.

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

        Unreviewed, fix assertion failure in API test after r239210.

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

2018-12-14  Adrian Perez de Castro  <aperez@igalia.com>

        [SOUP] Unreviewed build fix after r239219

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse): Remove
        handling of PolicyAction::Suspend, which is no longer available.

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

        Unreviewed, apply post-landing review comments after r239221.

        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::url const):
        Switch to WTF::blankURL() instead of using "about:blank" directly.

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

        [PSON] Process-swapping on a loadHTMLString causes duplicate decidePolicyForNavigationAction delegate calls
        https://bugs.webkit.org/show_bug.cgi?id=192704

        Reviewed by Geoffrey Garen.

        Process-swapping on a loadHTMLString causes duplicate decidePolicyForNavigationAction delegate calls. This
        is because we were failing to pass the ShouldTreatAsContinuingLoad flag to the WebContent process when
        doing a LoadData.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        * WebProcess/WebPage/WebPage.h:

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

        Web Inspector: Prefer "about:blank" instead of an empty string for WebPageDebuggable url
        https://bugs.webkit.org/show_bug.cgi?id=192691
        <rdar://problem/46719798>

        Reviewed by Darin Adler.

        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::url const):
        Instead of an empty string, return "about:blank" in bail cases.
        When inspecting the page that matches the contents.

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

        [PSON] Stop exposing PolicyAction::Suspend to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192701

        Reviewed by Brady Eidson.

        Introduce a new WebPolicyAction enum that is used at WebKit2 layer and augments
        WebCore::PolicyAction with a "Suspend" value.

        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionResponseDisposition):
        * Shared/WebPolicyAction.h: Added.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::toPolicyAction):
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-12-14  David Quesada  <david_quesada@apple.com>

        Remove a global 'using namespace WebKit' in WebViewImpl.mm
        https://bugs.webkit.org/show_bug.cgi?id=192690

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKTextListTouchBarViewController initWithWebViewImpl:]):
        (-[WKTextListTouchBarViewController _selectList:]):
        (-[WKTextListTouchBarViewController setCurrentListType:]):
        (-[WKTextTouchBarItemController initWithWebViewImpl:]):

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

        [PSON] WebsitePolicies are lost on process-swap
        https://bugs.webkit.org/show_bug.cgi?id=192694
        <rdar://problem/46715748>

        Reviewed by Brady Eidson.

        In case of process-swap on navigation, instead of sending the websitePolicies to the old
        process, send them to the new process as we trigger the navigation. We tell the new process
        that it is continuing a load and it will therefore not re-trigger a decidePolicyForNavigationAction.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        (WebKit::WebPage::goToBackForwardItem):
        (WebKit::WebPage::createDocumentLoader):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-12-14  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix forwarding webkit socket to flatpak sandbox
        https://bugs.webkit.org/show_bug.cgi?id=192622

        Reviewed by Michael Catanzaro.

        This fixes running with the sandbox enabled in Flatpak.

        * UIProcess/Launcher/glib/FlatpakLauncher.cpp:
        (WebKit::flatpakSpawn):
        * UIProcess/Launcher/glib/FlatpakLauncher.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):

2018-12-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Use new view state API from libwpe
        https://bugs.webkit.org/show_bug.cgi?id=191906

        Reviewed by Žan Doberšek.

        Remove WKViewSetViewState from the C API.

        * UIProcess/API/C/wpe/WKAPICastWPE.h:
        * UIProcess/API/C/wpe/WKView.cpp:
        * UIProcess/API/C/wpe/WKView.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::View): Add implementation for activity_state_changed vfunc of the view backend client.):
        (WKWPE::View::setViewState): Remove the default flags.
        * UIProcess/API/wpe/WPEView.h:
        (WKWPE::View::setViewState const): Make it private.

2018-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] Web Inspector: Occasional UIProcess crashes under WebPageProxy::showInspectorIndication
        https://bugs.webkit.org/show_bug.cgi?id=192689
        <rdar://problem/46323610>

        Reviewed by Simon Fraser.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        * UIProcess/WebPageProxy.h:
        Don't wait until ~WebPageProxy to destroy the WebPageProxyDebuggable
        which broadcasts it as a remote inspector target. Terminate this
        as soon as the WebPageProxy closes and becomes invalid.

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

        Unreviewed build fix for tvOS.

        * Platform/cocoa/WKCrashReporter.mm:

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

        Unreviewed build fix for tvOS.

        * Platform/cocoa/WKCrashReporter.mm:

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

        [PSON] We should not need to navigate to 'about:blank' to suspend pages
        https://bugs.webkit.org/show_bug.cgi?id=192668
        <rdar://problem/46701466>

        Reviewed by Alex Christensen.

        To support PageCache when process-swap on cross-site navigation is enabled,
        we've been navigating the previous process to 'about:blank' when swapping.
        This would trigger PageCaching of the page in the old process. While
        convenient, this design has led to a lot of bugs because we did not really
        want a navigation to happen in the old process.

        To address the issue, when a WebPage is asked to suspend (for process-swap),
        we now attempt to add it to PageCache and save it on the current HistoryItem,
        *without* triggering any navigation. Any pending navigation gets cancelled
        and we just suspend in place.

        Later on, when we want to go back to this HistoryItem, we simply leverage the
        existing WebPage::goToBackForwardItem() code path. The only subtlety is that
        we're actually asking the WebPage to load a HistoryItem that is the current
        one in the History. I had to tweak a some logic / assertions to support this
        as this is not something we usually do. However, it actually works with very
        little changes and successfully restores the PageCache entry on the current
        HistoryItem.

        There is no expected overall behavior change and ProcessSwap API tests (which
        cover PageCache) still pass. This is merely a simpler design because it avoids
        navigating to about:blank.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didSuspend):
        (WebKit::SuspendedPageProxy::didReceiveMessage):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didSuspendAfterProcessSwap):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        * WebProcess/WebPage/WebDocumentLoader.cpp:
        (WebKit::WebDocumentLoader::setNavigationID):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendForProcessSwap):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::origin):

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

        [macOS] Remove with-report from 3 services that are currently needed on macOS
        https://bugs.webkit.org/show_bug.cgi?id=192593
        <rdar://problem/46604752>

        Reviewed by Brent Fulgham.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-12-13  Youenn Fablet  <youenn@apple.com>

        On page close, WebPage::m_userMediaPermissionRequestManager is nullified too early
        https://bugs.webkit.org/show_bug.cgi?id=192657

        Reviewed by Eric Carlson.

        Instead of nullifying the manager, make it a UniqueRef and clear it on closing the page.
        This ensures we revoke the sandbox extensions as early as possible and keep the manager lifetime simple.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager):
        (WebKit::UserMediaPermissionRequestManager::clear):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::userMediaPermissionRequestManager):

2018-12-13  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 6: Files in plugin process and UI process.

        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/mac/WebPageProxyMac.mm:

2018-12-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Calculate width or height when constraints contain only the other
        https://bugs.webkit.org/show_bug.cgi?id=192632
        <rdar://problem/46665734>

        Reviewed by Youenn Fablet.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable): Deleted,
        replaced with videoSampleAvailable.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Use original frame
        size if necessary when calculating new frame size.

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 5: Files in WebProcess folder.

        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        [MSVC] Unreviewed build fix for r239080.

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

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 4: Handling NetworkProcess folder.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Tim Horton.

        Fix iosmac build.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _hoverGestureRecognizerChanged:]):

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

        Implement safe browsing in WebKit on WatchOS
        https://bugs.webkit.org/show_bug.cgi?id=192641
        <rdar://problem/46376188>

        Reviewed by Geoff Garen.

        WatchOS has a few special requirements:
        1. The margin size needs to be smaller and the title font smaller to fit on the screen.
        2. The exclamation point cannot be beside the title or it won't fit on the screen.  I put it above the title.
        3. The application must be told when the safe browsing warning has been shown.  I added a new delegate callback.
        4. The UIScrollView's contentSize must be set even before the details are shown to be able to scroll down to the buttons.
           This was already an issue on small WKWebViews on iOS, so this fixes both operating systems.

        * Configurations/WebKit.xcconfig:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didShowSafeBrowsingWarning):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didShowSafeBrowsingWarning):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontOfSize):
        (buttonSize):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning updateContentSize]):
        (buttonWidth): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

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

        Unreviewed, rolling out r239129 and r239131.
        https://bugs.webkit.org/show_bug.cgi?id=192646

        Casued macOS and iOS Debug testing to fail early (Requested by
        Truitt on #webkit).

        Reverted changesets:

        "Unreviewed build fix for WinCairo Debug after r239080(?)."
        https://trac.webkit.org/changeset/239129

        "Unreviewed fix for Cocoa Debug test instability following
        r239129."
        https://trac.webkit.org/changeset/239131

2018-12-12  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Figure out if/how to tell clients that the HTTPS upgrade happened
        https://bugs.webkit.org/show_bug.cgi?id=192375
        <rdar://problem/45851159>

        Reviewed by Chris Dumez.

        Use simulated redirect to tell clients that HTTPS Upgrade happened.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::accessControlErrorForValidationHandler):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::continueCheckingRequestOrDoSyntheticRedirect):
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        * NetworkProcess/PingLoad.cpp:

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for Cocoa Debug test instability following r239129.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):
        Move the whole assertion to the declaration site.

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

        Add a preference to enable / disable devicemotion and deviceorientation events
        https://bugs.webkit.org/show_bug.cgi?id=192631
        <rdar://problem/46646244>

        Reviewed by Geoffrey Garen.

        Add setting to toggle support for the deviceorientation / devicemotion events:
        - https://w3c.github.io/deviceorientation/

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setDeviceOrientationEventEnabled:]):
        (-[WKPreferences _deviceOrientationEventEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed build fix for WinCairo Debug after r239080(?).

        MSVC gives a redefinition error if noreturn is specified on the definition instead of the declaration.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):
        * UIProcess/WebPageProxy.h:
        Move NO_RETURN_DUE_TO_ASSERT to the declaration site.

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 2: UIProcess/Cocoa and UIProcess/ios folders.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 1: Files in Shared folder.

        * Shared/API/c/WKRenderLayer.cpp:
        (WKRenderLayerGetFrameContentsLayer):
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/API/c/mac/WKWebArchive.cpp:
        (WKWebArchiveGetTypeID):
        (WKWebArchiveCreate):
        (WKWebArchiveCreateWithData):
        (WKWebArchiveCreateFromRange):
        (WKWebArchiveCopyMainResource):
        (WKWebArchiveCopySubresources):
        (WKWebArchiveCopySubframeArchives):
        (WKWebArchiveCopyData):
        * Shared/API/c/mac/WKWebArchiveResource.cpp:
        (WKWebArchiveResourceGetTypeID):
        (WKWebArchiveResourceCreate):
        (WKWebArchiveResourceCopyData):
        (WKWebArchiveResourceCopyURL):
        (WKWebArchiveResourceCopyMIMEType):
        (WKWebArchiveResourceCopyTextEncoding):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 1: Files in NetworkProcess.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:

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

        Unreviewed build with with recent macOS SDKs.

        * Platform/cocoa/WKCrashReporter.mm:

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

        Unreviewed attempt to fix GTK build after r239104.

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

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

        Unreviewed attempt to fix build with older SDKs after r239110.

        * Platform/cocoa/WKCrashReporter.mm:

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

        Unreviewed, fix build with recent SDKs.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-09  Darin Adler  <darin@apple.com>

        [iOS] Zero memory containing the password for PDF documents when a WKPDFView is deallocated
        https://bugs.webkit.org/show_bug.cgi?id=192536
        rdar://problem/41174451

        Reviewed by Tim Horton.

        * UIProcess/ios/WKPDFView.mm: Took out PLATFORM(IOSMAC) since
        this class is not compiled on that platform at this time. Can always
        add it back later.
        (-[WKPDFView dealloc]): Zero out characters of _passwordForPrinting.
        (-[WKPDFView pdfHostViewController:documentDidUnlockWithPassword:]):
        Initialize _passwordForPrinting; use a CString instead of retaining
        an NSString since we can zero that out easily.
        (-[WKPDFView _ensureDocumentForPrinting]): Use _passwordForPrinting.

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

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

        It broke the built because it depends on another patch that
        didn't land yet (Requested by KaL on #webkit).

        Reverted changeset:

        "[WPE] Add API to notify about frame displayed view backend
        callback"
        https://bugs.webkit.org/show_bug.cgi?id=192224
        https://trac.webkit.org/changeset/239103

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

        Restore MESSAGE_CHECK_URL() security check on sourceURL in didPerformClientRedirect()
        https://bugs.webkit.org/show_bug.cgi?id=191982
        <rdar://problem/46258054>

        Reviewed by Alex Christensen.

        Have the WebPageProxy remember the local paths it previously visited so that the
        MESSAGE_CHECK_URL() checks still work when process-swap on navigation is enabled.

        Add back MESSAGE_CHECK_URL() on sourceURL in didPerformClientRedirect().

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createFrontendPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::backForwardGoToItem):
        (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
        (WebKit::WebPageProxy::addPreviouslyVisitedPath):
        (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::assumeReadAccessToBaseURL):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/mac/WebPageProxyMac.mm:

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

        [WPE] Add API to notify about frame displayed view backend callback
        https://bugs.webkit.org/show_bug.cgi?id=192224

        Reviewed by Michael Catanzaro.

        Add API to add a callback to the view to be called when the view backend notifies that a frame has been
        displayed.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (FrameDisplayedCallback::FrameDisplayedCallback):
        (FrameDisplayedCallback::~FrameDisplayedCallback):
        (webkit_web_view_add_frame_displayed_callback):
        (webkit_web_view_remove_frame_displayed_callback):
        * UIProcess/API/wpe/WebKitWebView.h:

2018-12-11  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag for CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=192610

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

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

        [Win][Clang] Fix warning -Wmissing-field-initializers
        https://bugs.webkit.org/show_bug.cgi?id=192584

        Reviewed by Yusuke Suzuki.

        Initialize a struct with '{ }' instead of '= {0}'.

        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/win/WebPopupMenuProxyWin.cpp:
        (WebKit::WebPopupMenuProxyWin::showPopupMenu):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::initializeToolTipWindow):
        (WebKit::WebView::setToolTip):

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

        PSON logic gets confused by concurrent decidePolicyForNavigationAction requests
        https://bugs.webkit.org/show_bug.cgi?id=192482
        <rdar://problem/46470145>

        Reviewed by Antti Koivisto.

        It is possible to get 2 parallel decidePolicyForNavigationAction() requests from the
        WebProcess when a new load is started before responding to the existing policy
        decision. This would lead to several issues with regards to PSON:
        - We would decide to swap for the first policy decision and tell the WebProcess to
          suspend. However, because the WebProcess issued a new decidePolicyForNavigationAction
          since for the same frame, the previous one is invalidated and the WebProcess would
          ignore our request to suspend.
        - We would hit assertions later on because the navigation has been destroyed and yet
          we're getting a didStartProvisionalLoad for it.
        - swapToWebProcess() was asynchronous so that it would wait for the destination
          SuspendedPage to finish suspending before asking it to unsuspend. This led to various
          problems because anything can happen in the UIProcess while we're waiting for the
          suspension (e.g. another load). Also, we may create the SuspendedPageProxy for
          the current page too late and start getting IPC from the previous process about
          the suspension load to about:blank.

        To address these issues, the following design is now implemented:
        - swapToWebProcess() is no longer asynchronous
        - instead, WebProcessPool::processForNavigation() is now asynchronous. This is better
          because at this point we have not yet told the WebProcess about the policy decision.
          We already properly deal with the policy decision being made asynchronously. This
          also allows us to choose another process if the SuspendedPage we'd like to use
          failed to suspend.
        - If the WebProcess receives a PolicyAction::Suspend but ignores it, have it send an
          IPC to the UIProcess so that the SuspendedPageProxy knows about it. We then destroy
          the SuspendedPageProxy and make sure it is not used.
        - After the asynchronous process selection, if the navigation has been destroy, abort
          the process-swap to avoid hitting assertions later on due to doing a load for a
          destroyed navigation.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        Make sure m_whenReadyToConsume completion handler gets called if necessary if the
        SuspendedPageProxy gets destroyed. We pass null so that the SuspendedPage is not
        used.

        (WebKit::SuspendedPageProxy::whenReadyToConsume):
        Add whenReadyToConsume() utility method to get a completion handler called when
        the SuspendedPageProxy is ready to be used. This basically means we have to wait
        for the page to finish its about:blank suspension load. If the suspension fails
        then we call the completion handler with null to indicate that the suspended
        page is not usable.

        (WebKit::SuspendedPageProxy::unsuspendAndConsume):
        Rename unsuspend() to unsuspendAndConsume() and make it synchronous. This only gets
        called after whenReadyToConsume()'s completion handler has been called and if we
        do decide to use the SuspendedPageProxy. It tells the WebProcess to unsuspend and
        removes the SuspendedPageProxy from the WebProcessPool.

        (WebKit::SuspendedPageProxy::didFinishLoad):
        rename m_finishedSuspendingHandler to m_whenReadyToConsume.

        (WebKit::SuspendedPageProxy::didFailToSuspend):
        Add new didFailToSuspend() that gets called when the WebProcess sends us an IPC telling
        us it ignored our request to suspend. We then call m_whenReadyToConsume completion
        handler with null and destroy the SuspendedPageProxy.

        (WebKit::SuspendedPageProxy::didReceiveMessage):
        * UIProcess/SuspendedPageProxy.h:

        * UIProcess/WebNavigationState.h:
        (WebKit::WebNavigationState::hasNavigation const):
        Add utility function to query if a navigation is still valid.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        Update method so that it is no longer asynchronous. Some of its code was also moved to
        continueNavigationInNewProcess() for clarity.

        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        Deal with WebProcessPool::processForNavigation() now being asynchronous.

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Update code now that swapToWebProcess() is no longer asynchronous. Some of the swapToWebProcess()
        code was also moved here for clarity.

        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        Add new DidFailToSuspendAfterProcessSwap IPC message.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:
        Make asynchronous. If we decide to use a SuspendedPageProxy's process, then call
        whenReadyToConsume() on it to wait for it to suspend. If the SuspendedPageProxy
        fails to suspend use a new process instead.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        If we ignore the policy decision and the decision was "Suspend", send the DidFailToSuspendAfterProcessSwap
        IPC to the UIProcess so that the SuspendedPageProxy knows about it.

2018-12-11  Andy Estes  <aestes@apple.com>

        Introduce makeBlockPtr for lambdas
        https://bugs.webkit.org/show_bug.cgi?id=192594

        Reviewed by Alex Christensen.

        Adopted makeBlockPtr.

        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:
        (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]):
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::write):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::clearDiskCache):
        (WebKit::saveCookies):
        * NetworkProcess/watchos/NetworkProximityAssertion.mm:
        (WebKit::BluetoothProximityAssertion::suspend):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView maybeInstallIconLoadingClient]):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::requestNewPageWithOptions):
        (WebKit::AutomationSessionClient::requestSwitchToPage):
        (WebKit::AutomationSessionClient::requestHideWindowOfPage):
        (WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
        (WebKit::AutomationSessionClient::requestMaximizeWindowOfPage):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        * UIProcess/Cocoa/IconLoadingDelegate.mm:
        (WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::runJavaScriptAlert):
        (WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
        (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
        (WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
        (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
        (WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
        (WebKit::UIDelegate::UIClient::windowFrame):
        (WebKit::UIDelegate::UIClient::toolbarsAreVisible):
        (WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):
        (WebKit::UIDelegate::UIClient::runOpenPanel):
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        (WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):
        (WebKit::UIDelegate::UIClient::requestPointerLock):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm:
        (WebKit::HidConnection::send):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/mac/ServicesController.mm:
        (WebKit::hasCompatibleServicesForItems):
        (WebKit::ServicesController::refreshExistingServices):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (PageLoaderClient::didStartProvisionalLoadForFrame):

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

        Fix an internal build failure after r239014
        https://bugs.webkit.org/show_bug.cgi?id=192205

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontOfSize):
        There's a system that doesn't have safe browsing or UIFontTextStyleLargeTitle.

2018-12-11  Brian Burg  <bburg@apple.com>

        SimulatedInputDispatcher::transitionInputSourceToState() can reuse a moved-from completion handler
        https://bugs.webkit.org/show_bug.cgi?id=191155
        <rdar://problem/45745569>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        Add an ASSERT to guard against unexpected inputs where >1 VirtualKey changes per state.
        webkitdriver needs to be updated to not produce such states in this scenario, but this will
        avoid a runtime crash caused by trying to call a moved-out completion handler a second time.

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

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

        Broke WPE build due to undefined references to toAPI() and
        toImpl() inside the C API (Requested by magomez on #webkit).

        Reverted changeset:

        "[meta][WebKit] Remove using namespace WebCore and WebKit in
        the global scope for unified source builds"
        https://bugs.webkit.org/show_bug.cgi?id=192449
        https://trac.webkit.org/changeset/239071

2018-12-10  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449

        Reviewed by Darin Adler.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):

2018-12-10  Don Olmstead  <don.olmstead@sony.com>

        Move ENABLE_RESOURCE_LOAD_STATISTICS to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=192573

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Remove derived classes of RealtimeMediaSourceCenter
        https://bugs.webkit.org/show_bug.cgi?id=192546

        Reviewed by Eric Carlson.

        pdate code according WebCore changes.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):
        (WebKit::UserMediaCaptureManager::initialize):

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

        Animated scrolling on Google Maps scrolls the page in addition to moving the map
        https://bugs.webkit.org/show_bug.cgi?id=192521
        <rdar://problem/46382007>

        Reviewed by Sam Weinig.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
        Only do keyboard-based rubber-banding in directions that we can actually
        scroll, not directions we can only finger-rubber-band in. This effectively
        means keyboard scrolling will ignore "alwaysBounce{Vertical, Horizontal}".

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

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

        Speculative rollout due to broken perf test (Requested by
        deanj on #webkit).

        Reverted changeset:

        "Enable HTTP and HTTPS proxies on iOS and make it a property
        of the NSURLSession"
        https://bugs.webkit.org/show_bug.cgi?id=192374
        https://trac.webkit.org/changeset/239023

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOS build after r239039.
        https://bugs.webkit.org/show_bug.cgi?id=192568

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidUpdate:]):

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

        Fix WatchOS build.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionNameForFocusedFormControlView:]):

2018-12-10  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r239029.

        This patch caused internal build failures.

        Reverted changeset:

        "[meta][WebKit] Remove using namespace WebCore and WebKit in
        the global scope for unified source builds"
        https://bugs.webkit.org/show_bug.cgi?id=192449
        https://trac.webkit.org/changeset/239029

2018-12-10  Chris Dumez  <cdumez@apple.com>

        Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192509
        <rdar://problem/46500832>

        Reviewed by Alex Christensen.

        Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess instead of doing
        it at resource-level from the injected bundle.

        The custom user-agent string can now be set on _WKWebsitePolicies during the
        decidePolicyForNavigationAction for the main feame, and will impact this main resource load as well as its
        future subresource loads.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomUserAgent:]):
        (-[_WKWebsitePolicies customUserAgent]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

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

        Safe browsing warning should layout buttons vertically in narrow WKWebViews
        https://bugs.webkit.org/show_bug.cgi?id=192535
        <rdar://problem/46308364>

        Reviewed by Tim Horton.

        They're usually next to each other, but in narrow WKWebViews they currently get clipped.
        In order to make it more likely that both buttons are completely visible, put one above
        the other if the WKWebView is too narrow to completely show both.  This also helps with
        languages where the translations of "Go Back" or "Show Details" are rendered wider than English.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (buttonWidth):
        (-[WKSafeBrowsingWarning addContent]):

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

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>
        
        Re-land r239010 after over-zealous rollout.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Caret is obscured by finger when dragging over an editable element
        https://bugs.webkit.org/show_bug.cgi?id=192499
        <rdar://problem/46570101>

        Reviewed by Tim Horton.

        Add support for setting the `precise` property of `UIDropProposal` to YES when dragging over an editable area.
        When enabled, this property shifts the drop location up by a small amount, allowing the user to see the drop
        caret (currently, this is not the case, and it's difficult to drop text at a precise location on iOS). Changes
        are covered by adding to existing API tests.

        * Scripts/webkit/messages.py:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

        Add a new version of `-_webView:willUpdateDataInteractionOperationToOperation:forSession:` that receives and
        returns a UIDropProposal, so that Mail can more easily port over existing logic in its legacy-WebKit-based
        compose implementation. iOS Safari is currently the only client of this private delegate, so the old version can
        be easily removed once Safari adopts this new version.

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

        Add plumbing to send the latest drag handling method from WebPage to WebPageProxy.

        (WebKit::WebPageProxy::resetCurrentDragInformation):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::currentDragHandlingMethod const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidUpdate:]):

        Call the new UI delegate hook when determining the drop proposal to return to UIKit. Additionally set the
        `precise` bit on the drop proposal in the case where the drop handling method is either "editing rich text" or
        "editing plain text".

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):
        * WebProcess/WebPage/WebPage.h:

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Make mock capture happen in the process used for real capture
        https://bugs.webkit.org/show_bug.cgi?id=192544

        Reviewed by Eric Carlson.

        Make mock capture happen in the right process by only overriding
        factories by mock factories for source types that UserMediaCaptureManager will not override.
        That way, UserMediaCaptureManager will be used to go to UIProcess, where mock will be used as if it was the real capture.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::initialize):

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

        Move ENABLE_SEC_ITEM_SHIM out of WebKit's config.h
        https://bugs.webkit.org/show_bug.cgi?id=192428

        Reviewed by Tim Horton.

        * config.h:

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

        Move more macros out of WebKit's config.h
        https://bugs.webkit.org/show_bug.cgi?id=192430

        Reviewed by Tim Horton.

        * config.h:

2018-12-10  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449

        Reviewed by Darin Adler.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):

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

        WKWebView should support custom tintColor
        https://bugs.webkit.org/show_bug.cgi?id=192518
        <rdar://problem/37243261>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertionPointColor]):
        (-[WKContentView selectionBarColor]):
        (-[WKContentView selectionHighlightColor]):
        Grab insertion point and selection colors from UITextInputTraits.

        (-[WKContentView _updateInteractionTintColor]):
        Determine our effective tint color:
            - transparent if interaction is disabled
            - a CSS-derived color if caret-color style is applied
            - the _inheritedInteractionTintColor, which climbs up to the tintColor API
        Apply it to our UITextInputTraits.

        (-[WKContentView tintColorDidChange]):
        (-[WKContentView textInputTraits]):
        Call _updateInteractionTintColor whenever we create a new UITextInputTraits
        or when the tint color changes.

2018-12-09  Youenn Fablet  <youenn@apple.com>

        Move capture manager from RealtimeMediaSourceCenter to capture factory
        https://bugs.webkit.org/show_bug.cgi?id=192542

        Reviewed by Eric Carlson.

        Make sure to unregister for video capture as done for other capture types.
        Implement manager which should be doing nothing as the manager is used for enumeration of devices
        which should only happen in UIProcess.

        Given that mock capture is interfering with UserMediaCaptureManager,
        switching on/off mock capture will require creating a new process.
        This shortcoming should be fixed once mock capture will be fully happening in
        the same process as regular capture.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-12-09  Saam barati  <sbarati@apple.com>

        Enable HTTP and HTTPS proxies on iOS and make it a property of the NSURLSession
        https://bugs.webkit.org/show_bug.cgi?id=192374
        <rdar://problem/46506286>

        Reviewed by Alex Christensen.

        This patch makes it so that we can use HTTP/HTTPS proxies on iOS as well.
        To enable on iOS, you can do something like:
        $ defaults write -g WebKit2HTTPProxy -string "http://localhost:8080"
        $ defaults write -g WebKit2HTTPSProxy -string "http://localhost:8080"
        
        This patch also changes the Proxy to be enabled on a per NSURLSession
        basis instead of a per process basis.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::proxyDictionary):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::overrideSystemProxies): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration httpProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPProxy:]):
        (-[_WKWebsiteDataStoreConfiguration httpsProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPSProxy:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::httpProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPProxy):
        (WebKit::WebsiteDataStoreConfiguration::httpsProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPSProxy):

2018-12-09  Adrian Perez de Castro  <aperez@igalia.com>

        Build failure due to missing include of APIWebsiteDataStore.h
        https://bugs.webkit.org/show_bug.cgi?id=192541

        Reviewed by Youenn Fablet.

        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: Add missing
        include of APIWebsiteDataStore.h

2018-12-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS device] Crash when attempting to call -[_WKAttachment info] for an editable image
        https://bugs.webkit.org/show_bug.cgi?id=192538

        Reviewed by Tim Horton.

        Fix the crash by ensuring that the result of `-renderedDrawing` survives long enough to be wrapped by a
        `RetainPtr` in `-PNGRepresentation`. This isn't currently testable, since this codepath isn't supported on the
        iOS simulator; instead, I manually verified using MobileAttachments.app.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView renderedDrawing]):

2018-12-09  Commit Queue  <commit-queue@webkit.org>

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

        Breaks fast/visual-viewport/tiled-drawing/zoomed-fixed-
        scrolling-layers-state.html again (Requested by ap on
        #webkit).

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/239010

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

        Don't programmatically capitalize safe browsing warning buttons
        https://bugs.webkit.org/show_bug.cgi?id=192531
        <rdar://problem/46417791>

        Reviewed by Darin Adler.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (makeButton):

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

        Safe browsing warning should respect text size from settings
        https://bugs.webkit.org/show_bug.cgi?id=192205

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontWithSize):
        (makeButton):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):

2018-12-08  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):

2018-12-07  Rob Buis  <rbuis@igalia.com>

        Remove unused API in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=192415

        Reviewed by Alex Christensen.

        This patch removed some unused API and headers in NetworkProcess.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkContentRuleListManager.h:
        * NetworkProcess/NetworkDataTask.cpp:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.cpp:
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::PreconnectTask):
        (WebKit::PreconnectTask::frameID const): Deleted.
        (WebKit::PreconnectTask::pageID const): Deleted.
        * NetworkProcess/PreconnectTask.h:

2018-12-07  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event should not fire in frames that can't access capture devices
        https://bugs.webkit.org/show_bug.cgi?id=192511
        <rdar://problem/46562063>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Remove userMediaID parameter.
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): ID not passed to callback.
        * UIProcess/UserMediaPermissionCheckProxy.h:
        (WebKit::UserMediaPermissionCheckProxy::create):
        (WebKit::UserMediaPermissionCheckProxy::completionHandler): Deleted.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::generateRequestID): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): Don't notify if
        the page does not have a granted request and does not have persistent access.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Use generateRequestID.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Change variable name.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Use generateRequestID.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

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

        WKWebProcessPlugInLoadDelegate should have API for saying which rendering events it wants to listen for
        https://bugs.webkit.org/show_bug.cgi?id=192473

        Reviewed by Andy Estes.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (PageLoaderClient::layoutMilestones const):

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

        Update libwebrtc up to 0d007d7c4f
        https://bugs.webkit.org/show_bug.cgi?id=192316

        Reviewed by Eric Carlson.

        Update code base according new libwebrtc backend
        In particular, use directly int64_t for packet time.

        * Configurations/WebKit.xcconfig:
        * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
        (WebKit::LibWebRTCSocketClient::signalReadPacket):
        * NetworkProcess/webrtc/LibWebRTCSocketClient.h:
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        * NetworkProcess/webrtc/NetworkRTCSocket.h:
        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::signalReadPacket):

2018-12-07  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238947.

        Revision caused fast/visual-viewport/tiled-drawing/zoomed-
        fixed-scrolling-layers-state.html to constantly fail

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/238947

2018-12-06  David Kilzer  <ddkilzer@apple.com>

        Injected bundle for WebKitTestRunner leaks WKTypeRef objects
        <https://webkit.org/b/192481>
        <rdar://problem/46539059>

        Reviewed by Simon Fraser.

        Change function parameter name from `returnData[Ref]` to
        `returnRetainedData[Ref]` to document that the value returned is
        a +1 retained WKTypeRef object.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundlePostSynchronousMessage):
        * WebProcess/InjectedBundle/API/c/WKBundle.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostSynchronousMessageForTesting):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:

2018-12-06  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode): Make explicit that we want to append
        the new node at the end of child list.

2018-12-06  Yongjun Zhang  <yongjun_zhang@apple.com>

        We should ignore minimumEffectiveDeviceWidth if the page specifies device-width in viewport meta-tag.
        https://bugs.webkit.org/show_bug.cgi?id=192377
        <rdar://problem/46364206>

        Reviewed by Tim Horton.

        Since we are using page's viewport arguments to decide the default viewport parameters and
        whether we can use mininum effective device width, we should always call setViewportArguments()
        regardless of shouldIgnoreMetaViewport settings.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::viewportPropertiesDidChange): Always call setViewportArguments().
        (WebKit::WebPage::didCommitLoad): Ditto.

2018-12-06  Tim Horton  <timothy_horton@apple.com>

        Web Share API: share overlay does not stick to the Safari window
        https://bugs.webkit.org/show_bug.cgi?id=192469
        <rdar://problem/46074833>

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet sharingServicePicker:delegateForSharingService:]):
        (-[WKShareSheet sharingService:sourceWindowForShareItems:sharingContentScope:]):
        (-[WKShareSheet sharingService:didFailToShareItems:error:]):
        (-[WKShareSheet sharingService:didShareItems:]):
        Implement another NSSharingServicePickerDelegate method to return
        an *NSSharingService* delegate when needed.

        Implement an NSSharingServiceDelegate method to return the window that
        the service's UI should attach to.

        Also, instead of notifying the Web Content process when a service is picked
        (or not) in the NSSharingServicePicker, wait until the share has completed
        (or failed) to send didComplete. This both makes the return completion
        value more accurate (matching iOS, if you cancel the share during the
        recipient choice step, it will now fail), and avoids explicitly tearing
        down the NSSharingServicePicker too early, which breaks the UI attaching mechanism.

2018-12-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] WKWebView should match UITextView behavior when editing text with an RTL keyboard
        https://bugs.webkit.org/show_bug.cgi?id=187554
        <rdar://problem/42075638>

        Reviewed by Tim Horton.

        Add support for automatically switching the base writing direction to the default writing direction with respect
        to the current keyboard in an editable WKWebView by implementing `-setBaseWritingDirection:forRange:`. On iOS 12
        and earlier, UIKit invokes this protocol method whenever the keyboard is changed to one with a different writing
        direction, although in some other versions of iOS, this only happens when first focusing an editable area.

        Test: editing/input/ios/rtl-keyboard-input-on-focus.html

        * Platform/spi/ios/UIKitSPI.h:

        Declare UIKeyboardImpl IPI methods mostly for use in WebKitTestRunner (with the exception of
        `-setInitialDirection`, which we may invoke when we receive the first post-layout EditorState update after
        focusing an editable element).

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::increaseListLevel):
        (WebKit::WebPageProxy::decreaseListLevel):
        (WebKit::WebPageProxy::changeListType):
        (WebKit::WebPageProxy::setBaseWritingDirection):

        Drive-by style fixes: make these bail and return early if `!isValid()`.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Reset assisted node state in the UI process upon web process termination.

        * UIProcess/WebPageProxy.h:

        Add plumbing for `setBaseWritingDirection`, from `WebPageProxy` to `WebPage` to `Editor`.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didReceiveEditorStateUpdateAfterFocus):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView baseWritingDirectionForPosition:inDirection:]):
        (coreWritingDirection):
        (-[WKContentView setBaseWritingDirection:forRange:]):

        Support `-setBaseWritingDirectionForPosition:forRange:`, but only in the case where the given range is the
        selected range. This is all that's currently needed to fulfill the requirements in <rdar://problem/42075638>,
        though we could potentially add full support for this in the future by mapping the given text range to a DOM
        range and moving the selection prior to setting the base writing direction.

        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):

        Add a hook to notify WKContentView when the first post-layout EditorState has been received in the UI process.
        When this is invoked, if the web view is editable and the selection is not a range, we call into `UIKeyboardImpl`
        to change the initial writing direction if necessary.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::stopAssistingNode):
        (WebKit::WebPageProxy::editorStateChanged):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setBaseWritingDirection):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view
        https://bugs.webkit.org/show_bug.cgi?id=192411
        rdar://problem/46492487

        Reviewed by Alex Christensen.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextResumeDownload):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]):
        (-[WKProcessPool _resumeDownloadFromData:path:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::resumeDownload):
         - Set the originating page of the DownloadProxy.
         - If the originating page is non-null, use its session ID for the download.
         - Remove a FIXME. It's possible to do this now by providing the web view whose session
           should be used for the download.
        * UIProcess/WebProcessPool.h:

2018-12-06  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a quick fix after r238919

        Add an early return such that the error message is actually meaningful.

        * UIProcess/WebAuthentication/Mock/MockHidService.cpp:
        (WebKit::MockHidService::platformStartDiscovery):

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

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

        Reviewed by Anders Carlsson.

        This was introduced in r210835 but never used.
        It's preventing me from making the disk cache associated with a SessionID/NetworkSession.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::storeDerivedDataToCache): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        (WebKit::NetworkResourceLoader::continueProcessingCachedEntryAfterDidReceiveResponse): Deleted.
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache): Deleted.
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didRetrieveDerivedData): Deleted.
        * WebProcess/Network/WebResourceLoader.messages.in:

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        REGRESSION(r231043): [GTK] Undefined references to WebCore::LayerRepresentation::* with -DENABLE_OPENGL=OFF builds
        https://bugs.webkit.org/show_bug.cgi?id=191997

        Reviewed by Philippe Normand.

        Fix build with -DENABLE_OPENGL=OFF and -DENABLE_VIDEO=OFF.

        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent): add required #if ENABLE(ASYNC_SCROLLING)

2018-12-05  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(PSON): Process swapping code doesn't set DisplayID in WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=192290

        Reviewed by Simon Fraser.

        Fixed the bug by updating the DisplayID upon attaching to a WebContent process
        after a process swap as well as after the previous WebContent process had crashed.

        Unfortunately no new tests since WebKitTestRunner / DumpRenderTree should use 0 as DisplayID
        as they have an off-screen NSWindow. The issue that this results in no fallback for
        the animation timer is tracked by webkit.org/b/192448.

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

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

        Remove a document entry from NetworkMDNSRegister::m_services when document goes away
        https://bugs.webkit.org/show_bug.cgi?id=192429

        Reviewed by Eric Carlson.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::unregisterMDNSNames):
        We should remove the entry to limit the size of the map.

2018-12-05  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 1.

        Add some loggings to determine possible causes for the flakiness.

        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::continueAddDeviceAfterGetInfo):
        * UIProcess/WebAuthentication/Mock/MockHidService.cpp:
        (WebKit::MockHidService::platformStartDiscovery):

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

        Simplify logic inside WebPageProxy::continueNavigationInNewProcess()
        https://bugs.webkit.org/show_bug.cgi?id=192404

        Reviewed by Alex Christensen.

        Simplify get the item state from the current back/forward list item, instead of
        relying on WebBackForwardList::filteredItemStates().

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

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

        Enable the possibility to do video capture in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192394

        Reviewed by Eric Carlson.

        Add two web preferences to toggle audio/video capture in UIProcess or WebProcess.
        Add mechanism for video capture that was not implemented yet.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetCaptureAudioInUIProcessEnabled):
        (WKPreferencesGetCaptureAudioInUIProcessEnabled):
        (WKPreferencesSetCaptureVideoInUIProcessEnabled):
        (WKPreferencesGetCaptureVideoInUIProcessEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::createWebPage):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::initialize):

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

        Make WebsiteDataStoreConfiguration a proper API object
        https://bugs.webkit.org/show_bug.cgi?id=192380

        Reviewed by Youenn Fablet.

        In the immediate future I'll need to add things to _WKWebsiteDataStoreConfiguration.
        Instead of making ivars, setting them, copying them to a local object, make this a wrapper of an API::Object
        like all our other ObjC API objects are.

        * Shared/API/APIObject.h:
        (API::Object::wrapper const):
        (API::Object::wrapper): Deleted.
        * Shared/Cocoa/APIObject.mm:
        (API::Object::ref const):
        (API::Object::deref const):
        (API::Object::newObject):
        (API::Object::ref): Deleted.
        (API::Object::deref): Deleted.
        * Sources.txt:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::createLegacy):
        (API::WebsiteDataStore::WebsiteDataStore):
        (API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * 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:]):
        (-[_WKWebsiteDataStoreConfiguration _cacheStorageDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setCacheStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _serviceWorkerRegistrationDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setServiceWorkerRegistrationDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration setSourceApplicationBundleIdentifier:]):
        (-[_WKWebsiteDataStoreConfiguration sourceApplicationBundleIdentifier]):
        (-[_WKWebsiteDataStoreConfiguration sourceApplicationSecondaryIdentifier]):
        (-[_WKWebsiteDataStoreConfiguration setSourceApplicationSecondaryIdentifier:]):
        (-[_WKWebsiteDataStoreConfiguration _apiObject]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h: Added.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):
        (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::create):
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::parameters):
        (WebKit::WebsiteDataStore::Configuration::Configuration): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::cacheStoragePerOriginQuota const):
        (WebKit::WebsiteDataStore::setCacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStore::cacheStorageDirectory const):
        (WebKit::WebsiteDataStore::setCacheStorageDirectory):
        (WebKit::WebsiteDataStore::serviceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStore::setServiceWorkerRegistrationDirectory):
        (WebKit::WebsiteDataStore::resolvedApplicationCacheDirectory const):
        (WebKit::WebsiteDataStore::resolvedMediaCacheDirectory const):
        (WebKit::WebsiteDataStore::resolvedMediaKeysDirectory const):
        (WebKit::WebsiteDataStore::resolvedDatabaseDirectory const):
        (WebKit::WebsiteDataStore::resolvedJavaScriptConfigurationDirectory const):
        (WebKit::WebsiteDataStore::resolvedCookieStorageFile const):
        (WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory const):
        (WebKit::WebsiteDataStore::resolvedServiceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStore::resolvedResourceLoadStatisticsDirectory const):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: Added.
        (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: Added.
        (WebKit::WebsiteDataStoreConfiguration::create):
        (WebKit::WebsiteDataStoreConfiguration::cacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStoreConfiguration::setCacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStoreConfiguration::applicationCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setApplicationCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::mediaCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setMediaCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::mediaKeysStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setMediaKeysStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::javaScriptConfigurationDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setJavaScriptConfigurationDirectory):
        (WebKit::WebsiteDataStoreConfiguration::webStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setWebStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::indexedDBDatabaseDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setIndexedDBDatabaseDirectory):
        (WebKit::WebsiteDataStoreConfiguration::webSQLDatabaseDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setWebSQLDatabaseDirectory):
        (WebKit::WebsiteDataStoreConfiguration::localStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setLocalStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::cookieStorageFile const):
        (WebKit::WebsiteDataStoreConfiguration::setCookieStorageFile):
        (WebKit::WebsiteDataStoreConfiguration::resourceLoadStatisticsDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setResourceLoadStatisticsDirectory):
        (WebKit::WebsiteDataStoreConfiguration::networkCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setNetworkCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::cacheStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setCacheStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::applicationCacheFlatFileSubdirectoryName const):
        (WebKit::WebsiteDataStoreConfiguration::setApplicationCacheFlatFileSubdirectoryName):
        (WebKit::WebsiteDataStoreConfiguration::serviceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setServiceWorkerRegistrationDirectory):
        (WebKit::WebsiteDataStoreConfiguration::sourceApplicationBundleIdentifier const):
        (WebKit::WebsiteDataStoreConfiguration::setSourceApplicationBundleIdentifier):
        (WebKit::WebsiteDataStoreConfiguration::sourceApplicationSecondaryIdentifier const):
        (WebKit::WebsiteDataStoreConfiguration::setSourceApplicationSecondaryIdentifier):
        * WebKit.xcodeproj/project.pbxproj:

2018-12-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Turn WritingDirection into an enum class
        https://bugs.webkit.org/show_bug.cgi?id=192401
        Work towards <rdar://problem/42075638>

        Reviewed by Dan Bernstein.

        Change WritingDirection from an enum to an enum class. No change in behavior.

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

2018-12-05  Rob Buis  <rbuis@igalia.com>

        [Mac] HEAD requests changed to GET after 301, 302, and 303 redirections (http/tests/xmlhttprequest/head-redirection.html)
        https://bugs.webkit.org/show_bug.cgi?id=114965

        Reviewed by Frédéric Wang.

        HEAD requests should not be changed to GET after 303 redirects, see [1].
        This was fixed earlier for GTK [2].

        Behavior matches Firefox and Chrome.

        [1] http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-21#section-7.4
        [2] https://bugs.webkit.org/show_bug.cgi?id=110127

        Tests: web-platform-tests/fetch/api/redirect/redirect-method.html
               web-platform-tests/fetch/api/redirect/redirect-method-worker.html
               http/tests/xmlhttprequest/head-redirection.html

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

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

        Remove using namespace WebCore and WebKit under WebKit/Shared/API
        https://bugs.webkit.org/show_bug.cgi?id=192352

        Reviewed by Alex Christensen.

        Removed using namespace statements, and use namespace prefix
        instead.

        * Shared/API/APIURLRequest.cpp:
        * Shared/API/APIURLResponse.cpp:
        * Shared/API/c/WKArray.cpp:
        * Shared/API/c/WKCertificateInfo.cpp:
        * Shared/API/c/WKConnectionRef.cpp:
        * Shared/API/c/WKContextMenuItem.cpp:
        * Shared/API/c/WKData.cpp:
        * Shared/API/c/WKDictionary.cpp:
        * Shared/API/c/WKErrorRef.cpp:
        * Shared/API/c/WKGeometry.cpp:
        * Shared/API/c/WKImage.cpp:
        * Shared/API/c/WKMutableArray.cpp:
        * Shared/API/c/WKMutableDictionary.cpp:
        * Shared/API/c/WKNumber.cpp:
        * Shared/API/c/WKPluginInformation.cpp:
        * Shared/API/c/WKRenderLayer.cpp:
        * Shared/API/c/WKRenderObject.cpp:
        * Shared/API/c/WKSecurityOriginRef.cpp:
        * Shared/API/c/WKSerializedScriptValue.cpp:
        * Shared/API/c/WKString.cpp:
        * Shared/API/c/WKType.cpp:
        * Shared/API/c/WKURL.cpp:
        * Shared/API/c/WKURLRequest.cpp:
        * Shared/API/c/WKURLResponse.cpp:
        * Shared/API/c/WKUserContentURLPattern.cpp:
        * Shared/API/c/cairo/WKImageCairo.cpp:
        * Shared/API/c/curl/WKCertificateInfoCurl.cpp:

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

        Remove source application identifiers from NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192372

        Reviewed by Brady Eidson.

        The _WKWebProcessPoolConfiguration way of setting these was deprecated in http://trac.webkit.org/r235127
        The replacement was adopted in <rdar://problem/46359330>
        The transition process is done!  Time to remove the old code.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        (WebKit::globalSourceApplicationAuditTokenData): Deleted.
        (WebKit::globalSourceApplicationBundleIdentifier): Deleted.
        (WebKit::globalSourceApplicationSecondaryIdentifier): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationAuditTokenData): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationBundleIdentifier): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationSecondaryIdentifier): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration sourceApplicationBundleIdentifier]):
        (-[_WKProcessPoolConfiguration setSourceApplicationBundleIdentifier:]):
        (-[_WKProcessPoolConfiguration sourceApplicationSecondaryIdentifier]):
        (-[_WKProcessPoolConfiguration setSourceApplicationSecondaryIdentifier:]):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::toPKPaymentRequest):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::configuration):

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

        Calling getUserMedia in a link that was opened with target="_blank" does not work the second time
        https://bugs.webkit.org/show_bug.cgi?id=188088
        <rdar://problem/42681448>

        Reviewed by Eric Carlson.

        On closing a page, we need to make sure to consider that the capture is ended,
        as otherwise WebPageProxy will not get noticed from WebPage, since WebPageProxy is no longer an IPC receiver.

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

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

        Regression(r238817) PSON Page Cache API tests are failing
        https://bugs.webkit.org/show_bug.cgi?id=192348

        Reviewed by Alex Christensen.

        Before suspending a WebProcess on iOS, we normally fake a memory pressure signal
        so that the suspended process uses as little memory as possible while suspended.
        Among other things, this will clear the page cache. This is an issue in the case
        of process-swap on navigation because we keep suspended web processes around to
        keep Page Cache functional.

        To address the issue, when a WebProcess is about to get suspended, we check if
        the process has any suspended WebPage (WebPage used for PSON PageCache support)
        and we bypass the PageCache clearing if it does.

        Our API tests did not catch this before r238817 because the NavigationState's
        assertion was preventing the old WebProcesses from suspending for 3 seconds,
        which was enough for those tests to complete.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        Take a background assertion until the suspension load is complete, to make sure
        the suspension load has a chance to complete before the process gets suspended.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::hasPageRequiringPageCacheWhileSuspended const):
        (WebKit::WebProcess::actualPrepareToSuspend):
        * WebProcess/WebProcess.h:

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

        Device orientation may be wrong on page reload after crash
        https://bugs.webkit.org/show_bug.cgi?id=192349
        <rdar://problem/46359466>

        Reviewed by Eric Carlson.

        On page crash, the process is relaunched and the page is reloaded.
        At that point, the orientation information of the page is not reset until the next device orientation change.
        To fix that, add the device orientation to the page creation parameters so that we pass it everytime we create a page.
        Covered by manual testing.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/WebPage.cpp:

2018-12-04  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [WPE] Add gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=178900

        Reviewed by Michael Catanzaro.

        Add gtk-doc to WPE port. This patch tries to reuse as much code from
        WebKitGTK+ as possible.

        * PlatformWPE.cmake: Write variables to gtkdoc-wpe.cfg and gtkdoc-webextensions that is used by python script later.
        * UIProcess/API/wpe/WebKitWebContext.h: Placed sandbox functions in the same location as in the WebKitGTK+ for consistency.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Added.
        * UIProcess/API/wpe/docs/wpe-docs.sgml: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitWebPage.h: Placed webkit_web_page_get_dom_document
        in the same position as in the WebKitGTK+ for consistency.
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-0.1-sections.txt: Added.
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-docs.sgml: Added.

2018-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Move URLSoup back to WebCore after r238771
        https://bugs.webkit.org/show_bug.cgi?id=192306

        Reviewed by Michael Catanzaro.

        Include GUniquePtrSoup from WebCore again and fix several build failures that showed up after removing the soup
        includes from URL header.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):
        * PluginProcess/PluginProcess.cpp:
        * Shared/API/glib/WebKitURIRequest.cpp:
        * Shared/API/glib/WebKitURIResponse.cpp:
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        (webkit_uri_scheme_request_finish_error): Use soupURIToURL().
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_load_uri): Use soupURIToURL().
        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        * UIProcess/Launcher/glib/BubblewrapLauncher.h:
        * UIProcess/Launcher/glib/FlatpakLauncher.cpp:
        * UIProcess/Launcher/glib/FlatpakLauncher.h:

2018-12-04  Tim Horton  <timothy_horton@apple.com>

        Fix the watchOS build; stop unnecessarily linking CorePDF
        https://bugs.webkit.org/show_bug.cgi?id=192356
        <rdar://problem/46427844>

        Reviewed by Wenson Hsieh.

        * Configurations/WebKit.xcconfig:
        * Platform/spi/ios/CorePDFSPI.h:

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

        Make it possible to disable animated keyboard scrolling behavior
        https://bugs.webkit.org/show_bug.cgi?id=192331
        <rdar://problem/45586859>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator invalidate]):
        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        (-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
        (-[WKKeyboardScrollingAnimator startRepeatTimerIfNeeded]):
        (-[WKKeyboardScrollingAnimator stopRepeatTimer]):
        (-[WKKeyboardScrollingAnimator performDiscreteScroll]):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        * WebKit.xcodeproj/project.pbxproj:

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

        Remove "using namespace WebKit" under Source/WebKit/WebProcess/InjectedBundle/API
        https://bugs.webkit.org/show_bug.cgi?id=192301

        Reviewed by Alex Christensen.

        Removed "using namespace WebKit" statement, and use "WebKit::"
        namespace prefix instead.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleDOMWindowExtension.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageBanner.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageGroup.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleRangeHandle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:

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

        Regression(PSON) Google OAuth is broken in private sessions
        https://bugs.webkit.org/show_bug.cgi?id=192337
        <rdar://problem/46353558>

        Reviewed by Alex Christensen.

        In WebPageProxy::swapToWebProcess(), we would call removeWebPage() on the old WebProcessProxy and then
        addExistingWebPage() on the new WebProcessProxy, as you would expect in case of process swap.

        The issue is that WebProcessProxy::removeWebPage() calls WebProcessPool::pageEndUsingWebsiteDataStore()
        which would cause the session to get destroyed assuming this was the last page using it. We would
        therefore lose session cookies after a process-swap in private session.

        To address the issue, a parameter to WebProcessPool::pageEndUsingWebsiteDataStore() and
        WebProcessPool::pageBeginUsingWebsiteDataStore() to control if we want to tell the WebProcessPool
        about the page beginning / ending its use of the session. In the case of a process-swap, we make
        sure the process pool is not notified.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::removeWebPage):
        * UIProcess/WebProcessProxy.h:

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

        [PSON] Request by the client to process-swap is ignored if the window has an opener
        https://bugs.webkit.org/show_bug.cgi?id=192267
        <rdar://problem/46386886>

        Reviewed by Brady Eidson.

        If the client forces a process-swap, we should process-swap, even if the browsing
        context has an opener (or openees). Previously, we would only bypass the cross-site
        check, not the openee / openees checks.

        The issue when doing so is that the openee still has a opener link to the window
        in the old process. They would see that the window is still there and navigated
        to 'about:blank' due to our page suspension logic. To address the issue, we no
        longer suspend the old WebPage if the process swap was forced by the client and
        we make sure that the old WebPage gets closed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-12-03  Keith Rollin  <krollin@apple.com>

        Add .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192082
        <rdar://problem/46312533>

        Reviewed by Brent Fulgham.

        Add .xcfilelist files for Generate Derived Sources and Generate
        Unified Sources build phases in Xcode. These are just being staged for
        now; they'll be added to the Xcode projects later.

        * DerivedSources-input.xcfilelist: Added.
        * DerivedSources-output.xcfilelist: Added.
        * UnifiedSources-input.xcfilelist: Added.
        * UnifiedSources-output.xcfilelist: Added.

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Unreviewed build fix.

        * Platform/Logging.h:

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

        Remove unused NetworkProcessCreationParameters.diskCacheSizeOverride
        https://bugs.webkit.org/show_bug.cgi?id=192246

        Reviewed by Chris Dumez.

        The last use of this functionality was removed in rdar://problem/46344871

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationDiskCacheSizeOverride):
        (WKContextConfigurationSetDiskCacheSizeOverride):
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration diskCacheSizeOverride]):
        (-[_WKProcessPoolConfiguration setDiskCacheSizeOverride:]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        Add WKWebProcessPlugInLoadDelegate SPI willStartProvisionalLoadForFrame with a completion handler
        https://bugs.webkit.org/show_bug.cgi?id=192272

        Reviewed by Brady Eidson.

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (ResourceLoadClient::ResourceLoadClient):
        (ResourceLoadClient::loadDelegate const):
        (ResourceLoadClient::pluginContextController const):
        (PageLoaderClient::PageLoaderClient):
        (PageLoaderClient::loadDelegate const):
        (PageLoaderClient::pluginContextController const):
        (PageLoaderClient::didStartProvisionalLoadForFrame):
        (PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (PageLoaderClient::didFinishLoadForFrame):
        (PageLoaderClient::globalObjectIsAvailableForFrame):
        (PageLoaderClient::didRemoveFrameFromHierarchy):
        (PageLoaderClient::didCommitLoadForFrame):
        (PageLoaderClient::didFinishDocumentLoadForFrame):
        (PageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (PageLoaderClient::didFailLoadWithErrorForFrame):
        (PageLoaderClient::didSameDocumentNavigationForFrame):
        (PageLoaderClient::didLayoutForFrame):
        (PageLoaderClient::didReachLayoutMilestone):
        (PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (PageLoaderClient::didHandleOnloadEventsForFrame):
        (PageLoaderClient::userAgentForURL const):
        (ResourceLoadClient::willSendRequestForFrame):
        (ResourceLoadClient::didInitiateLoadForResource):
        (ResourceLoadClient::didFinishLoadForResource):
        (ResourceLoadClient::didFailLoadForResource):
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
        (didStartProvisionalLoadForFrame): Deleted.
        (didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
        (didFinishLoadForFrame): Deleted.
        (globalObjectIsAvailableForFrame): Deleted.
        (didRemoveFrameFromHierarchy): Deleted.
        (didCommitLoadForFrame): Deleted.
        (didFinishDocumentLoadForFrame): Deleted.
        (didFailProvisionalLoadWithErrorForFrame): Deleted.
        (didFailLoadWithErrorForFrame): Deleted.
        (didSameDocumentNavigationForFrame): Deleted.
        (didLayoutForFrame): Deleted.
        (didReachLayoutMilestone): Deleted.
        (didFirstVisuallyNonEmptyLayoutForFrame): Deleted.
        (didHandleOnloadEventsForFrame): Deleted.
        (userAgentForURL): Deleted.
        (setUpPageLoaderClient): Deleted.
        (willSendRequestForFrame): Deleted.
        (didInitiateLoadForResource): Deleted.
        (didFinishLoadForResource): Deleted.
        (didFailLoadForResource): Deleted.
        (setUpResourceLoadClient): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        Swipe snapshot stays up too long swiping around on apple.com (waiting for first paint)
        https://bugs.webkit.org/show_bug.cgi?id=192319
        <rdar://problem/45928708>

        Reviewed by Simon Fraser.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        In r236966, I reverted slightly too much of r232416.
        We still need to defer requesting a presentation update callback until
        after the provisional load starts. Otherwise, we could get the callback
        while we're in the 'paused' state, and drop it on the floor. That would
        then mean that we time out instead of promptly removing the snapshot.

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

        Update process assertions after swapping processes
        https://bugs.webkit.org/show_bug.cgi?id=192318
        <rdar://problem/46377552>

        Reviewed by Chris Dumez.

        If the previous WebProcess had a ProcessAssertion to prevent it from being suspended,
        after navigation and process swapping we need the new WebProcess to update its process assertions.

        * UIProcess/API/Cocoa/PageLoadStateObserver.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didSwapWebProcesses):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didSwapWebProcesses):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):

2018-12-03  Daniel Bates  <dabates@apple.com>

        [iOS] Do not handle key events that are key commands
        https://bugs.webkit.org/show_bug.cgi?id=191608
        <rdar://problem/46046013>

        Reviewed by Ryosuke Niwa.

        A key down event may be associated with a key command. If it is then we want to execute the
        key command instead of inserting or deleting text. We need to ask UIKit to handle the current
        event as a key command to find out.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]): Ask UIKit to handle the current event
        as a key command. If it handles it then we're done. Otherwise, do what we do now.

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Add logging channel for hover related content observation
        https://bugs.webkit.org/show_bug.cgi?id=192312

        Reviewed by Simon Fraser.

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

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

        Enable swipe snapshot removal logging in release builds
        https://bugs.webkit.org/show_bug.cgi?id=192313

        Reviewed by Dean Jackson.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
        This is super-low-traffic and super-helpful logging.
        Turn it on all the time.

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

        Use WallTime for file time
        https://bugs.webkit.org/show_bug.cgi?id=192287

        Reviewed by Darin Adler.

        * Shared/SessionState.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DatabaseDetails>::decode):
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        * UIProcess/API/glib/WebKitWebViewSessionState.cpp:
        (decodeHTTPBody):
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        (WebKit::PluginInfoCache::getPluginInfo):
        (WebKit::PluginInfoCache::updatePluginInfo):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::hasFileChangedSince):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFormDataElement):
        (WebKit::decodeFormDataElement):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        (WebKit::removeAllMediaKeyStorageForOriginPath):
        (WebKit::WebMediaKeyStorageManager::deleteMediaKeyEntriesForOrigin):
        (WebKit::WebMediaKeyStorageManager::deleteMediaKeyEntriesModifiedBetweenDates):
        (WebKit::WebMediaKeyStorageManager::deleteAllMediaKeyEntries):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toHTTPBody):
        (WebKit::toFormData):

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

        [Cocoa] Check message IDs when decoding Mach messages in IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=192300
        rdar://problem/46215523

        Reviewed by Chris Dumez.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendOutgoingMessage): Use message IDs other than 0 and 1 for
        the messages, as suggested by an expert at Apple.
        (IPC::createMessageDecoder): Update for the new message IDs.
        (IPC::Connection::receiveSourceEventHandler): Ignore messages with unexpected
        message IDs.

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

        [Cocoa] Check descriptor types in createMessageDecoder
        https://bugs.webkit.org/show_bug.cgi?id=192302

        Reviewed by Chris Dumez.

        Not sure how to construct a test case for Connection, so not adding any
        tests at this time.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::createMessageDecoder): Check descriptor types and return nullptr if they
        are incorrect. Retained the assertions to help with debugging.
        (IPC::Connection::receiveSourceEventHandler): Ignore the message if no decoder
        is created, which means the message is invalid.

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

        Alignment padding needs to be zeroed out in IPC::Encoder
        https://bugs.webkit.org/show_bug.cgi?id=192304

        Reviewed by Chris Dumez.

        Might be useful to make a regression test for this, but I couldn't find any
        other tests for this code.

        * Platform/IPC/Encoder.cpp:
        (IPC::Encoder::grow): Use std::memset to zero-fill padding bytes.

        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::HistoryEntryDataEncoder::grow): Ditto.

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

        [Cocoa] Streamline sandbox code a tiny bit
        https://bugs.webkit.org/show_bug.cgi?id=192299

        Reviewed by Anders Carlsson.

        * Shared/mac/SandboxUtilities.mm:
        (WebKit::processHasContainer): Removed separate function, just use the
        pathForProcessContainer instead of repeating logic. This costs a tiny
        bit of memory allocation overhead the first time this function is called,
        but in return we can eliminate a second copy of the code to call
        sandbox_container_path_for_pid.

2018-12-03  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event when more capture device information are revealed.
        https://bugs.webkit.org/show_bug.cgi?id=192268

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Call captureDevicesChanged
        if a filtered device list was returned previously.
        (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess): Clear m_hasFilteredDeviceList.
        (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Filter device
        list and strip device IDs if gUM permission hasn't been given.
        (WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired): Clear m_hasFilteredDeviceList.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2018-12-03  Keith Rollin  <krollin@apple.com>

        Remove Network Capture
        https://bugs.webkit.org/show_bug.cgi?id=192296
        <rdar://problem/46408648>

        Reviewed by Daniel Bates.

        r209498 introduced an embedded record and replay facility for network
        resource loading. This facility was added in order to support a new
        implementation of the PLT and related performance tests. The PLT is
        currenty taking a different direction, and so this record/replace
        facility is no longer needed. Removing it as unused code.

        * CMakeLists.txt:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::setDefersLoading):
        (WebKit::NetworkLoad::continueWillSendRequest):
        (WebKit::NetworkLoad::willPerformHTTPRedirection):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        (WebKit::NetworkLoad::didReceiveData):
        (WebKit::NetworkLoad::didCompleteWithError):
        (WebKit::NetworkLoad::initializeForRecord): Deleted.
        (WebKit::NetworkLoad::initializeForReplay): Deleted.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::terminate):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/capture/NetworkCaptureEvent.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureEvent.h: Removed.
        * NetworkProcess/capture/NetworkCaptureLogging.h: Removed.
        * NetworkProcess/capture/NetworkCaptureManager.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureManager.h: Removed.
        * NetworkProcess/capture/NetworkCaptureRecorder.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureRecorder.h: Removed.
        * NetworkProcess/capture/NetworkCaptureReplayer.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureReplayer.h: Removed.
        * NetworkProcess/capture/NetworkCaptureResource.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureResource.h: Removed.
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp: Removed.
        * NetworkProcess/capture/NetworkDataTaskReplay.h: Removed.
        * NetworkProcess/capture/json.hpp: Removed.
        * Sources.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebKit.xcodeproj/project.pbxproj:
        * config.h:

2018-12-02  Zalan Bujtas  <zalan@apple.com>

        Add a runtime feature flag for LayoutFormattingContext.
        https://bugs.webkit.org/show_bug.cgi?id=192280

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-12-01  Chris Dumez  <cdumez@apple.com>

        [PSON] process-swapping may occur even though opener has handle to openee
        https://bugs.webkit.org/show_bug.cgi?id=192277

        Reviewed by Antti Koivisto.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::openedByDOMWithOpener const):
        (API::Navigation::openedViaWindowOpenWithOpener const): Deleted.
        (API::Navigation::opener const): Deleted.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-12-01  Alexey Proskuryakov  <ap@apple.com>

        Modernize version check for _suppressedAutoAddedHTTPHeaders
        https://bugs.webkit.org/show_bug.cgi?id=192175

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        Also removed selector check - we only need to support running on 10.13.0 when building
        with 10.13.0 SDK.

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

        Fix Windows build.

        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.cpp:
        (WKWebsiteDataStoreEnableCustomNetworkProxySettings):

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

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

        Reviewed by Keith Miller.

        * NetworkProcess/Cookies/WebCookieManager.cpp:
        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::publishDownloadProgress):
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::publishProgress):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::publishProgress):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
        (WebKit::NetworkBlobRegistry::unregisterBlobURL):
        (WebKit::NetworkBlobRegistry::blobSize):
        (WebKit::NetworkBlobRegistry::filesInBlob):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::setContentExtensionController):
        (WebKit::NetworkLoadChecker::url const):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::writeBlobToFilePath):
        (WebKit::NetworkProcess::publishDownloadProgress):
        (WebKit::NetworkProcess::preconnectTo):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::logBlockedCookieInformation):
        (WebKit::logCookieInformationInternal):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::create):
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
        (WebKit::NetworkCache::Statistics::recordRevalidationSuccess):
        * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
        (WebKit::NetworkCache::SubresourceInfo::firstPartyForCookies const):
        * NetworkProcess/capture/NetworkCaptureEvent.cpp:
        (WebKit::NetworkCapture::Request::operator WebCore::ResourceRequest const):
        (WebKit::NetworkCapture::Response::operator WebCore::ResourceResponse const):
        (WebKit::NetworkCapture::Error::operator WebCore::ResourceError const):
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        (WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
        (WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
        (WebKit::NetworkCapture::Manager::urlIdentifyingCommonDomain):
        * NetworkProcess/capture/NetworkCaptureManager.h:
        * NetworkProcess/capture/NetworkCaptureResource.cpp:
        (WebKit::NetworkCapture::Resource::url):
        (WebKit::NetworkCapture::Resource::queryParameters):
        * NetworkProcess/capture/NetworkCaptureResource.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::deleteHSTSCacheForHostNames):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::openCFURLRef):
        (WebKit::replacedNSWorkspace_launchApplicationAtURL_options_configuration_error):
        * Shared/API/APIURL.h:
        (API::URL::create):
        (API::URL::equals):
        (API::URL::URL):
        (API::URL::url const):
        (API::URL::parseURLIfNecessary const):
        * Shared/API/APIUserContentURLPattern.h:
        (API::UserContentURLPattern::matchesURL const):
        * Shared/API/c/WKURLRequest.cpp:
        * Shared/API/c/WKURLResponse.cpp:
        * Shared/API/c/cf/WKURLCF.mm:
        (WKURLCreateWithCFURL):
        (WKURLCopyCFURL):
        * Shared/API/glib/WebKitURIRequest.cpp:
        * Shared/API/glib/WebKitURIResponse.cpp:
        * Shared/APIWebArchiveResource.mm:
        (API::WebArchiveResource::WebArchiveResource):
        * Shared/AssistedNodeInformation.h:
        * Shared/Cocoa/WKNSURLExtras.mm:
        (-[NSURL _web_originalDataAsWTFString]):
        (): Deleted.
        * Shared/SessionState.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebErrors.h:
        * Shared/WebHitTestResultData.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/gtk/WebErrorsGtk.cpp:
        * Shared/ios/InteractionInformationAtPosition.h:
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::appendRedirectionURL):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::takeRedirectChain):
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::signedPublicKeyAndChallengeString):
        (API::NavigationClient::contentRuleListNotification):
        (API::NavigationClient::webGLLoadPolicy const):
        (API::NavigationClient::resolveWebGLLoadPolicy const):
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::saveDataToFileInDownloadsFolder):
        * UIProcess/API/APIUserScript.cpp:
        (API::UserScript::generateUniqueURL):
        * UIProcess/API/APIUserScript.h:
        * UIProcess/API/APIUserStyleSheet.cpp:
        (API::UserStyleSheet::generateUniqueURL):
        * UIProcess/API/APIUserStyleSheet.h:
        * UIProcess/API/C/WKOpenPanelResultListener.cpp:
        (filePathsFromFileURLs):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadPlainTextStringWithUserData):
        (WKPageSetPageUIClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupAddUserStyleSheet):
        (WKPageGroupAddUserScript):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode):
        (WKWebsiteDataStoreSetStatisticsLastSeen):
        (WKWebsiteDataStoreSetStatisticsPrevalentResource):
        (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
        (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreSetStatisticsGrandfathered):
        (WKWebsiteDataStoreIsStatisticsGrandfathered):
        (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom):
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        * UIProcess/API/Cocoa/WKUserScript.mm:
        (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):
        (-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        * UIProcess/API/Cocoa/_WKApplicationManifest.mm:
        (-[_WKApplicationManifest initWithCoder:]):
        (+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
        * UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
        (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]):
        * UIProcess/API/glib/IconDatabase.cpp:
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (webkit_cookie_manager_get_cookies):
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp:
        * UIProcess/API/glib/WebKitSecurityOrigin.cpp:
        (webkit_security_origin_new_for_uri):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_load_plain_text):
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
        (WebKit::WebPaymentCoordinatorProxy::validateMerchant):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentRequest):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::navigateBrowsingContext):
        (WebKit::domainByAddingDotPrefixIfNeeded):
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::deleteAllCookies):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didFinish):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::contentRuleListNotification):
        (WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::signedPublicKeyAndChallengeString):
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Copied from Source/WebKit/WebProcess/Network/WebSocketProvider.h.
        (WebKit::SafeBrowsingResult::SafeBrowsingResult):
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::reportAnErrorURL):
        (WebKit::malwareDetailsURL):
        (WebKit::safeBrowsingDetailsText):
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource finish:]):
        (WebKit::SystemPreviewController::finish):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::saveDataToFileInDownloadsFolder):
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
        (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::writeToURLForFilePromiseProvider):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::publishProgress):
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::setRedirectChain):
        (WebKit::DownloadProxy::redirectChain const):
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didSameDocumentNotification):
        (WebKit::FrameLoadState::setUnreachableURL):
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::url const):
        (WebKit::FrameLoadState::setURL):
        (WebKit::FrameLoadState::provisionalURL const):
        (WebKit::FrameLoadState::unreachableURL const):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::writeBlobToFilePath):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::hasOnlySecureContent):
        * UIProcess/Plugins/PluginInfoStore.cpp:
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/SafeBrowsingResult.h: Copied from Source/WebKit/UIProcess/SystemPreviewController.h.
        (WebKit::SafeBrowsingResult::create):
        (WebKit::SafeBrowsingResult::url const):
        (WebKit::SafeBrowsingResult::provider const):
        (WebKit::SafeBrowsingResult::isPhishing const):
        (WebKit::SafeBrowsingResult::isMalware const):
        (WebKit::SafeBrowsingResult::isUnwantedSoftware const):
        (WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        * UIProcess/SuspendedPageProxy.cpp:
        * UIProcess/SystemPreviewController.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::url const):
        (WebKit::WebFrameProxy::provisionalURL const):
        (WebKit::WebFrameProxy::unreachableURL const):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::contentRuleListNotification):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::setURLSchemeHandlerForScheme):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
        (-[WKContentView _presentedViewControllerForPreviewItemController:]):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/ios/WKLegacyPDFView.mm:
        (-[WKLegacyPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _updateLocationInfo]):
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::decodeLegacySessionState):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _defaultAnimationController]):
        * UIProcess/win/WebInspectorProxyWin.cpp:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::showPaymentUI):
        (WebKit::WebPaymentCoordinator::validateMerchant):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::doRetrieveRecords):
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::registerFileBlobURL):
        * WebProcess/FileAPI/BlobRegistryProxy.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
        (API::InjectedBundle::PageLoaderClient::userAgentForURL const):
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameAllowsFollowingLink):
        (WKBundleFrameCopySuggestedFilenameForResourceWithURL):
        (WKBundleFrameCopyMIMETypeForResourceWithURL):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageHasLocalDataForURL):
        * WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp:
        (convertToUTF8String):
        * WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h:
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::preconnectTo):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Network/WebSocketProvider.h:
        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::WebSocketStream):
        * WebProcess/Network/WebSocketStream.h:
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::clickedLink):
        * WebProcess/Plugins/Plugin.h:
        * WebProcess/Plugins/PluginController.h:
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performURLRequest):
        (WebKit::PluginView::performJavaScriptURLRequest):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::webVisiblePluginInfo):
        * WebProcess/Plugins/WebPluginInfoProvider.h:
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::signedPublicKeyAndChallengeString const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebContextMenuClient.h:
        * WebProcess/WebCoreSupport/WebDragClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::readURLFromPasteboard):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        * WebProcess/WebPage/VisitedLinkTableController.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::allowsFollowingLink const):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        (WebKit::WebPage::dumpHistoryForTesting):
        (WebKit::WebPage::sendCSPViolationReport):
        (WebKit::WebPage::addUserScript):
        (WebKit::WebPage::addUserStyleSheet):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::WebPrintOperationGtk::frameURL const):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::activePagesOrigins):

2018-11-30  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add more logging of sandbox call entries.
        https://bugs.webkit.org/show_bug.cgi?id=192261
        rdar://problem/45772445

        Reviewed by Dean Jackson.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-11-30  Tim Horton  <timothy_horton@apple.com>

        Editable images should always return some data, even if the canvas doesn't have a size yet
        https://bugs.webkit.org/show_bug.cgi?id=192265
        <rdar://problem/46385911>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView layoutSubviews]):
        (emptyImage):
        (-[WKDrawingView renderedDrawing]):
        (-[WKDrawingView PNGRepresentation]):
        Some clients strongly depend on there being some data in an image, even if
        it's not of a usable size yet. We'll invalidate the attachment when the
        canvas size changes, so it will eventually settle at a usable size (after
        the first layer tree commit that includes the editable image).

2018-11-30  Don Olmstead  <don.olmstead@sony.com>

        Rename ENABLE_SUBTLE_CRYPTO to ENABLE_WEB_CRYPTO
        https://bugs.webkit.org/show_bug.cgi?id=192197

        Reviewed by Jiewen Tan.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:

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

        Move USE_CFNETWORK_IGNORE_HSTS to its proper place
        https://bugs.webkit.org/show_bug.cgi?id=192173

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (updateIgnoreStrictTransportSecuritySettingIfNecessary):
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):

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

        Remove unused WebProcessCreationParameters.uiProcessCookieStorageIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=192157

        Reviewed by Chris Dumez.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

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

        Remove privateBrowsingEnabled from NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192156

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-11-30  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for ProtectionSpace.
        https://bugs.webkit.org/show_bug.cgi?id=191648

        Reviewed by Alex Christensen.

        Added API to get certificate information from protection space.

        * PlatformWin.cmake:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData):
        * UIProcess/API/C/curl/WKProtectionSpaceCurl.cpp: Added.
        (WKProtectionSpaceCopyCertificateInfo):
        * UIProcess/API/C/curl/WKProtectionSpaceCurl.h: Added.

2018-11-30  David Quesada  <david_quesada@apple.com>

        -[WKProcessPool _downloadURLRequest:] should allow specifying the initiating web view
        https://bugs.webkit.org/show_bug.cgi?id=192212
        rdar://problem/46363706

        Reviewed by Alex Christensen.

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

2018-11-30  Per Arne Vollan  <pvollan@apple.com>

        Remove invalid character in sandbox introduced in r238703.

        Unreviewed sandbox fix.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-11-30  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for WebPreferences.yaml.
        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply): Send async messages via IPC::MessageSender.
        * Platform/cocoa/WebKitAdditions.mm: A an extension point for additional WebKit sources.
        * SourcesCocoa.txt: Added WebKitAdditions.mm as non-unified source.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Called finishConstruction.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Added an extension point for
        WebPaymentCoordinatorProxy.
        * WebKit.xcodeproj/project.pbxproj: Added WebKitAdditions.mm.
        * WebProcess/ApplePay/WebPaymentCoordinator.h: Added an extension point for
        WebPaymentCoordinator.

2018-11-30  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Support CTAP HID authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=188623

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm: Add missing header.

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

        REGRESSION (r238635): Dragging a text selection within WKWebView causes the selection highlight to get into a bad state
        https://bugs.webkit.org/show_bug.cgi?id=192165
        <rdar://problem/46346682>

        Reviewed by Daniel Bates.

        Fixes a bug in PageClientImpl::isViewFocused. Consider the following scenario:
        1. WKWebView is hosted within the view hierarchy
        2. First responder is *not* WKContentView
        3. The active focus retain count is nonzero

        Before r238635, we would return true, due to condition (3). However, after r238635, we only consider whether the
        first responder is WKContentView, since the web view is in the view hierarchy. This breaks scenarios where
        WebKit or UIKit attempts to retain focus and later restore the content view to be the first responder (an
        example of this is dragging a text selection between editable elements in the same web view).

        To fix this, simply bail early and return true if focus is being retained.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewFocused):

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

        Inform clients when editable image attachment backing data changes
        https://bugs.webkit.org/show_bug.cgi?id=192206
        <rdar://problem/46350277>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::invalidateGeneratedFileWrapper):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didInvalidateDataForAttachment:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::didInvalidateDataForAttachment):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::didInvalidateDataForAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didInvalidateDataForAttachment):
        * UIProcess/WebPageProxy.h:
        Plumb file-wrapper-invalidation through from APIAttachment to WKUIDelegate.

2018-11-29  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] DeviceIdHashSaltStorage should use iframe and top level documents
        https://bugs.webkit.org/show_bug.cgi?id=192182

        Reviewed by Youenn Fablet.

        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin): Key off of request and top 
        level documents.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins): Ditto.
        * UIProcess/DeviceIdHashSaltStorage.h:
        (WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin::HashSaltForOrigin):

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Pass both documents.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238713.

        Breaks internal builds.

        Reverted changeset:

        "[Cocoa] Add some WKA extension points"
        https://bugs.webkit.org/show_bug.cgi?id=192131
        https://trac.webkit.org/changeset/238713

2018-11-29  Simon Fraser  <simon.fraser@apple.com>

        Add an internal feature flag to enable async overflow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=192184

        Reviewed by Tim Horton.

        Add a new internal feature flag that will enable async overflow-scrolling for
        most overflow:scroll elements. Defaults to off.

        * Shared/WebPreferences.yaml:

2018-11-29  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for WebPreferences.yaml.
        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply): Send async messages via IPC::MessageSender.
        * Platform/cocoa/WebKitAdditions.mm: A an extension point for additional WebKit sources.
        * SourcesCocoa.txt: Added WebKitAdditions.mm as non-unified source.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Called finishConstruction.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Added an extension point for
        WebPaymentCoordinatorProxy.
        * WebKit.xcodeproj/project.pbxproj: Added WebKitAdditions.mm.
        * WebProcess/ApplePay/WebPaymentCoordinator.h: Added an extension point for
        WebPaymentCoordinator.

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

        Try to fix the build.

        * Platform/spi/ios/PencilKitSPI.h:

2018-11-29  David Quesada  <david_quesada@apple.com>

        Add SPI to publish NSProgress on active downloads
        https://bugs.webkit.org/show_bug.cgi?id=192021
        rdar://problem/44405661

        Reviewed by Alex Christensen.

        Make it possible for clients to allow other processes to monitor the state of active
        downloads. On Cocoa platforms, this can be done by creating an NSProgress, publishing
        it on an appropriate file URL (potentially a different file URL than where the download
        data is being written), updating properties on it as the download makes progress, and
        wiring up a cancellation handler that allows it to be remotely canceled. Interested
        clients can then subscribe to progress on that URL and receive a proxy to the progress
        that WebKit publishes.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::~Download):
        (WebKit::Download::platformDestroyDownload):
            Add a platform-customizable hook for destructing the Download. DownloadCocoa.mm
            will interact with its Objective-C NSProgress instance at this point.

        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::dataTaskBecameDownloadTask):
            See comments for publishDownloadProgress().
        (WebKit::DownloadManager::publishDownloadProgress):
            If the provided downloadID corresponds to a non-Pending Download, hand the URL
            and a matching sandbox extension to the Download so it can create its progress.
            Otherwise, store the URL and sandbox extension on the PendingDownload to be used
            later when the full Download is created. When this happens, dataTaskBecameDownloadTask()
            will tell the PendingDownload about the Download it has become. The PendingDownload
            will then relay the progress URL and sandbox extension to the Download.

        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::publishProgress):
            Store the progress info for later use, when the proper Download is created.
        (WebKit::PendingDownload::didBecomeDownload):
            If there was a progress URL provided earlier, tell the Download corresponding to this
            PendingDownload to publish its progress using that URL.

        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::platformDestroyDownload):
            When the Download is destroyed (i.e. when the download succeeds, fails, or is canceled),
            unpublish the progress, since there is no longer any activity to report.
        (WebKit::Download::publishProgress):
            Resolve the sandbox extension, create a progress configured to reflect the progress of
            this Download's NSURLSessionDownloadTask, and publish it at the given file URL.

        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownload.h.
        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: Added.
        (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]):
            Configure this progress, start observing properties on the download task that this
            progress will reflect, and connect the cancellation handler of the progress to cancel
            the corresponding Download.
        (-[WKDownloadProgress publish]):
        (-[WKDownloadProgress unpublish]):
            Override these methods to consume and revoke the sandbox extension to make sure the
            process has access to the progress file while the progress will be published.
        (-[WKDownloadProgress dealloc]):
        (-[WKDownloadProgress observeValueForKeyPath:ofObject:change:context:]):
            When either byte count (number received, or number expected to receive) of the download
            task changes, update this progress to reflect that.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::publishDownloadProgress):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
            Allow looking up the services that manages published NSProgresses.

        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload publishProgressAtURL:]):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::publishProgress):
        * UIProcess/Downloads/DownloadProxy.h:
        * WebKit.xcodeproj/project.pbxproj:

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

        Make drawing tools available when an editable image is focused
        https://bugs.webkit.org/show_bug.cgi?id=192172
        <rdar://problem/30337960>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h:
        Add some more SPI.

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleStylusSingleTapAtPoint):
        (WebKit::isAssistableElement):
        (WebKit::WebPage::getAssistedNodeInformation):
        Plumb the assisted node's embedded view ID, if available.
        Also add a new input type for drawings, and use it when appropriate.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
        Add WKInputTypeDrawing.

        * UIProcess/ios/PencilKitSoftLink.h: Added.
        * UIProcess/ios/PencilKitSoftLink.mm: Added.
        Pull soft-linking out into its own file, to fix unified sources.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView requiresAccessoryView]):
        Install a keyboard when a drawing is focused.
        Also, deduplicate one "curretUserInterfaceIdiomIsPad"; just fall through.

        (-[WKContentView inputView]):
        Make a WKInkPickerControl when a drawing is focused.

        (-[WKContentView textInputTraits]):
        (isAssistableInputType):
        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        (-[WKDrawingView PNGRepresentation]):
        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):
        Adopt PencilKitSoftLink.

        (-[WKDrawingView canvasView]):
        Expose the internal canvas view for use by WKInkPickerControl.

        * UIProcess/ios/WKInkPickerControl.h: Copied from Source/WebKit/Platform/spi/ios/PencilKitSPI.h.
        * UIProcess/ios/WKInkPickerControl.mm: Added.
        (-[WKInkPickerView initWithFrame:drawingView:]):
        (-[WKInkPickerView didPickInk]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]):
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]):
        (-[WKInkPickerView inkPickerSize]):
        (-[WKInkPickerView layoutSubviews]):
        (-[WKInkPickerView sizeThatFits:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        (-[WKInkPickerControl initWithDrawingView:]):
        (-[WKInkPickerControl beginEditing]):
        (-[WKInkPickerControl endEditing]):
        (-[WKInkPickerControl assistantView]):
        Install and hook up a PKInlineInkPicker.
        Center it in the keyboard.
        Plumb changes through to the canvas view.

        * WebKit.xcodeproj/project.pbxproj:

2018-11-29  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add logging for some sandbox entries.
        https://bugs.webkit.org/show_bug.cgi?id=192126

        Reviewed by Brent Fulgham.

        Add logging for sandbox entries which are possibly not needed.

        * WebProcess/com.apple.WebProcess.sb.in:

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

        Fix _WKWebsiteDataStoreConfiguration. sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier SPI introduced in r235127
        https://bugs.webkit.org/show_bug.cgi?id=192191

        Reviewed by Andy Estes.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        When trying to adopt the new SPI and verify it worked, I found that the strings are not copied in one place where they should be.

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [ContentObservation] Decouple content change and DOM timer scheduling observation
        https://bugs.webkit.org/show_bug.cgi?id=192170

        Reviewed by Simon Fraser.

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

2018-11-29  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Tell AirPlay picker when a file has video
        https://bugs.webkit.org/show_bug.cgi?id=192155
        <rdar://problem/43843865>

        Reviewed by Jer Noble.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        Add hasVideo parameter.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]): Add
        hasVideo parameter, pass info to MPMediaControlsViewController.
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Deleted.

2018-11-29  Alexey Proskuryakov  <ap@apple.com>

        Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence
        https://bugs.webkit.org/show_bug.cgi?id=192041

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238678.

        Breaks internal builds.

        Reverted changeset:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238678

2018-11-29  Suresh Koppisetty  <skoppisetty@apple.com>

        Addressed a FIXME by removing an unnecessary call to [NSApplication sharedApplication].
        https://bugs.webkit.org/show_bug.cgi?id=192099

        Reviewed by Geoffrey Garen.

        [NSApplication sharedApplication] call is no longer needed in platformInitializeWebProcess as [NSApplication _accessibilityInitialize] calls [NSApplication sharedApplication].

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

2018-11-29  Conrad Shultz  <conrad_shultz@apple.com>

        Factor out configuration of the file upload image picker
        https://bugs.webkit.org/show_bug.cgi?id=192138
        <rdar://problem/46334871>

        Reviewed by Tim Horton.

        By factoring configuration of the picker into its own method, it makes it easier
        to apply custom configuration in subclasses in the future.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
        (-[WKFileUploadPanel _configureImagePicker:]):

2018-11-29  Tomas Popela  <tpopela@redhat.com>

        [GTK][WPE] Fix BubblewrapLauncher clang warnings
        https://bugs.webkit.org/show_bug.cgi?id=192086

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bindPathVar): Initialize the i variable to 0.
        (WebKit::setupSeccomp): Initialize the optional datum_b member.

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

        Web Inspector: REGRESSION(?): all "Show *" develop menu items cause the page to crash
        https://bugs.webkit.org/show_bug.cgi?id=192016
        <rdar://problem/46284417>

        Reviewed by Devin Rousso.

        Previously calling the Page's inspectorController.show()
        would create a frontend connection on the WebProcess side.
        However now the frontend connection is handed to the WebProcess
        once the UIProcess creates it. So queue actions that take place
        immediately after showing the inspector until we have a frontend
        to send the actions to.

        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::setFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        (WebKit::WebInspector::whenFrontendConnectionEstablished):
        (WebKit::WebInspector::showConsole):
        (WebKit::WebInspector::showResources):
        (WebKit::WebInspector::showTimelines):
        (WebKit::WebInspector::showMainResourceForFrame):
        (WebKit::WebInspector::startPageProfiling):
        (WebKit::WebInspector::stopPageProfiling):
        (WebKit::WebInspector::startElementSelection):
        (WebKit::WebInspector::stopElementSelection):

2018-11-28  Vivek Seth  <v_seth@apple.com>

        Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
        https://bugs.webkit.org/show_bug.cgi?id=192094
        <rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate

        Reviewed by Chris Dumez.

        For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):

2018-11-28  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r234980): Crash in -[WKWebView _restorePageStateToUnobscuredCenter:scale:]
        https://bugs.webkit.org/show_bug.cgi?id=192127
        rdar://problem/44194179

        Reviewed by Tim Horton.
        
        _restorePageStateToUnobscuredCenter: could receive an Optional<FloatRect> from the
        web process, and unconditionally called .value() even though it may not be engaged.
        
        No repro steps known, so no testcase.

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

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

        Unreviewed, rolling out r238653 and r238656.
        https://bugs.webkit.org/show_bug.cgi?id=192130

        Breaks iOS build (Requested by smfr on #webkit).

        Reverted changesets:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238653

        "Attempt to fix the iOS build by only including RevealSPI.h
        when it's needed."
        https://trac.webkit.org/changeset/238656

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

        Modernize BlobRegistry::writeBlobsToTemporaryFiles
        https://bugs.webkit.org/show_bug.cgi?id=192117

        Reviewed by Dean Jackson.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::writeBlobToFilePath):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::sendWithAsyncReply):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::writeBlobToFilePath):
        (WebKit::NetworkProcessProxy::didWriteBlobToFilePath): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
        * WebProcess/FileAPI/BlobRegistryProxy.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
        (WebKit::NetworkProcessConnection::didWriteBlobsToTemporaryFiles): Deleted.
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:

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

        Move loadThrottleLatency from NetworkProcessCreationParameters to NetworkSessionCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192122

        Reviewed by Dean Jackson.

        This is part of an effort to reduce global variables in the NetworkProcess.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::didReceiveResponse):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::loadThrottleLatency const): Deleted.
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::loadThrottleLatency const):
        * NetworkProcess/NetworkSessionCreationParameters.cpp: Added.
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const): Deleted.
        (WebKit::NetworkSessionCreationParameters::decode): Deleted.
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Sources.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:

2018-11-15  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

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

        Update generate-{derived,unified}-sources scripts to support generating .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192031
        <rdar://problem/46286816>

        Reviewed by Alex Christensen.

        The Generate Derived Sources and Generate Unified Sources build phases
        in Xcode need to have their inputs and outputs specified. This
        specification will come in the form of .xcfilelist files that will be
        attached to these build phases. There is one .xcfilelist file that
        lists the input file and one that lists the output files. As part of
        this work, the various generate-{derived,unified}-sources scripts that
        are executed in these Generate build phases are modified to help in
        the creation of these .xcfilelist files. In particular, they can now
        be invoked with command-line parameters. These parameters are then
        used to alter the normal execution of these scripts, causing them to
        produce the .xcfilelist files as opposed to actually generating the
        files that are listed in those files.

        * Scripts/generate-derived-sources.sh:
        * Scripts/generate-unified-sources.sh:

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

        Revert print_all_generated_files work in r238008; tighten up target specifications
        https://bugs.webkit.org/show_bug.cgi?id=192025
        <rdar://problem/46284301>

        Reviewed by Alex Christensen.

        In r238008, I added a facility for DerivedSources.make makefiles to
        print out the list of files that they generate. This output was used
        in the generation of .xcfilelist files used to specify the output of
        the associated Generate Derived Sources build phases in Xcode. This
        approach worked, but it meant that people would need to follow a
        specific convention to keep this mechanism working.

        Instead of continuing this approach, I'm going to implement a new
        facility based on the output of `make` when passed the -d flag (which
        prints dependency information). This new mechanism is completely
        automatic and doesn't need maintainers to follow a convention. To that
        end, remove most of the work performed in r238008 that supports the
        print_all_generated_files target.

        At the same time, it's important for the sets of targets and their
        dependencies to be complete and correct. Therefore, also include
        changes to bring those up-to-date. As part of that, you'll see
        prevalent use of a particular technique. Here's an example:

            BYTECODE_FILES = \
                Bytecodes.h \
                BytecodeIndices.h \
                BytecodeStructs.h \
                InitBytecodes.asm \
            #
            BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))

            all : $(BYTECODE_FILES)

            $(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb
                ...

        These lines indicate a set of generated files (those specified in
        BYTECODE_FILES). These files are generated by the BytecodeList.rb
        tool. But, as opposed to the normal rule where a single foo.output is
        generated by foo.input plus some additional dependencies, this rule
        produces multiple output files from a tool whose connection to the
        output files is not immediately clear. A special approach is needed
        where a single rule produces multiple output files. The normal way to
        implement this is to use an .INTERMEDIATE target. However, we used
        this approach in the past and ran into a problem with it, addressing
        it with an alternate approach in r210507. The above example shows this
        approach. The .'s in the list of target files are replaced with %'s,
        and the result is used as the left side of the dependency rule.

        * DerivedSources.make:

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

        [iOS] Page not defocused when Find-in-page becomes first responder
        https://bugs.webkit.org/show_bug.cgi?id=192084
        <rdar://problem/46146777>

        Reviewed by Tim Horton.

        When -becomeFirstResponder and -resignFirstResponder is called the page should become focused
        and defocused, respectively. WebKit adjusts it behavior depending on whether it knows it has
        focus. This includes decisions about whether to allow an element to be focused. We need to
        ensure that WebKit knows whether the web view is focused for it to make good decisions.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewFocused): Check if the content view is the first responder and
        hence is accepting keyboard input. Note that picture-in-picture views do not accept keyboard
        input.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView becomeFirstResponderForWebView]): Update activity state when the view
        becomes focused.
        (-[WKContentView resignFirstResponderForWebView]): Update activity state when the view
        becomes defocused.

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

        Remove dead code from an earlier attempt at implementing safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=192067

        Reviewed by Chris Dumez.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        Move logCookieInformation bool from NetworkProcess to NetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=192049

        Reviewed by Chris Dumez.

        Part of an effort to remove globals in the NetworkProcess.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::shouldLogCookieInformation const): Deleted.
        * 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):
        (WebKit::NetworkResourceLoader::logCookieInformation const):
        (WebKit::logBlockedCookieInformation):
        (WebKit::logCookieInformationInternal):
        (WebKit::NetworkResourceLoader::logCookieInformation):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::logCookieInformation const):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):

2018-11-28  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238620.

        Broke internal builds again.

        Reverted changeset:

        "Remove @no-unify of InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp"
        https://bugs.webkit.org/show_bug.cgi?id=191853
        https://trac.webkit.org/changeset/238620

2018-11-28  Yongjun Zhang  <yongjun_zhang@apple.com>

        Allow WebKit clients to specify a minimum effective width for layout.
        https://bugs.webkit.org/show_bug.cgi?id=191499
        <rdar://problem/45362678>

        Reviewed by Wenson Hsieh.

        If we ignore the meta viewport (_shouldIgnoreMetaViewport is true), the default layout width will be device
        width. For clients that wish to lay out the content with a different width value, we would need to add a way
        to specify the effective width for layout.

        * UIProcess/API/Cocoa/WKWebView.mm: Add an iVar _minimumEffectiveDeviceWidth.
        (-[WKWebView _dispatchSetViewLayoutSize:]): Call the new setViewportConfigurationViewLayoutSize method.
        (-[WKWebView _setViewScale:]): Ditto.
        (-[WKWebView _setMinimumEffectiveWidth:]): The setter for _minimumEffectiveDeviceWidth.
        (-[WKWebView _minimumEffectiveWidth]): Getter for _minimumEffectiveDeviceWidth
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add a property _minimumEffectiveDeviceWidth to WKWebView.
        * UIProcess/WebPageProxy.h: Change setViewportConfigurationViewLayoutSize to take another argument minimumEffectiveDeviceWidth.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize): Also send effectiveWidth to WebContent process.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Set the initial effective width to 0 when creating a web page, this tells ViewportConfiguration
             to ignore the minimum effective width value.
        * WebProcess/WebPage/WebPage.h: Change setViewportConfigurationViewLayoutSize to take another argument effectiveWidth.
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setViewportConfigurationViewLayoutSize): Also pass effectiveWidth value to ViewportConfiguration.

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

        Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191853

        Reviewed by Michael Catanzaro.

        In r235845, I excluded InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp from unify source builds in order to
        work around a MSVC bug.

        Then, I commited a different workaround for the MSVC bug in
        r238386. Now, we can include InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp in unified source builds. Revert
        r235845.

        * Sources.txt: Removed @no-unify of InjectedBundleRangeHandle.cpp
        and InjectedBundleNodeHandle.cpp
        * WebKit.xcodeproj/project.pbxproj: Unchecked Target Membership
        not to be compiled by XCode.

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

        Web Inspector: REGRESSION(r238378): reloading WebInspector after a settings change doesn't re-show WebInspector
        https://bugs.webkit.org/show_bug.cgi?id=191971

        Reviewed by Matt Baker.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::reopen): Deleted.
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        Move reopen out of the WebProcess...

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::reopen):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.messages.in:
        And into the UIProcess where the order of messages won't
        be as problematic.

        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::reopen):
        Send a message to the WebInspectorProxy instead.

2018-11-28  Alexey Proskuryakov  <ap@apple.com>

        Remove another OS version check from NetworkDataTaskCocoa.mm
        https://bugs.webkit.org/show_bug.cgi?id=192046

        Reviewed by Alex Christensen.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::statelessCookieStorage):

2018-11-28  Alexey Proskuryakov  <ap@apple.com>

        Modernize version checks for same site cookie support
        https://bugs.webkit.org/show_bug.cgi?id=192054

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::updateTaskWithFirstPartyForSameSiteCookies):
        Also removed runtime checks, which are no longer relevant.

2018-11-27  Mark Lam  <mark.lam@apple.com>

        ENABLE_FAST_JIT_PERMISSIONS should be false for iosmac.
        https://bugs.webkit.org/show_bug.cgi?id=192055
        <rdar://problem/46288783>

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

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

        Make synchronous IPC introduced in r237267 asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=190757

        Reviewed by Chris Dumez.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:completionHandler:]):
        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::activePagesOriginsInWebProcessForTesting):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::activePagesDomainsForTesting):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getActivePagesOriginsForTesting):
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::getActivePagesOriginsForTesting):

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

        Safe browsing warning text needs to be visible on High Sierra
        https://bugs.webkit.org/show_bug.cgi?id=192022

        Reviewed by Tim Horton.

        Something about AppKit, autolayout, view insertion order, and NSTextView makes the text lay
        out with initial size of {0, 0} on High Sierra. Using an NSTextField instead makes the details visible.

        Covered by an API test.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (makeLabel):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning layoutText]):
        (makeTitleLabel): Deleted.

2018-11-27  Tim Horton  <timothy_horton@apple.com>

        WKNavigation.AutomaticViewReloadAfterWebProcessCrash asserts after r238538
        https://bugs.webkit.org/show_bug.cgi?id=192038
        <rdar://problem/46288457>

        Reviewed by Wenson Hsieh.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::resetState):
        (WebKit::m_editableImageController): Deleted.
        Properly invalidate m_editableImageController when resetting WebPageProxy.
        Otherwise, the MessageReceiverMaps get invalidated, then later when
        EditableImageController goes away we assert trying to remove the receiver.

2018-11-27  Jiewen Tan  <jiewen_tan@apple.com>

        (r238246) [ MacOS Debug ] Layout Test http/wpt/webauthn/ctap-hid-failure.https.html is Crashing
        https://bugs.webkit.org/show_bug.cgi?id=191757

        Reviewed by Chris Dumez.

        Wrong nonce error causes retransmission, which then trigger wrong nonce error. This is expected
        behavior for mock testing. However, the main thread could time out when MockHidConnection::send
        is excuting the block on another thread. The block will then return without invoking the callback,
        which triggers this WTFCrash. The solution is always invoking the callback before return in the
        block.

        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):

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

        Better parsing of comments in generate-message*.py
        https://bugs.webkit.org/show_bug.cgi?id=191866
        <rdar://problem/46189563>

        Reviewed by Chris Dumez.

        The script parsing the *.messages.in files would treat a line starting
        with '#' as a comment, but not a line starting with '<whitespace>#'.
        This means that jamming a '#' right in front of the first character of
        a message definition (as opposed to the beginning of a line) will have
        no effect and the line will get treated just the same as a
        non-commented line. Fix this by trimming all white space from the
        beginning and ending of the line before processing it.

        * Scripts/webkit/parser.py:
        (parse):
        * Scripts/webkit/test-messages.in:

2018-11-27  Thibault Saunier  <tsaunier@igalia.com>

        [GTK|WPE] Allow disabling WebRTC unified plan SDP through an env var
        https://bugs.webkit.org/show_bug.cgi?id=192024

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):

2018-11-27  Alexey Proskuryakov  <ap@apple.com>

        Modernize the check for async _saveCookies existence
        https://bugs.webkit.org/show_bug.cgi?id=191987

        Reviewed by Dean Jackson.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformSyncAllCookies):

2018-11-27  Tim Horton  <timothy_horton@apple.com>

        Serialize and deserialize editable image strokes
        https://bugs.webkit.org/show_bug.cgi?id=192002
        <rdar://problem/30900149>

        Reviewed by Dean Jackson.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::updateAttributes):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willUpdateAttachmentAttributes):
        * UIProcess/WebPageProxy.h:
        When an attachment would update its DOM attributes, plumb a notification
        to EditableImageController, and allow it to block the update (because
        we don't really want to set src for editable image attachments,
        we just want the UI process to fully own the data).

        * Platform/spi/ios/PencilKitSPI.h:
        Add some SPI.

        * UIProcess/ios/EditableImageController.h:
        * UIProcess/ios/EditableImageController.mm:
        (WebKit::EditableImageController::loadStrokesFromAttachment):
        Add a helper to load strokes from an attachment.

        (WebKit::EditableImageController::associateWithAttachment):
        Try to load strokes from the attachment when initially associated.
        Don't create a file wrapper around a null image, so it will be regenerated later.

        (WebKit::EditableImageController::willUpdateAttachmentAttributes):
        The aforementioned plumbing at update time.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView layoutSubviews]):
        Invalidate the attachment (so it will be regenerated upon request) if the
        canvas size changes.

        (-[WKDrawingView PNGRepresentation]):
        Serialize strokes into the EXIF User Comment field.
        We will find a different field to use (ideally a custom vendor-specific
        field that nobody else will use for anything), but this works for now.

        Don't try to render an image if we don't have a size or scale;
        PKImageRenderer will just fail anyway, so bail early.

        In the iOS Simulator, PKImageRenderer currently returns an unusable image.
        Instead, so that we have a image on which to serialize the strokes,
        create a transparent 1x1 image. This makes it possible to serialize strokes
        even though we don't have a usable rendered image, so that we can still test
        this change (and future changes).

        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):
        If available, deserialize strokes from the EXIF User Comment field.

        (-[WKDrawingView drawingDidChange:]):
        (-[WKDrawingView invalidateAttachment]):
        Factor invalidateAttachment out of drawingDidChange so we can call
        it from layoutSubviews too!

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

        Regression(PSON) crash under WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame()
        https://bugs.webkit.org/show_bug.cgi?id=191983
        <rdar://problem/46246863>

        Reviewed by Geoffrey Garen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Make sure the navigation still exists in m_mainFrameCreationHandler and return early if it
        does not.

        (WebKit::WebPageProxy::resetState):
        Clear out m_mainFrameCreationHandler / m_mainFrameWindowCreationHandler if we resetting the state
        after a crash. At this point, there is no chance the WebProcess will send us the IPC that will
        cause these to get called and we do not want old state to remain for future navigations.

2018-11-16  Jiewen Tan  <jiewen_tan@apple.com>

        Disallow loading webarchives as iframes
        https://bugs.webkit.org/show_bug.cgi?id=191728
        <rdar://problem/45524528>

        Reviewed by Youenn Fablet.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::unableToImplementPolicy):
        Add a check to prevent null pointer dereference.

2018-11-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebKit.AddAndRemoveDataDetectors hits a debug assertion after r238515
        https://bugs.webkit.org/show_bug.cgi?id=191996

        Reviewed by Tim Horton.

        This assertion is hit because `decode(Decoder& decoder, NSArray<Class> *allowedClasses)` expects the decoded
        object (of class `_NSArrayM`) to be equal to `NSArray.class`.

        We fix the crash by relaxing the debug assertion when decoding securely-codable objects over IPC. Instead of
        checking that the class of the decoded object is equal to one of the allowed classes, check that the object is a
        kind of any of the allowed classes.

        * Shared/Cocoa/ArgumentCodersCocoa.h:
        (IPC::isObjectClassAllowed):
        (IPC::decode):

2018-11-27  Tomas Popela  <tpopela@redhat.com>

        [GTK][WPE] Remove temporary workaround in Source/WebKit/Platform*.cmake
        https://bugs.webkit.org/show_bug.cgi?id=192008

        Reviewed by Michael Catanzaro.

        Looks like it's not needed anymore as the code compiles fine without
        it.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2018-11-27  Antti Koivisto  <antti@apple.com>

        Factor mask layer applying in RemoteLayerTreePropertyApplier into a shared function
        https://bugs.webkit.org/show_bug.cgi?id=192001

        Reviewed by Tim Horton.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::updateMask):

        Shared function, with some special tricks for iOS backdrop layers.

        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):

2018-11-27  Antti Koivisto  <antti@apple.com>

        Stop collecting related layers in RemoteLayerTreeHost::updateLayerTree
        https://bugs.webkit.org/show_bug.cgi?id=192003

        Reviewed by Tim Horton.

        We can pass the node hash directly to RemoteLayerTreePropertyApplier. The collection step doesn't seem
        to add anything except an extra hash lookup.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):

        Pass m_nodes directly.
        Some random cleanups.

2018-11-27  Antti Koivisto  <antti@apple.com>

        Remote tile layers shouldn't be UIViews
        https://bugs.webkit.org/show_bug.cgi?id=191953

        Reviewed by Tim Horton.

        They don't need any UIView functionality, nor do they ever have UIView descendants.
        We can use lighter weight objects.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::updateChildren):

        Factor to a function shared between platforms.
        Support having both views and plain layers in the same tree.
        Assert that all siblings are of the same type and that we don't attempt to add views to layers.

        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

        Use new plain layer on Mac too.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (-[WKPlainRemoteLayer description]):

        Add a CALayer subclass so we can have a description, similar to WKCompositingView and pals.

        (WebKit::RemoteLayerTreeNode::createWithPlainLayer):
        (WebKit::RemoteLayerTreeNode::detachFromParent):

        Support having null view.

        (WebKit::RemoteLayerTreeNode::appendLayerDescription):

        Helper for layer descriptions.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

        Construct plain layers for tiles.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKCompositingView description]):
        (-[WKUIRemoteView description]):
        (-[WKBackdropView description]):

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

        Remove "using namespace WebCore" under Source/WebKit/WebProcess/InjectedBundle/API
        https://bugs.webkit.org/show_bug.cgi?id=191995

        Reviewed by Alex Christensen.

        The statement "using namespace WebCore" should be placed inside
        namespace WebKit for unified source builds. But, source files
        defining WebKit API can't be enclosed by namespace WebKit { }
        becuase they are defined in the global scope.

        "using namespace WebCore" in global scope and unified source
        builds may cause build breaks (Bug 191853).

        Remove "using namespace WebCore" in the global scope. Use
        "WebCore::" prefix instead.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleClearAllDatabases):
        (WKBundleSetDatabaseQuota):
        (WKBundleClearResourceLoadStatistics):
        (WKBundleResourceLoadStatisticsNotifyObserver):
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameGetFrameLoadState):
        (WKBundleFrameClearOpener):
        (WKBundleFrameCallShouldCloseOnWebView):
        (WKBundleFrameCopySecurityOrigin):
        (WKBundleFrameFocus):
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] No way for clients to tell whether the content view is in the responder chain when the web view is
        https://bugs.webkit.org/show_bug.cgi?id=169212
        <rdar://problem/30899656>

        Reviewed by Tim Horton.

        Add an SPI hook to allow internal WKWebView clients to determine whether the WKWebView's content view is the
        first responder. Intended for use by clients, such as Mail, that embed native text input views and other views
        that may become first responder within the view hierarchy of the WKWebView.

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

2018-11-26  Tim Horton  <timothy_horton@apple.com>

        Insert <attachment> elements under editable images to make their backing data accessible
        https://bugs.webkit.org/show_bug.cgi?id=191844
        <rdar://problem/30900149>

        Reviewed by Simon Fraser.

        * DerivedSources.make:
        * SourcesCocoa.txt:
        * UIProcess/API/APIAttachment.h:
        fileWrapper() is no longer a trivial getter; it can now construct
        the file wrapper from a file wrapper generator if necessary.

        Add setFileWrapperGenerator() and invalidateGeneratedFileWrapper().

        Make m_fileWrapper mutable so it can be adjusted inside its own getter.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::fileWrapper const):
        If we have a fileWrapperGenerator and don't have a cached file wrapper,
        create one before returning it.

        (API::Attachment::invalidateGeneratedFileWrapper):
        Invalidate the currently-cached file wrapper. The next time a client
        requests the file wrapper it will be regenerated.

        (API::Attachment::fileName const):
        (API::Attachment::fileSizeForDisplay const):
        (API::Attachment::enclosingImageData const):
        (API::Attachment::isEmpty const):
        (API::Attachment::createSerializedRepresentation const):
        Make use of fileWrapper() instead of m_fileWrapper directly, to ensure
        that it is created lazily if necessary.

        (API::Attachment::setFileWrapperGenerator):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKEmbeddedView initWithEmbeddedViewID:]):
        Defer to EditableImageController for creating WKDrawingViews for
        editable images. This is done primarily so we don't have to pollute
        Remote Layer Tree and DrawingArea interfaces with editable-image-specific messages.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_editableImageController):
        (WebKit::m_resetRecentCrashCountTimer): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::editableImageController):
        Keep an EditableImageController on the WebPageProxy.

        * UIProcess/ios/EditableImageController.h: Added.
        * UIProcess/ios/EditableImageController.messages.in: Added.
        * UIProcess/ios/EditableImageController.mm: Added.
        (WebKit::EditableImageController::EditableImageController):
        (WebKit::EditableImageController::~EditableImageController):
        (WebKit::EditableImageController::ensureEditableImage):
        (WebKit::EditableImageController::editableImage):
        (WebKit::EditableImageController::didCreateEditableImage):
        (WebKit::EditableImageController::didDestroyEditableImage):
        (WebKit::EditableImageController::associateWithAttachment):
        (WebKit::EditableImageController::invalidateAttachmentForEditableImage):
        Add EditableImageController, which keeps track of EditableImages.
        It can be messaged directly to create or destroy the UI-side state
        of an editable image, and also to associate a WKDrawingView with
        a particular attachment.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Store the WebPageProxy (weakly) so that we can get to the EditableImageController.

        (-[WKDrawingView layoutSubviews]):
        (-[WKDrawingView PNGRepresentation]):
        Synchronously render the PKCanvasView to PNG.

        (-[WKDrawingView drawingDidChange:]):
        If the drawing changes, inform the APIAttachment that it needs
        to discard its NSFileWrapper; a new one will be generated lazily.

        (-[WKDrawingView init]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::associateEditableImageWithAttachment):
        (WebKit::WebChromeClient::didCreateEditableImage):
        (WebKit::WebChromeClient::didDestroyEditableImage):

2018-11-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Add an asyncronous reply request to VideoFullscreenManager.

        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID):
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID):

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

        Rename WKWebView._safeBrowsingWarningForTesting to _safeBrowsingWarning to use it for more than testing
        https://bugs.webkit.org/show_bug.cgi?id=191981

        Reviewed by Tim Horton.

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

2018-11-26  Daniel Bates  <dabates@apple.com>

        REGRESSION (r237738): Command Down Arrow doesn't scroll to the end of a page anymore
        https://bugs.webkit.org/show_bug.cgi?id=191967
        <rdar://problem/45976390>

        Reviewed by Tim Horton.

        Fixes an issue where pressing Command + Down Arrow does not scroll the view to the end of the page.

        Following r237738 the value of the enumerations used to identify modifier keys (e.g. Shift) changed
        to match the values of the corresponding enumerations in GraphicsServices, which are the
        enumerations UIKit uses to computes the modifier flags bitmask when instantiating a WebEvent to
        pass to WebKit. Before r237738 WebKit was using enumerations whose values matched the values
        of the corresponding UIKit public API UIKeyModifier* enumerations. For non-content editable elements,
        WebKit intercepts UIKit events in -_handleKeyUIEvent, synthesizes and dispatches its own WebEvent.
        However it was creating WebEvents with a modifier flags bitmask built from the UIKeyModifier* enumerations,
        -_modifierFlags, as opposed to a bitmask from the GraphicsServices enumerations, -_gsModifierFlags.
        Instead WebKit should call -_gsModifierFlags to compute the GraphicsServices-compatible modifier
        flags bitmask when instantiating a WebEvent.

        * Platform/spi/ios/UIKitSPI.h: Expose -_gsModifierFlags and remove -_modifierFlags.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Remove unnecessary code to update the current modifier state.
        This will be done by the WebProcess when it receives the keyboard event.
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]): Do not pass modifier flags changed events
        to the scrolling animator as it does not know how to handle these kinds of events and triggers an
        assertion failure when it tries to read the input string from the event (calls -charactersIgnoringModifiers).
        FlagsChanged WebEvents events do not have an input string just like a FlagsChanged NSEvent that
        they model on Mac.
        * UIProcess/ios/WKWebEvent.mm:
        (-[WKWebEvent initWithEvent:]): Pass the value of -_gsModifierFlags for the modifier flags bitmask
        instead of the value of -_modifierFlags.

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

        [PSON] process pre-warming should not be on for everyone
        https://bugs.webkit.org/show_bug.cgi?id=191966
        <rdar://problem/46138499>

        Reviewed by Ryosuke Niwa.

        If automatic process-prewarming is not explicitly turned on/off by the client, then we now only
        turn it on automatically after the first process swap. Previously, it was always enabled if
        process-swap on cross-site navigation was enabled (which is the case by default for all apps).

        This is important because some apps do not actually browse (only display static content) or never
        browse cross-site, and thus would not benefit from process prewarming and yet pay a memory cost.

        * UIProcess/API/APIProcessPoolConfiguration.h:
        Add m_clientWouldBenefitFromAutomaticProcessPrewarming flag which is false by default and is used
        as a fallback if the client did not call setIsAutomaticProcessWarmingEnabled().

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationPrewarmsProcessesAutomatically):
        (WKContextConfigurationSetPrewarmsProcessesAutomatically):
        Add C API to toggle automatic process prewarming. It is needed for Safari to turn on this feature
        by default for browsing. This way Safari does not have to wait for the first process swap to
        start prewarming.

        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        Only do automatic process prewarming if process-swap on cross-site navigation is also enabled.
        This is needed for clients like Safari that explicitly enable automatic process prewarming but
        only want to have it enabled if PSON is also enabled via experimental features.

        (WebKit::WebProcessPool::processForNavigation):
        On first process swap, if the client did not explicitly turn on or off automatic process prewarming
        then we enable it then. This avoids paying the cost of process prewarming in apps that would not
        benefit from it.

2018-11-26  Andy Estes  <aestes@apple.com>

        [Cocoa] Make it easier to encode NSObjects
        https://bugs.webkit.org/show_bug.cgi?id=191948

        Reviewed by Dean Jackson.

        It should be easier to encode objects that conform to NSSecureCoding for WebKit IPC. Right
        now, several argument coders duplicate the logic for encoding and decoding objects using
        NSKeyedArchiver and NSKeyedUnarchiver.

        This patch adds encodeObject() and decodeObject() primitives for encoding and decoding using
        Foundation keyed archiving. It then partially specializes ArgumentCoder for raw pointers and
        RetainPtrs whose pointee conforms to NSSecureCoding to call these new primitives.

        This allows us to use Encoder::operator<< to encode raw pointers or RetainPtrs and use
        Decoder::operator>> to decode to an optional RetainPtr. By default, IPC::decode infers the
        allowed class for decoding by calling `[T class]`. We can also specify the allowed classes
        explicitly for containers and classes that are loaded at runtime.

        * Shared/Cocoa/ArgumentCodersCocoa.h: Added.
        * Shared/Cocoa/ArgumentCodersCocoa.mm: Added.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Removed custom encoding code and used ArgumentCodersCocoa instead.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::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.
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode): Ditto.
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::description const): Added some needed namespaces due to unified source shuffling.
        * Shared/WebCoreArgumentCoders.h: Modernized several decoders.
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const): Removed custom encoding code and used ArgumentCodersCocoa instead.
        (WebKit::InteractionInformationAtPosition::decode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<WebCore::ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        (IPC::deviceContextKey): Deleted.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * SourcesCocoa.txt: Added ArgumentCodersCocoa.mm.
        * WebKit.xcodeproj/project.pbxproj: Ditto.

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        CompletionHandler-based async IPC messages only work when the completion handler takes a single argument
        https://bugs.webkit.org/show_bug.cgi?id=191965

        Reviewed by Tim Horton.

        Teach `messages.py` to handle the case where an async IPC completion handler takes no arguments, or takes more
        than a single argument. Currently, the generated code attempts to wrap all arguments in a `WTFMove(*~)`, but
        this either results in `WTFMove(*)` in the case where there are no arguments, or `WTFMove(*foo, *bar, *baz)` in
        the case where there are several arguments. Both of these results fail to compile.

        Instead, emit `completionHandler()` when there are no arguments, and
        `completionHandler(WTFMove(*foo), WTFMove(*bar), WTFMove(*baz))` when there are multiple arguments.

        Tests:  TestAsyncMessageWithNoArguments
                TestAsyncMessageWithMultipleArguments

        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestAsyncMessageWithNoArguments::callReply):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::cancelReply):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::send):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::callReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::cancelReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::send):
        (WebKit::WebPage::didReceiveMessage):
        * Scripts/webkit/MessagesSuperclass-expected.h:
        (Messages::WebPage::TestAsyncMessageWithNoArguments::receiverName):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::name):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::arguments const):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::receiverName):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::name):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::arguments const):
        * Scripts/webkit/messages.py:
        * Scripts/webkit/messages_unittest.py:

        Add new `messages.py` unit tests to cover these cases.

        * Scripts/webkit/test-superclass-messages.in:

2018-11-26  Jeremy Jones  <jeremyj@apple.com>

        Use Full Screen consistently in localizable strings.
        https://bugs.webkit.org/show_bug.cgi?id=190363
        rdar://problem/43882333

        Reviewed by Jon Lee.

        Rename "Fullscreen" to "Full Screen" in localizable strings for consistency.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController _showPhishingAlert]):

2018-11-26  Daniel Bates  <dabates@apple.com>

        Wire up ChromeClient::takeFocus() on iOS
        https://bugs.webkit.org/show_bug.cgi?id=191763
        <rdar://problem/18584508>

        Reviewed by Dan Bernstein.

        Expose existing Mac SPI for use on iOS. This will allow Safari to be notified when
        the engine has cycled through all the tab focusable elements on the page.

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

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the internal 32-bit macOS 10.13 build after r238471

        r238471 added an `#include WebPageMessages.h` in `WebPage.h`, which causes the 32-bit macOS build using an
        internal macOS SDK ≤ 10.13 to fail. To address this, move the `#include` back under `PLATFORM(IOS_FAMILY)` by
        changing the parameters of `WebPage::removeDataDetectedLinks` and `WebPage::detectDataInAllFrames` to completion
        handlers rather than async IPC replies.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::removeDataDetectedLinks):
        (WebKit::WebPage::detectDataInAllFrames):
        * WebProcess/WebPage/WebPage.h:

2018-11-26  Antti Koivisto  <antti@apple.com>

        Clean up layer tree freezing logic in WebPage
        https://bugs.webkit.org/show_bug.cgi?id=191826

        Reviewed by Dean Jackson.

        Use OptionSet<LayerTreeFreezeReason> to track various reasons that can cause layer tree to get frozen.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::freezeLayerTree):
        (WebKit::WebPage::unfreezeLayerTree):
        (WebKit::WebPage::updateDrawingAreaLayerTreeFreezeState):

        Layer tree is unfrozen when there there are no reasons to freeze it.

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::endPrinting):
        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::setLayerTreeStateIsFrozen): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::applicationDidEnterBackground):
        (WebKit::WebPage::applicationWillEnterForeground):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::freezeAllLayerTrees):
        (WebKit::WebProcess::unfreezeAllLayerTrees):
        (WebKit::WebProcess::processDidResume):
        (WebKit::WebProcess::setAllLayerTreeStatesFrozen): Deleted.
        * WebProcess/WebProcess.h:

2018-11-25  Antti Koivisto  <antti@apple.com>

        RemoteLayerTreeNode construction cleanups
        https://bugs.webkit.org/show_bug.cgi?id=191951

        Reviewed by Tim Horton.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):

            Drop unused LayerProperties argument.

        (WebKit::RemoteLayerTreeHost::createLayer):

            Split the actual construction out to makeNode.
            Map updating is shared between platforms.
            Move setting of layerID and clearing default actions to RemoteLayerTreeNode.

        (WebKit::RemoteLayerTreeHost::makeNode):

            Returns RemoteLayerTreeNode.

        (WebKit::RemoteLayerTreeHost::setLayerID): Deleted.
        (WebKit::RemoteLayerTreeHost::layerID): Deleted.

            Move to RemoteLayerTreeNode.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::setLayerID):
        (WebKit::RemoteLayerTreeNode::layerID):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        (WebKit::RemoteLayerTreeHost::createLayer): Deleted.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKCompositingView description]):
        (-[WKUIRemoteView description]):
        (-[WKBackdropView description]):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::addAnimationToLayer):

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Make it possible to insert editable images with a gesture
        https://bugs.webkit.org/show_bug.cgi?id=191937

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _stylusTapGestureShouldCreateEditableImage]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        Add a internal getter for a WKWebViewConfiguration property.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):
        Add a undo name.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        Add a single-stylus-tap gesture recognizer.

        (-[WKContentView _stylusSingleTapRecognized:]):
        If allowed, request to insert an editable image when a stylus tap occurs.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleStylusSingleTapAtPoint):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleStylusSingleTapAtPoint):
        Do a hit test, select the hit position, insert an editable image, and
        then de-assist any assisted node (to make the keyboard go away).
        For now, we'll only insert if we hit non-replaced elements,
        though this heuristic will need to be enhanced significantly once we
        decide on a design.

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Scrolling and drawing compete for incoming gestures
        https://bugs.webkit.org/show_bug.cgi?id=191940

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/PencilKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Make scrolling and drawing mutually exclusive if editable images
        are enabled.

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Fix a few localizable string descriptions in WebEditCommandProxy.cpp and WebEditorClient.mm
        https://bugs.webkit.org/show_bug.cgi?id=191945

        Reviewed by Anders Carlsson.

        Replace some a couple of command undo action name descriptions with "Undo action name", to match all other
        edit commands.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add WKWebView SPI to trigger and remove data detection
        https://bugs.webkit.org/show_bug.cgi?id=191918
        <rdar://problem/36185051>

        Reviewed by Tim Horton.

        Adds support for two new WKWebView SPI methods, `-_detectDataWithTypes:completionHandler:` and
        `-_removeAllDataDetectedLinks:`, to allow internal WebKit clients to run data detection and add links to data
        detected content, or remove all data detected links from the document.

        Test: WebKit.AddAndRemoveDataDetectors

        * Shared/Cocoa/DataDetectionResult.h:
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::decode):

        Modernize DataDetectionResult's IPC decoding, so that it can be used with reply-based async IPC.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _removeDataDetectedLinks:]):
        (-[WKWebView _detectDataWithTypes:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::detectDataInAllFrames):
        (WebKit::WebPageProxy::removeDataDetectedLinks):

        Add or remove data detected links from each frame in the page, and then propagate the new data detector
        results of the main frame to the UI process (this matches current behavior, where the results of -[WKWebView
        _dataDetectionResults] only reflects data detection results in the main frame of the page).

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

2018-11-24  Andy Estes  <aestes@apple.com>

        [Cocoa] SOFT_LINK_CLASS_FOR_{HEADER,SOURCE} should generate a more concise getter function
        https://bugs.webkit.org/show_bug.cgi?id=191899

        Reviewed by Dean Jackson.

        * Shared/cocoa/WebCoreArgumentCodersCocoa.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:

2018-11-23  Antti Koivisto  <antti@apple.com>

        Replace LayerOrView typedef with a class
        https://bugs.webkit.org/show_bug.cgi?id=191927

        Reviewed by Tim Horton.

        This typedef restricts remote layer representation to be either a CA layer or a view. We might want
        have more flexibility, for example tiles don't really need to be UIViews. It will also make it easier
        to unify Mac and iOS code, and hopefully make it less confusing too.

        This patch introduces RemoteLayerTreeNode class that replaces most uses of LayerOrView typedef
        (the rest are converted to pure CALayer). It also does a bunch of related cleanup.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):
        (WebKit::applyPropertiesToLayer): Deleted.
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _propertiesOfLayerWithID:]):
        * UIProcess/Cocoa/LayerRepresentation.h: Removed.
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
        * UIProcess/PageClient.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::layerWithIDForTesting const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        (WebKit::RemoteLayerTreeHost::rootNode const):
        (WebKit::RemoteLayerTreeHost::rootLayer const): Deleted.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::nodeForID const):
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::animationDidStart):
        (WebKit::RemoteLayerTreeHost::animationDidEnd):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::layerWithIDForTesting const):
        (WebKit::RemoteLayerTreeHost::layerForID const):
        (WebKit::RemoteLayerTreeHost::rootLayer const):
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::detachRootLayer):
        (WebKit::RemoteLayerTreeHost::mapAllIOSurfaceBackingStore):
        (WebKit::RemoteLayerTreeHost::getLayer const): Deleted.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: Added.
        (WebKit::RemoteLayerTreeNode::layer const):
        (WebKit::RemoteLayerTreeNode::uiView const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: Added.
        (WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::detachFromParent):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.mm:
        (WebKit::RemoteLayerTreeScrollingPerformanceData::blankPixelCount const):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        (WebKit::layerRepresentationFromLayerOrView): Deleted.
        * UIProcess/WebAuthentication/Cocoa/HidService.h:
        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/LayerRepresentation.mm: Removed.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::setRemoteLayerTreeRootNode):
        (WebKit::PageClientImpl::acceleratedCompositingRootLayer const):
        (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setRemoteLayerTreeRootNode):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setRemoteLayerTreeRootNode):
        (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setRemoteLayerTreeRootNode):
        (WebKit::WebPageProxy::acceleratedCompositingRootLayer const):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::recursiveBuildTransaction):

2018-11-23  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Enable Web Authentication as an experimental feature for macOS
        https://bugs.webkit.org/show_bug.cgi?id=191932
        rdar://problem/46225210

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:

2018-11-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable drag and drop support for iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=191818
        <rdar://problem/43907454>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultCustomPasteboardDataEnabled):

        Enable custom pasteboard data by default on iOSMac. While writing and reading custom pasteboard data is
        currently broken in iOSMac due to the lack of `teamData` and `preferredPresentationStyle`, opting into custom
        pasteboard data at least allows us to avoid writing unsanitized data types to the pasteboard.

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

        Fix a regression from <https://trac.webkit.org/r236619> wherein the web process crashes when attempting to edit
        a text field. This happens because the call to `-[UIKeyboard isInHardwareKeyboardMode]` on the iOSMac platform
        attempts to initialize a `UHASWorkspace` from the web process, which then attempts to connect to the UIKit host
        application. Instead, we can skip this call altogether on iOSMac, where the platform never considers a hardware
        keyboard to be "connected", even when typing.

2018-11-23  Antti Koivisto  <antti@apple.com>

        UI side compositing doesn't paint on Mac
        https://bugs.webkit.org/show_bug.cgi?id=191908

        Reviewed by Tim Horton.

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::bytesPerPixel const):
        (WebKit::RemoteLayerBackingStore::surfaceBufferFormat const):

        These deep color formats are not supported on Mac.

2018-11-22  Chris Dumez  <cdumez@apple.com>

        Regression(r238353) Load sometimes hangs when navigating back after a cross-site navigation
        https://bugs.webkit.org/show_bug.cgi?id=191914

        Reviewed by Ryosuke Niwa.

        When process-swapping on a cross-site server-side redirect, we end up doing a decidePolicyForNavigationResponse
        policy check for the about:blank suspension load. This policy decision is ignored by the UIProcess because
        SuspendedPageProxy does not handle this particular IPC message. To handle the issue, make sure the WebProcess
        never sends a DecidePolicyForNavigationResponse IPC to the UIProcess for about:blank suspension loads and let
        the load proceed.

        The issue was already there before r238353 but it was made obvious by r238353 which caused a hang when trying
        to reuse a Suspended page which is hanging while trying to suspend.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

2018-11-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] clang emits a warning when building WebKit after r238293
        https://bugs.webkit.org/show_bug.cgi?id=191917

        Reviewed by Dan Bernstein.

        Move the implementations of -setSafeBrowsingEnabled: and -isSafeBrowsingEnabled to the main implementation of
        WKPreferences to fix the warning.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences setSafeBrowsingEnabled:]):
        (-[WKPreferences isSafeBrowsingEnabled]):

2018-11-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Address post-review feedback after r238438
        https://bugs.webkit.org/show_bug.cgi?id=191913

        Reviewed by Ryosuke Niwa.

        Replace boolean arguments to setSelectedRange, replaceSelectionWithText and replaceSelectionWithFragment with
        enum flags, and tweak a couple of functions to take `const Vector&` instead of `Vector&&`.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageReplaceStringMatches):
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::replaceMatches):
        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::replaceStringMatchesFromInjectedBundle):
        (WebKit::WebPage::replaceMatches):
        (WebKit::WebPage::replaceSelectionWithText):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::WebPage::selectWithTwoTouches):
        (WebKit::WebPage::extendSelection):
        (WebKit::WebPage::selectWordBackward):
        (WebKit::WebPage::moveSelectionByOffset):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):
        (WebKit::WebPage::replaceSelectedText):
        (WebKit::WebPage::replaceDictatedText):
        (WebKit::WebPage::syncApplyAutocorrection):

2018-11-22  Mark Lam  <mark.lam@apple.com>

        Rollout r238432: Breaks internal Mac builds.
        https://bugs.webkit.org/show_bug.cgi?id=191909
        <rdar://problem/46214163>

        Unreviewed. Rolling out r238432: Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp

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

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

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

        * gtk/NEWS: Add release notes for 2.23.1.

2018-11-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WebKit2] Add support for replacing find-in-page text matches
        https://bugs.webkit.org/show_bug.cgi?id=191786
        <rdar://problem/45813871>

        Reviewed by Ryosuke Niwa.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView replaceMatches:withString:inSelectionOnly:resultCollector:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::replaceMatches):
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/WKTextFinderClient.mm:
        (-[WKTextFinderClient replaceMatches:withString:inSelectionOnly:resultCollector:]):

        Implement this method to opt in to "Replace…" UI on macOS in the find bar. In this API, we're given a list of
        matches to replace. We propagate the indices of each match to the web process, where FindController maps them to
        corresponding replacement ranges. Currently, the given list of matches is only ever a list containing the first
        match, or a list containing all matches.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageFindStringMatches):
        (WKBundlePageReplaceStringMatches):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::replaceMatches):

        Map match indices to Ranges, and then call into WebCore::Page to do the heavy lifting (see WebCore ChangeLog for
        more details). Additionally add a hard find-and-replace limit here to prevent the web process from spinning
        indefinitely if there are an enormous number of find matches.

        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::findStringMatchesFromInjectedBundle):
        (WebKit::WebPage::replaceStringMatchesFromInjectedBundle):

        Add helpers to exercise find and replace in WebKit2.

        (WebKit::WebPage::replaceMatches):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-11-21  Andy Estes  <aestes@apple.com>

        [Cocoa] Create a soft-linking file for PassKit
        https://bugs.webkit.org/show_bug.cgi?id=191875
        <rdar://problem/46203215>

        Reviewed by Myles Maxfield.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.
        * SourcesCocoa.txt: Removed @no-unify from WebPaymentCoordinatorProxyIOS.mm and WebPaymentCoordinatorProxyMac.mm.
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: Ditto.
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: Ditto.
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: Included NSAttributedStringSPI.h.
        * UIProcess/mac/WebProcessProxyMac.mm: Included ProcessPrivilege.h.
        * WebKit.xcodeproj/project.pbxproj: Removed WebPaymentCoordinatorProxyIOS.mm and WebPaymentCoordinatorProxyMac.mm from the WebKit target.

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

        Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191853

        Reviewed by Michael Catanzaro.

        In r235845, I excluded InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp from unify source builds in order to
        work around a MSVC bug.

        Then, I commited a different workaround for the MSVC bug in
        r238386. Now, we can include InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp in unified source builds. Revert
        r235845.

        * Sources.txt: Removed @no-unify of InjectedBundleRangeHandle.cpp
        and InjectedBundleNodeHandle.cpp
        * WebKit.xcodeproj/project.pbxproj: Unchecked Target Membership
        not to be compiled by XCode.

2018-11-20  Jeff Miller  <jeffm@apple.com>

        Return nullptr immediately if the key doesn't exist in the HashMap.
        https://bugs.webkit.org/show_bug.cgi?id=191841

        Reviewed by Chris Dumez.

        * Shared/API/APIDictionary.h:

2018-11-20  Don Olmstead  <don.olmstead@sony.com>

        WebPasteboard should USE(LIBWPE)
        https://bugs.webkit.org/show_bug.cgi?id=191846

        Reviewed by Michael Catanzaro.

        Add USE(LIBWPE) for Pasteboard related functionality within WebKit.

        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2018-11-20  Don Olmstead  <don.olmstead@sony.com>

        [WPE] Fix some feature guards in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=191847

        Reviewed by Michael Catanzaro.

        Some feature guards are not present in these files.

        * UIProcess/API/wpe/PageClientImpl.cpp:
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-11-20  Antti Koivisto  <antti@apple.com>

        Avoid potential longer than expected layer flush delays
        https://bugs.webkit.org/show_bug.cgi?id=191833

        Reviewed by Dean Jackson.

        Layer flush throttling also stops style recalcs and layouts. Layouts schedule layer flushes. Especially
        on a slow network we can in principle end up in situation where layer flush timer fires but there is no
        flush scheduled and so nothing happens. However there is a pending style recalc or layout that would
        actually schedule a flush (in practice various things force style recalcs and this doesn't occur
        commonly).

        To avoid this we should flush unconditionally when the flush timer fires. This performs any pending
        style recalc and layout too. If there is nothing to do the flush will be cheap.

        PLT doesn't appear to hit cases affected by this patch and there shouldn't be any impact.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:

        Remove now unnecessary m_hasPendingFlush bit, simplifying the logic.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):

        Schedule unconditionally when unfreezing.

        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):

        Remove branch that starts the flush timer. It is not needed as either it was already running
        or immediate flush is already scheduled and will start the timer anyway.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired):

        Flush unconditionally.

2018-11-19  Don Olmstead  <don.olmstead@sony.com>

        Simplify platform check in WebEditorClient
        https://bugs.webkit.org/show_bug.cgi?id=191848

        Reviewed by Fujii Hironori.

        !PLATFORM(GTK) && !PLATFORM(COCOA) && !PLATFORM(WPE) can be better
        represented as PLATFORM(WIN).

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:

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

        Add SPI to disable JIT in a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=191822
        <rdar://problem/28119360>

        Reviewed by Geoffrey Garen.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _canUseJIT:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration enableJIT]):
        (-[_WKProcessPoolConfiguration setEnableJIT:]):
        * UIProcess/Launcher/ProcessLauncher.h:
        (WebKit::ProcessLauncher::Client::enableJIT const):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::canUseJIT):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::enableJIT const):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::processPool const):
        (WebKit::WebProcessProxy::processPool): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::canUseJIT):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for CertificateInfo.
        https://bugs.webkit.org/show_bug.cgi?id=191647

        Reviewed by Alex Christensen.

        Added API for CertificateInfo to create, fetch contents.

        Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp

        * PlatformWin.cmake:
        * Shared/API/c/curl/WKCertificateInfoCurl.cpp: Added.
        (WKCertificateInfoCreateWithCertficateChain):
        (WKCertificateInfoGetVerificationError):
        (WKCertificateInfoGetCertificateChainSize):
        (WKCertificateInfoCopyCertificateAtIndex):
        * Shared/API/c/curl/WKCertificateInfoCurl.h: Copied from Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp.
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-11-19  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) for WebKit events
        https://bugs.webkit.org/show_bug.cgi?id=191842

        Reviewed by Michael Catanzaro.

        Moves all WPE events to USE(LIBWPE) instead of PLATFORM(WPE). Updates
        filenames to LibWPE.

        * PlatformWPE.cmake:
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/NativeWebWheelEvent.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.h:
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        * Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebKeyboardEventWPE.cpp.
        * Shared/libwpe/NativeWebMouseEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebMouseEventWPE.cpp.
        * Shared/libwpe/NativeWebTouchEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebTouchEventWPE.cpp.
        * Shared/libwpe/NativeWebWheelEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebWheelEventWPE.cpp.
        * Shared/libwpe/WebEventFactory.cpp: Renamed from Source/WebKit/Shared/wpe/WebEventFactory.cpp.
        * Shared/libwpe/WebEventFactory.h: Renamed from Source/WebKit/Shared/wpe/WebEventFactory.h.
        * SourcesWPE.txt:

2018-11-19  David Quesada  <david_quesada@apple.com>

        EXC_BAD_ACCESS when invoking a DownloadProxy's destination decision handler after the download has been canceled
        https://bugs.webkit.org/show_bug.cgi?id=191762
        rdar://problem/46151509

        Reviewed by Dean Jackson.

        When the DownloadClient calls the decision handler with a destination path, check if
        m_processPool is null before trying to access its network process. This can happen
        if a download is canceled before the client decides its destination.

        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):

2018-11-19  Tomoki Imai  <Tomoki.Imai@sony.com>

        [cairo] BackingStore::incorporateUpdate should use CompositeCopy to support drawsBackground=false in general Cairo ports
        https://bugs.webkit.org/show_bug.cgi?id=191577

        Reviewed by Carlos Garcia Campos.

        We should use CompositeCopy operator to update bitmap to overwrite existing bitmap even if source contains
        transparent parts. It enables ports which uses Cairo to set drawsBackground to false.
        GTK ports has custom background extension, and in such case, we need to use CompositeSourceOver to retain
        custom background.

        * UIProcess/cairo/BackingStoreCairo.cpp:
        (WebKit::BackingStore::incorporateUpdate): Use CompositeCopy operator to update bitmap.

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Reload Web Inspector" button no longer partially works
        https://bugs.webkit.org/show_bug.cgi?id=191773
        <rdar://problem/46139932>

        Reviewed by Devin Rousso.

        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::load):
        (WebKit::RemoteWebInspectorProxy::reopen):
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/RemoteWebInspectorProxy.messages.in:
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::reopen):
        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::reopen):
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::reopen):
        * WebProcess/WebPage/WebInspectorUI.h:

2018-11-19  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Solve some issues in the enumerateDevices code
        https://bugs.webkit.org/show_bug.cgi?id=191832

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp:
        Increase the version to 2.24.
        (webkitDeviceInfoPermissionRequestAllow):
        (webkitDeviceInfoPermissionRequestDeny):
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
        Replace the forward declaration with the include.
        * UIProcess/API/gtk/WebKitDeviceInfoPermissionRequest.h: Typo.
        * UIProcess/API/gtk/WebKitWebsiteData.h:
        Increase the version to 2.24.
        * UIProcess/API/wpe/WebKitDeviceInfoPermissionRequest.h: Typo.
        * UIProcess/API/wpe/WebKitWebsiteData.h:
        Increase the version to 2.24.

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

        Unreviewed. Fix GTK+ build after r238318.

        Add new symbols to API documentation files. They should have been added in r237031, but r238318 revealed it.

        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Regression(r238330): A lot of WebInspector tests are crashing on the bots
        https://bugs.webkit.org/show_bug.cgi?id=191814

        Reviewed by Ryosuke Niwa.

        Expose the expected connection type from the UIProcess into the WebProcess.
        When there is a local inspector connection to the UIProcess expose it as
        a local frontend channel to the inspector controllers in the Page.

        * UIProcess/WebPageInspectorTargetAgent.h:
        * UIProcess/WebPageInspectorTargetAgent.cpp:
        (WebKit::WebPageInspectorTargetAgent::frontendChannel):
        An additional FrontendChannel class is not needed, just use self.

        (WebKit::WebPageInspectorTargetAgent::WebPageInspectorTargetAgent):
        (WebKit::WebPageInspectorTargetAgent::connectionType const):
        (WebKit::WebPageInspectorTargetAgent::sendMessageToFrontend):
        Expose the channel to targets as local if there is a local frontend
        in the UIProcess.

2018-11-18  Joseph Pecoraro  <pecoraro@apple.com>

        Regression(r238330) ProcessSwap.WebInspector API test is a flaky crash in debug
        https://bugs.webkit.org/show_bug.cgi?id=191812

        Reviewed by Chris Dumez.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::setFrontendConnection):
        It can be possible to receive a frontend connection multiple times
        if another WebProcess opened the inspector and this WebProcess got
        swapped in before the InspectorProcess notified the WebProcess of
        a connection to use. It is always best to use the latest connection
        we have received, since any others would have been invalidated.

2018-11-18  Chris Dumez  <cdumez@apple.com>

        [PSON] Received an invalid message "WebPageProxy.DidPerformClientRedirect" from the web process
        https://bugs.webkit.org/show_bug.cgi?id=191828

        Reviewed by Antti Koivisto.

        WebPageProxy::didPerformClientRedirect() had a MESSAGE_CHECK_URL() for both the source
        and the destination URL. The macro calls WebProcessProxy::checkURLReceivedFromWebProcess()
        to make sure that both URLs were actually loaded by this WebContent process.

        However, now that we're enabled process-swap on cross-site navigation, these checks are no
        longer fully valid. If the client-side redirect is cross-site, then the source and destination
        URLs get loaded by 2 different WebContent processes. Since didPerformClientRedirect() gets
        called after the redirect and gets set by the new WebContent process, only the destination URL
        is guaranteed to have been loaded by this process. The source URL may have been loaded in
        another process so this patch drops the message check for the source URL.

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

2018-11-18  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Box<BinarySemaphore> instead of dispatch_semaphore_t
        https://bugs.webkit.org/show_bug.cgi?id=189691

        Reviewed by Ryosuke Niwa.

        Use Box<BinarySemaphore> instead, which utilizes our WTF::Lock mechanism.

        * NetworkProcess/watchos/NetworkProximityManager.mm:
        (WebKit::NetworkProximityManager::updateRecommendation):

2018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
        https://bugs.webkit.org/show_bug.cgi?id=191819

        Reviewed by Dan Bernstein.

        Replace UIItemProvider (and related classes) with NSItemProvider.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView dropInteraction:performDrop:]):

2018-11-17  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed WinCairo build fix for r238353.

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

2018-11-17  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: m_messageReceivers.contains(...) under ViewGestureController removeMessageReceiver
        https://bugs.webkit.org/show_bug.cgi?id=191734
        <rdar://problem/46151497>

        Reviewed by Ryosuke Niwa.

        When a WebProcess crashes, we destroy the ViewGestureController and reconstruct it later
        after we've relaunched a new WebProcess. The ViewGestureController controller takes care
        of adding itself as an IPC message receiver to the WebProcessProxy, and the destructor
        takes care of removing itself as an IPC message receiver.

        However, when process-swapping on navigation, we do not destroy the ViewGestureController
        because doing so would take down the swipe gesture snapshot on cross-site swipe navigation.
        This led to hitting this assertion later on because the ViewGestureController is still
        registered as an IPC message receiver with the old process after process swapping.

        To address the issue, we now make sure the ViewGestureController unregisters itself from
        the old process and registers itself with the new process on process-swap.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::ViewGestureController::disconnectFromProcess):
        (WebKit::ViewGestureController::connectToProcess):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::processWillSwap):
        (WebKit::WebViewImpl::didRelaunchProcess):

2018-11-17  Chris Dumez  <cdumez@apple.com>

        [PSON] ASSERTION FAILED: m_uncommittedState.state == State::Committed
        https://bugs.webkit.org/show_bug.cgi?id=191781

        Reviewed by Ryosuke Niwa.

        The crash was happening when switching to a suspended page that is not yet done
        suspending (e.g. in case of very fast back/forward navigation). The WebPageProxy
        would reattach to the suspended process and get load notifications that it did
        not expect since it did not schedule any load yet. Those notifications are for
        the about:blank load we do for page suspension.

        To address the issue, make swapToWebProcess() asynchronous and take a completion
        handler. When we try to unsuspend a SuspendedPageProxy, we first make sure it
        is actually done suspending. If it is not done suspending, we wait until it is
        before telling in to unsuspend and proceeding with the new load.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-11-17  Chris Dumez  <cdumez@apple.com>

        Unreviewed follow-up to r238343 to address debug assertions in 2 API tests.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashed):

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

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

        Reviewed by Joseph Pecoraro.

        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::showCertificate): Added.
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyWPE.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * WebProcess/WebPage/WebInspectorUI.h:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::showCertificate): Added.

        * UIProcess/RemoteWebInspectorProxy.messages.in:
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::showCertificate): Added.
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::showCertificate): Added.

        * NetworkProcess/cache/NetworkCacheCoders.h:
        * NetworkProcess/cache/NetworkCacheCodersCocoa.cpp: Removed.
        * NetworkProcess/cache/NetworkCacheCodersCurl.cpp: Removed.
        * NetworkProcess/cache/NetworkCacheCodersSoup.cpp: Removed.
        Moved `WebCore::CertificateInfo` code for `WTF::Encoder` and `WTF::Decoder` into their
        respective platform's CertificateInfo.h file.

        * UIProcess/Authentication/mac/WebCredentialMac.mm:

        * Configurations/WebKit.xcconfig:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Regression(ProcessPrewarming) Assertion hit in NetworkProcessProxy destructor
        https://bugs.webkit.org/show_bug.cgi?id=191800

        Reviewed by Ryosuke Niwa.

        Make sure the NetworkProcessProxy destructor calls its remaining m_pendingConnectionReplies
        completion handlers to avoid hitting an assertion in the CompletionHandler destructor.

        Prewarmed WebProcess do not keep the ProcessPool alive and thus not the NetworkProcessProxy
        either. As a result, it is possible for NetworkProcessProxy to have pending connection
        requests from those prewarmed processes when it is destroyed. Similar story for the
        suspended page processes when they are destroyed.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::~NetworkProcessProxy):

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

        Tweak _showSafeBrowsingWarningWithTitle SPI
        https://bugs.webkit.org/show_bug.cgi?id=191799

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (+[WKWebView _visitUnsafeWebsiteSentinel]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        I need to localize "Continue" and "Cancel" so they aren't always in English.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        WKWebViewMacEditingTests.DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView API test is crashing in debug
        https://bugs.webkit.org/show_bug.cgi?id=191797

        Reviewed by Ryosuke Niwa.

        We were hitting the assertion because the error handler was first getting called. It would
        deallocate the send right, cancel/null out the XPC connection and call
        didFinishLaunchingProcess(0, IPC::Connection::Identifier()).

        Then the xpc_connection_send_message_with_reply() block would get called later and
        would try to deallocate the send right again, and call
        didFinishLaunchingProcess(0, IPC::Connection::Identifier()) again because the xpc
        connection is null.

        Handle this case by having the xpc_connection_send_message_with_reply() block check
        that we're still launching (i.e. didFinishLaunchingProcess() has not been called
        yet).

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

2018-11-16  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed follow-up to r238330.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        Don't clear the pointer after invalidating since the pointer is
        used later one. We don't mind it being used after invalidation
        it will do the right thing, we'd rather have the WebInspectorProxy
        lifetime match the WebPageProxy.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        ProcessSwap.NavigationWithLockedHistoryWithoutPSON API test is a flaky crash in debug
        https://bugs.webkit.org/show_bug.cgi?id=191795

        Reviewed by Alex Christensen.

        If the WebProcessPool is getting destroyed while there is a prewarmed WebContent process
        that is awaiting its connnection to the network process, then we'll hit the
        process->hasOneRef() assertion in the WebProcessPool destructor. This is because
        NetworkProcessProxy::m_pendingConnectionReplies keeps a RefPtr to the WebProcessProxy
        that is awaiting the connection. The NetworkProcessProxy does not really need to keep
        the WebProcessProxy alive in this case so this patch switches to using a WeakPtr instead.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessProxy.h:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        [macOS] Label "prewarmed" WebContent processes in Activity Monitor
        https://bugs.webkit.org/show_bug.cgi?id=191765
        <rdar://problem/45953463>

        Reviewed by Geoffrey Garen.

        Label "prewarmed" WebContent processes in Activity Monitor to facilitate debugging.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getLaunchOptions):
        (WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::markIsNoLongerPrewarmed):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::updateProcessName):
        (WebKit::WebProcess::platformInitializeProcess):

2018-11-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Local Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191740
        <rdar://problem/45470897>

        Reviewed by Timothy Hatcher.

        When a web page asks to open a local Web Inspector, that inspector
        will now connect in the UIProcess (WebPageProxy / WebPageInspectorController)
        instead of the WebContentProcess (WebKit::WebInspector / InspectorController).

        Previously a WebInspectorProxy was re-created every time the WebPageProxy's
        WebPage / WebProcess was changed, effectively closing the Web Inspector
        frontend when the WebPage was swapped or crashed.

        This change keeps the WebInspectorProxy alive as long as the WebPageProxy
        is alive. During process swaps, or process crashes, the WebInspectorProxy
        is reset when the page is reset and updated when the page's WebProcess
        changes. Since WebInspectorProxy owns the Web Inspector view / window
        the Web Inspector window can be kept alive across (and attached state)
        across WebPage / WebProcess changes.

        Previously the WebContentProcess's WebKit::WebInspector was the Local
        FrontendChannel for the WebCore::InspectorController. This can't
        outlive the single WebContentProcess.

        This change makes the UIProcesses' WebInspectorProxy the Local FrontendChannel
        for the WebKit::WebPageInspectorController. Given the WebInspectorProxy
        now stays alive alongside the WebPageProxy this will live across process changes.
        This means that the WebInspectorUI process must send its backend messages to
        the WebInspectorProxy -> WebPageInspectorController now instead of the
        old path WebInspector -> WebCore::InspectorController.

        A direct IPC connection is still maintained between the WebContentProcess's
        WebKit::WebInspector and the InspectorProcess's WebInspectorUI. Previously
        this connection was established by WebKit::WebInspector vending an
        IPC::Attachment to the WebInspectorUI process. This patch inverts that
        relationship, because the WebInspectorUI process now lives across multiple
        WebContentProcess changes. The WebInspectorUI now vends the IPC::Attachment
        to the WebContentProcess each time the process changes. This way they can both
        still communicate through normal Messages::WebInspector/WebInspectorUI
        messages and everything behaves as previously expected.

        * Scripts/webkit/messages.py:
        Header for Inspector::FrontendChannel::ConnectionType.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::openLocalFrontend):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openLocalInspectorFrontend):
        (WebKit::WebInspector::setFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        (WebKit::WebInspector::close):
        (WebKit::WebInspector::openFrontendConnection): Deleted.
        (WebKit::WebInspector::sendMessageToBackend): Deleted.
        (WebKit::WebInspector::sendMessageToFrontend): Deleted.
        On the WebProcess side we ask the UIProcess to open a local frontend and now
        receive instead of vend an IPC connection to the WebInspectorUI process.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::resetState):
        Keep the WebInspectorProxy alive alongside the WebPageProxy.
        Update it as processes / states change.

        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::openLocalInspectorFrontend):
        (WebKit::WebInspectorProxy::createInspectorPage): Deleted.
        (WebKit::WebInspectorProxy::sendMessageToFrontend):
        (WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
        Open and close a local frontend by being the FrontendChannel on the UIProcess side.

        (WebKit::WebInspectorProxy::sendMessageToBackend):
        Dispatch WebInspectorUI backend messages to the UIProcess's InspectorController
        now that the InspectorController is here instead of in the WebProcess.

        (WebKit::WebInspectorProxy::setFrontendConnection):
        Transfer the WebProcess <-> InspectorProcess IPC connection through us
        because we are the one link between them when processes change.

        (WebKit::WebInspectorProxy::invalidate):
        (WebKit::WebInspectorProxy::frontendLoaded):
        Be safer and handle inspectedPage being potentially null.

        * WebProcess/WebPage/WebPageInspectorTargetController.cpp:
        (WebKit::WebPageInspectorTargetController::connectInspector):
        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:
        (WebKit::WebPageInspectorTargetFrontendChannel::create):
        (WebKit::WebPageInspectorTargetFrontendChannel::WebPageInspectorTargetFrontendChannel):
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.h:
        * UIProcess/InspectorTargetProxy.cpp:
        (WebKit::InspectorTargetProxy::connect):
        Proxy the ConnectionType received on the UIProcess side to the WebProcess side
        when connecting to sub-targets.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::connectInspector):
        (WebKit::WebPage::setHasLocalInspectorFrontend): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::hasLocalInspectorFrontend const): Deleted.
        (WebKit::WebPageProxy::setHasLocalInspectorFrontend): Deleted.
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        Eliminate the hasLocalInspectorFrontend state that was only used
        to disable PSON. PSON no longer needs to be disabled for this reason.

        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::establishConnection):
        (WebKit::WebInspectorUI::updateConnection):
        (WebKit::WebInspectorUI::closeWindow):
        (WebKit::WebInspectorUI::sendMessageToBackend):
        * WebProcess/WebPage/WebInspectorUI.h:
        * WebProcess/WebPage/WebInspectorUI.messages.in:
        Vend an IPC connection on demand to the WebProcess side.

2018-11-16  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][WPE] Add "WebKitDeviceInfoPermissionRequest.h" into webkit2.h
        https://bugs.webkit.org/show_bug.cgi?id=191744
        <rdar://problem/46125461>

        Unreviewed, install the file.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2018-11-16  Zalan Bujtas  <zalan@apple.com>

        Add DidFirstMeaningfulPaint milestone.
        https://bugs.webkit.org/show_bug.cgi?id=191754

        Reviewed by Simon Fraser.

        * Shared/API/c/WKPageLoadTypes.h:
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toWKLayoutMilestones):
        (WebKit::toLayoutMilestones):
        * UIProcess/API/C/WKPageRenderingProgressEvents.h:
        * UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
        (pageRenderingProgressEvents):

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Automatic process prewarming should be turned on if PSON is enabled via experimental features
        https://bugs.webkit.org/show_bug.cgi?id=191761

        Reviewed by Ryosuke Niwa.

        m_isAutomaticProcessWarmingEnabledByClient is a std::optional and should not be initialized to
        true / false until the client calls API to toggle the feature. When m_isAutomaticProcessWarmingEnabledByClient
        is std::nullopt then m_processSwapsOnNavigationFromExperimentalFeatures controls automatic
        process prewarming.

        * UIProcess/API/APIProcessPoolConfiguration.h:

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

        Add API to disable safe browsing checks
        https://bugs.webkit.org/show_bug.cgi?id=191610

        Reviewed by Dean Jackson.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences setSafeBrowsingEnabled:]):
        (-[WKPreferences isSafeBrowsingEnabled]):
        (-[WKPreferences _setSafeBrowsingEnabled:]): Deleted.
        (-[WKPreferences _safeBrowsingEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        WebKit.UnavailablePlugIn API test is crashing in debug
        https://bugs.webkit.org/show_bug.cgi?id=191753

        Reviewed by Alex Christensen.

        Add missing early returns. Those were mistakenly dropped in r235200.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):

2018-11-16  Chris Dumez  <cdumez@apple.com>

        [Mac] Regression: WebContent process's display name is no longer set
        https://bugs.webkit.org/show_bug.cgi?id=191722
        <rdar://problem/45960550>

        Reviewed by Per Arne Vollan.

        Make sure The WebContent process calls _RegisterApplication() during initialization and
        *before* trying to set its display name. Setting the display name fails otherwise.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::platformInitializeProcess):

2018-11-16  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on iOS
        https://bugs.webkit.org/show_bug.cgi?id=191735

        Reviewed by Chris Dumez.

        Enabled the feature.

        * Shared/WebPreferencesDefaultValues.h:

2018-11-16  Antti Koivisto  <antti@apple.com>

        REGRESSION(r237467) [PSON] iOS: Going back to a page sometimes doesn't restore the full page
        https://bugs.webkit.org/show_bug.cgi?id=191737

        Reviewed by Simon Fraser.

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

        Layer tree should stay frozen in m_shouldResetDrawingArea state. Otherwise spurious commit transactions may
        mess up state on UI process side.

        Specifically WKWebView._needsResetViewStateAfterCommitLoadForMainFrame would get stuck to TRUE and prevent
        all viewport updates because WKWebView._firstPaintAfterCommitLoadTransactionID has value greater
        than any current transaction IDs.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Unreviewed typo fix in comment added in r238250.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        Storing blobs in IDB on iOS: "Error preparing blob/file"
        https://bugs.webkit.org/show_bug.cgi?id=188438
        <rdar://problem/43097279>

        Reviewed by Alex Christensen.

        Grant sandbox extension of temp folder to network process, and clean up some code that managed sandbox extension
        of IDB temporary blob files in network process.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob): Deleted.
        (WebKit::NetworkConnectionToWebProcess::getBlobDataFileReferenceForPath): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::didGetRecord):
        (WebKit::WebIDBConnectionToServer::didGetAllRecords):
        (WebKit::WebIDBConnectionToServer::didOpenCursor):
        (WebKit::WebIDBConnectionToServer::didIterateCursor):
        (WebKit::preregisterSandboxExtensionsIfNecessary): Deleted.

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=191401

        Reviewed by Michael Catanzaro.

        Rename PlatformDisplayWPE to PlatformDisplayLibWPE.

        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::initialize):
        * WebProcess/wpe/WebProcessMainWPE.cpp:

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add API to enable/disable device mocks
        https://bugs.webkit.org/show_bug.cgi?id=191699

        This basically us to test MediaStream/WebRTC support without
        requiring cameras or microphones and is quite useful.

        Also fix the GStreamerAudioMock by:
          - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
            this was usefull when we were trying to bring the MediaStream
            sources inside the main pipeline, it is not the case anymore
            (and not doable with latest version of LibWebRTC).
          - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
            stream is similar to what Apple port does.

        Reviewed by Xabier Rodriguez-Calvar.

        The mocks are already tested and the API is really simple.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_mock_capture_devices):
        (webkit_settings_set_enable_mock_capture_devices):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GTK][WPE] Add "WebKitDeviceInfoPermissionRequest.h" into webkit2.h
        https://bugs.webkit.org/show_bug.cgi?id=191744

        It should always have been there.

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/webkit2.h:

2018-11-16  Antoine Quint  <graouts@apple.com>

        PointerEvents should not require touch event listeners to be registered
        https://bugs.webkit.org/show_bug.cgi?id=191333
        <rdar://problem/45857523>

        Reviewed by Dean Jackson.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateTouchEventTracking):
        (WebKit::WebPageProxy::touchEventTrackingType const):
        (WebKit::WebPageProxy::handleTouchEventSynchronously):
        (WebKit::WebPageProxy::handleTouchEventAsynchronously):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:

2018-11-15  Myles C. Maxfield  <mmaxfield@apple.com>

        WKPreferencesSetFontSmoothingLevel doesn't actually do anything
        https://bugs.webkit.org/show_bug.cgi?id=191708

        Reviewed by Simon Fraser.

        Delete the symbol because no one calls it and it doesn't do anything

        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/FontSmoothingLevel.h: Removed.
        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toFontSmoothingLevel): Deleted.
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetFontSmoothingLevel): Deleted.
        (WKPreferencesGetFontSmoothingLevel): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebPreferences.h:
        * WebKit.xcodeproj/project.pbxproj:
        * mac/WebKit2.order:

2018-11-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238244.

        Caused High Sierra test runs to fail early with 50 crashes and
        casued 25 API failures.

        Reverted changeset:

        "[css-logical] Implement flow-relative margin, padding and
        border shorthands"
        https://bugs.webkit.org/show_bug.cgi?id=188697
        https://trac.webkit.org/changeset/238244

2018-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused WebInspectorProxy code
        https://bugs.webkit.org/show_bug.cgi?id=191674

        Reviewed by Dean Jackson.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):
        (WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::setInspectorWindowFrame): Deleted.
        (WebKit::WebInspectorProxy::inspectorWindowFrame): Deleted.
        * WebProcess/WebPage/WebInspector.h:

2018-11-15  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191572

        Reviewed by Chris Dumez.

        Enabled the feature by default on macOS.

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

2018-11-15  Chris Dumez  <cdumez@apple.com>

        IndexedDB.IndexedDBTempFileSize API test times out with process prewarming enabled
        https://bugs.webkit.org/show_bug.cgi?id=191671
        <rdar://problem/46086062>

        Reviewed by Alex Christensen.

        Enabling process prewarming caused IndexedDB.IndexedDBTempFileSize API to time out and print
        the following line:
        "Attempted to create a NetworkLoad with a session (id=2) that does not exist."

        This actually identified a pre-existing bug with our handling of non-default data store.
        Whenever a page starts using a data store, we call WebProcessPool::pageBeginUsingWebsiteDataStore()
        which will call NetworkProcessProxy::addSession() if the network process was already started
        to let the network process know about this non-default session. There are several issues with the
        current model:
        1. If the network process was not created yet when pageBeginUsingWebsiteDataStore() is called,
           then the network process will not know about the non-default session when it actually gets
           started later on. This is unlikely to happen in practice, except in case of network process
           crash because we create the network process as soon as we initialize the first WebProcessProxy.
        2. Even if we successfuly managed to register the session with the network process proxy, we get
           in trouble if the network process crashes or is terminated later on as we do not re-register
           those sessions with the new network process.

        To address these 2 issues, WebProcessPool::ensureNetworkProcess() now takes care of registering
        all the non-default sessions (that are associated with this process pool) with the new network
        process. The WebProcessPool knows about these sessions because it adds them to m_sessionToPagesMap
        whenever WebProcessPool::pageBeginUsingWebsiteDataStore() is called, even if the network process
        proxy was not created yet.

        The reason the IndexedDB.IndexedDBTempFileSize API test was failing was because it did:
        1. A load in a WebView V1 with a non-default session
        2. Process prewarming kicked in after this load and would create a new WebProcessProxy.
        3. Terminate the network process
        4. Another load in a WebView V2 with the same non-defaut session, which would reuse the
          prewarmed process. Because the network process was terminated, constructing the new
          page would not register the session ID with the new network process when
          pageBeginUsingWebsiteDataStore() is called.
        -> The load would hang because the new network process would not know about the
           non-default session when started later on.

        The bug was previously hidden without process prewarming because step 4 would create a *new*
        WebProcessProxy and WebProcessPool::initializeNewWebProcess() would call ensureNetworkProcess()
        so that pageBeginUsingWebsiteDataStore() would successfuly register the session with the
        network process later on.

        I wrote a second API test (WebKit.DoLoadWithNonDefaultDataStoreAfterTerminatingNetworkProcess)
        to demonstrate the pre-existing bug without process prewarming enabled.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-11-15  Vivek Seth  <v_seth@apple.com>

        Create feature flag (HTTPS_UPGRADE)
        https://bugs.webkit.org/show_bug.cgi?id=191613
        <rdar://problem/45851068>

        Reviewed by Dean Jackson.

        * config.h:

2018-11-15  Chris Dumez  <cdumez@apple.com>

        Regression(r238215) WKProcessPool.WarmInitialProcess API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=191693

        Reviewed by Alex Christensen.

        Allow *explicit* process prewarming to construct the default data store if necessary or we would
        not be obeying the client's request. Only automatic process prewarming should avoid constructing
        the default data store unnecessarily to avoid causing memory regressions.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextWarmInitialProcess):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _warmInitialProcess]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToOneProcess):

2018-11-14  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, comment improvement over r238166.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h:

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Use a real nonce for CTAPHID_INIT
        https://bugs.webkit.org/show_bug.cgi?id=191533
        <rdar://problem/46103502>

        Reviewed by Brent Fulgham.

        Use a real nonce for CTAPHID_INIT request according to:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#ctaphid_init-0x06.
        The challenge here is the new transaction needs to start in the next runloop otherwise a dead lock will form:
        wrong nonce -> new transaction -> new nonce -> write init request -> read init response from last run as it
        piped in the run loop -> wrong nonce of course -> ...
        To break the above dead lock, we have to start the new transaction in the next run. However, that isn't
        sufficient as the arrived init response will be piped in HidConnection::m_inputReports, which is designed
        on purpose to store any data packets within (initialized, terminated) time interval to prevent data loss in
        the case when HidConnection::registerDataReceivedCallback is called after the first data packet's arrival.
        In order to break the dead lock completely, HidConnection::invalidateCache will bnnne called prior to every
        send to delete any potential init response from last run. HidConnection::invalidateCache is not necessary
        for other protocols though. The above scenario is more or less a design flaw in CTAP HID.

        Of course, all above scenarios are covered in our mock tests.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Cocoa/HidConnection.h:
        (WebKit::HidConnection::invalidateCache):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.h:
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::transact):
        (WebKit::CtapHidDriver::CtapHidDriver):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::returnResponse):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.h:

2018-11-15  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Add a CSSLogicalEnabled runtime flag.

        * Shared/WebPreferences.yaml:

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::AuthenticatorAttachment should be optional
        https://bugs.webkit.org/show_bug.cgi?id=191522

        Reviewed by Brent Fulgham.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):

2018-11-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Make Accept-Languages header look more like other browsers
        https://bugs.webkit.org/show_bug.cgi?id=191614

        Reviewed by Carlos Garcia Campos.

        This changes our Accept-Language header to better match other browsers, from something
        like this:

        Accept-Language: en-us, en;q=0.90, es-es;q=0.80, es;q=0.70

        to something like this:

        Accept-Language: en-US,en;q=0.90,es-ES;q=0.80,es;q=0.70

        There's no particular motivation for this change. I just noticed we were different for no
        clear reason.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::buildAcceptLanguages):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_preferred_languages):

2018-11-15  Daniel Bates  <dabates@apple.com>

        [iOS] Shift + Tab does not focus previous field
        https://bugs.webkit.org/show_bug.cgi?id=191596
        <rdar://problem/45892053>

        Reviewed by Wenson Hsieh.

        Wire up the the tab and shift + tab key commands to the WKWebView/WKContentView's
        action forwarding mechanism. Also rename -_prevAccessoryTab to -_previousAccessoryTab.

        * Platform/spi/ios/UIKitSPI.h: Add more SPI.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView keyCommands]):
        (-[WKContentView _nextAccessoryTabForWebView:]): Added.
        (-[WKContentView _previousAccessoryTabForWebView:]): Added.
        (-[WKContentView _nextAccessoryTab:]): Deleted.
        (-[WKContentView _prevAccessoryTab:]): Deleted.

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

        Delete old .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191669
        <rdar://problem/46081994>

        Reviewed by Chris Dumez.

        .xcfilelist files were created and added to the Xcode project files in
        https://trac.webkit.org/changeset/238008/webkit. However, they caused
        build issues and they were removed from the Xcode projects in
        https://trac.webkit.org/changeset/238055/webkit. This check-in removes
        the files from the repository altogether. They'll ultimately be
        replaced with new files with names that indicate whether the
        associated files are inputs to the Run Script phase or are files
        created by the Run Script phase.

        * DerivedSources.xcfilelist: Removed.
        * UnifiedSources.xcfilelist: Removed.

2018-11-15  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: Add missing header.
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: Ditto.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: Ditto.

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

        Move scripts for Derived and Unified Sources to external files
        https://bugs.webkit.org/show_bug.cgi?id=191670
        <rdar://problem/46082278>

        Reviewed by Keith Miller.

        Move the scripts in the Generate Derived Sources and Generate Unified
        Sources Run Script phases from the Xcode projects to external shell
        script files. Then invoke those scripts from the Run Script phases.
        This refactoring is being performed to support later work that will
        invoke these scripts in other contexts.

        The scripts were maintained as-is when making the move. I did a little
        reformatting and added 'set -e' to the top of each file, but that's
        it.

        * Scripts/generate-derived-sources.sh: Added.
        * Scripts/generate-unified-sources.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.DecidePolicyForNavigationActionForHyperlinkThatRedirects API fails when PSON is enabled
        https://bugs.webkit.org/show_bug.cgi?id=191640

        Reviewed by Alex Christensen.

        The issue was that when process-swapping on a redirect, the parameters provided by the new
        WebContent process for navigationActionData / originatingFrameInfoData / frameSecurityOrigin
        are not correct because it does not have sufficient information (it does not know a swap
        happened).

        To address the issue, we now store the navigationActionData / originatingFrameInfoData /
        frameSecurityOrigin on the Navigation object whenever decidePolicyForNavigationAction is
        called. If the decidePolicyForNavigationAction is for a redirect, use the ones we stored
        on the Navigation object instead of the ones provided by the WebContent process. In case
        of redirect, those do not change anyway.

        This fixes all WebKit.DecidePolicyForNavigationAction* tests with PSON enabled.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::currentRequestIsRedirect const):
        (API::Navigation::wasUserInitiated const):
        (API::Navigation::shouldForceDownload const):
        (API::Navigation::treatAsSameOriginNavigation const):
        (API::Navigation::hasOpenedFrames const):
        (API::Navigation::openedViaWindowOpenWithOpener const):
        (API::Navigation::opener const):
        (API::Navigation::requesterOrigin const):
        (API::Navigation::lockHistory const):
        (API::Navigation::lockBackForwardList const):
        (API::Navigation::clientRedirectSourceForHistory const):
        (API::Navigation::setLastNavigationAction):
        (API::Navigation::lastNavigationAction const):
        (API::Navigation::setOriginatingFrameInfo):
        (API::Navigation::originatingFrameInfo const):
        (API::Navigation::setDestinationFrameSecurityOrigin):
        (API::Navigation::destinationFrameSecurityOrigin const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.WebsiteDataStoreCustomPaths API test is failing when enabling process prewarming
        https://bugs.webkit.org/show_bug.cgi?id=191638

        Reviewed by Alex Christensen.

        WebProcessPool::prewarmProcess() should not create the default WebSite Data Store if it
        does not exist yet. This is bad for memory consumption and it is what was causing this
        API test to fail.

        WebProcessPool::prewarmProcess() now tries to use the following data stores in this
        order of preference:
        1. WebProcessPool::m_websiteDataStore (aka this process pool's primary data store)
        2. The data store of the last WebProcessProxy that was created
        3. The default data store if it exists

        If no suitable data store is found, we cancel the process prewarming and log a console
        message instead.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Enabled dark mode CSS support by default.
        https://bugs.webkit.org/show_bug.cgi?id=191609
        rdar://problem/46046861

        Reviewed by Megan Gardner.

        * Shared/WebPreferences.yaml: Set DarkModeCSSEnabled's defaultValue to true.

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Default the view background color and text color to different values when in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191607
        rdar://problem/46045854

        Reviewed by Dean Jackson.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::backgroundColor const): Use controlBackgroundColor.
        (WebKit::WebViewImpl::updateLayer): Simplified and use backgroundColor() getter.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Drop backgroundColor.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setDrawsBackground): Drop backgroundColor.

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Pass Inspector::FrontendChannel as a reference connect/disconnect methods
        https://bugs.webkit.org/show_bug.cgi?id=191612

        Reviewed by Matt Baker.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::connect):
        (WebKit::WebAutomationSession::disconnect):
        (WebKit::WebAutomationSession::terminate):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::connect):
        (WebKit::WebPageDebuggable::disconnect):
        * UIProcess/WebPageDebuggable.h:
        * UIProcess/WebPageInspectorController.cpp:
        (WebKit::WebPageInspectorController::connectFrontend):
        (WebKit::WebPageInspectorController::disconnectFrontend):
        * UIProcess/WebPageInspectorController.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::close):
        * WebProcess/WebPage/WebPageInspectorTarget.cpp:
        (WebKit::WebPageInspectorTarget::connect):
        (WebKit::WebPageInspectorTarget::disconnect):

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed attempted wincairo build fix after 238192.

        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Follow-up: Keep Disabling Process Swap for Local Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        Continue to have the Local Inspector disable PSON while open
        until support is added.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::hasLocalInspectorFrontend const):
        (WebKit::WebPageProxy::setHasLocalInspectorFrontend):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setHasLocalInspectorFrontend):
        * WebProcess/WebPage/WebPage.h:

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        To support process swapping a slim Web Inspector backend lives in the UIProcess.
        The Web Inspector frontend connects to it and is told about sub-targets, namely
        pages, that it can further connect to. When performing a process swap the backend
        tells the frontend to destroy existing targets and create new targets.

        In the UIProcess the WebPageProxy has a WebPageInspectorController, with a single
        TargetAgent holding InspectorTargetProxies to targets it knows about. Inspector
        protocol messages go through this inspector controller and are routed to the
        WebPage and its WebCore::Page's InspectorController. The WebPageProxy decides
        when to close and expose new page targets during process swap, or basically
        any time it reconnects to a WebProcess. So this patch also makes Web Inspector
        stay alive and reconnect to a page when the inspected page crashes!

        In the WebContentProcess the WebPage has a WebPageInspectorTarget. It also
        has a WebPageInspectorTargetController in anticipation of further sub-targets
        within the page (workers, frames) but none exist at the moment. The WebPage
        relies on the WebPageProxy to know when to expose this target as a debuggable.

        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:
        New files.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Remote inspector state can now stay in the UIProcess and does not need to
        be passed down to the WebContentProcess.

        * UIProcess/WebPageDebuggable.cpp: Copied from Source/WebCore/page/PageDebuggable.cpp.
        (WebKit::WebPageDebuggable::WebPageDebuggable):
        (WebKit::WebPageDebuggable::name const):
        (WebKit::WebPageDebuggable::url const):
        (WebKit::WebPageDebuggable::hasLocalDebugger const):
        (WebKit::WebPageDebuggable::connect):
        (WebKit::WebPageDebuggable::disconnect):
        (WebKit::WebPageDebuggable::dispatchMessageFromRemote):
        (WebKit::WebPageDebuggable::setIndicating):
        (WebKit::WebPageDebuggable::setNameOverride):
        * UIProcess/WebPageDebuggable.h: Copied from Source/WebCore/page/PageDebuggable.h.
        Remote debuggable entry point into the UIProcess for a page.
        This is pretty much identical to the PageDebuggable in WebCore.

        * Scripts/webkit/messages.py:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::createInspectorTarget):
        (WebKit::WebPageProxy::destroyInspectorTarget):
        (WebKit::WebPageProxy::sendMessageToInspectorFrontend):
        (WebKit::WebPageProxy::setIndicating):
        (WebKit::WebPageProxy::allowsRemoteInspection const):
        (WebKit::WebPageProxy::setAllowsRemoteInspection):
        (WebKit::WebPageProxy::remoteInspectionNameOverride const):
        (WebKit::WebPageProxy::setRemoteInspectionNameOverride):
        (WebKit::WebPageProxy::remoteInspectorInformationDidChange):
        (WebKit::WebPageProxy::clearInspectorTargets):
        (WebKit::WebPageProxy::createInspectorTargets):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::inspectorController):
        (WebKit::WebPageProxy::allowsRemoteInspection const): Deleted.
        (WebKit::WebPageProxy::remoteInspectionNameOverride const): Deleted.
        Own more inspector state in the UIProcess including a debuggable and inspector controller.

        * UIProcess/WebPageInspectorController.h: Added.
        * UIProcess/WebPageInspectorController.cpp: Added.
        (WebKit::WebPageInspectorController::WebPageInspectorController):
        (WebKit::WebPageInspectorController::pageClosed):
        (WebKit::WebPageInspectorController::hasLocalFrontend const):
        (WebKit::WebPageInspectorController::hasRemoteFrontend const):
        (WebKit::WebPageInspectorController::connectFrontend):
        (WebKit::WebPageInspectorController::disconnectFrontend):
        (WebKit::WebPageInspectorController::disconnectAllFrontends):
        (WebKit::WebPageInspectorController::dispatchMessageFromFrontend):
        (WebKit::WebPageInspectorController::setIndicating):
        (WebKit::WebPageInspectorController::clearTargets):
        (WebKit::WebPageInspectorController::createInspectorTarget):
        (WebKit::WebPageInspectorController::destroyInspectorTarget):
        (WebKit::WebPageInspectorController::sendMessageToInspectorFrontend):
        InspectorController with a single TargetAgent in the UIProcess.

        * UIProcess/WebPageInspectorTargetAgent.h:
        * UIProcess/WebPageInspectorTargetAgent.cpp:
        (WebKit::WebPageInspectorTargetAgent::WebPageInspectorTargetAgent):
        (WebKit::WebPageInspectorTargetAgent::frontendChannel):
        Target agent implementation.

        * UIProcess/InspectorTargetProxy.cpp:
        (WebKit::InspectorTargetProxy::create):
        (WebKit::InspectorTargetProxy::InspectorTargetProxy):
        (WebKit::InspectorTargetProxy::connect):
        (WebKit::InspectorTargetProxy::disconnect):
        (WebKit::InspectorTargetProxy::sendMessageToTargetBackend):
        * UIProcess/InspectorTargetProxy.h:
        UIProcess proxy for an InspectorTarget in the WebContentProcess.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::connectInspector):
        (WebKit::WebPage::disconnectInspector):
        (WebKit::WebPage::sendMessageToTargetBackend):
        (WebKit::WebPage::setIndicating):
        (WebKit::WebPage::setAllowsRemoteInspection): Deleted.
        (WebKit::WebPage::setRemoteInspectionNameOverride): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        * WebProcess/WebPage/WebPageInspectorTarget.h:
        * WebProcess/WebPage/WebPageInspectorTarget.cpp:
        (WebKit::WebPageInspectorTarget::WebPageInspectorTarget):
        (WebKit::WebPageInspectorTarget::identifier const):
        (WebKit::WebPageInspectorTarget::connect):
        (WebKit::WebPageInspectorTarget::disconnect):
        (WebKit::WebPageInspectorTarget::sendMessageToTargetBackend):
        InspectorTarget for this WebPage.

        * WebProcess/WebPage/WebPageInspectorTargetController.cpp: Added.
        (WebKit::WebPageInspectorTargetController::WebPageInspectorTargetController):
        (WebKit::WebPageInspectorTargetController::~WebPageInspectorTargetController):
        (WebKit::WebPageInspectorTargetController::addTarget):
        (WebKit::WebPageInspectorTargetController::removeTarget):
        (WebKit::WebPageInspectorTargetController::connectInspector):
        (WebKit::WebPageInspectorTargetController::disconnectInspector):
        (WebKit::WebPageInspectorTargetController::sendMessageToTargetBackend):
        (WebKit::WebPageInspectorTargetController::sendMessageToTargetFrontend):
        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:
        (WebKit::WebPageInspectorTargetFrontendChannel::create):
        (WebKit::WebPageInspectorTargetFrontendChannel::WebPageInspectorTargetFrontendChannel):
        (WebKit::WebPageInspectorTargetFrontendChannel::sendMessageToFrontend):
        Preparation for more target managment in the WebContentProcess.

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

        Add SPI to show a safe browsing warning
        https://bugs.webkit.org/show_bug.cgi?id=191604

        Reviewed by Andy Estes.

        Safari has a case where it shows safe browsing warnings for a reason other than being told to by the SafeBrowsing framework.
        Because safe browsing is moving to WebKit, we will have Safari call this WebKit SPI in that case.
        The warning looks a little different, so I had to change the structure of a SafeBrowsingResult and the location of the string processing,
        but the existing behavior is the same as verified by existing unit tests.  I added a unit test to verify behavior of the new SPI.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (+[WKWebView _confirmMalwareSentinel]):
        (+[WKWebView _visitUnsafeWebsiteSentinel]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Removed.
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: Copied from Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm.
        (WebKit::malwareDetailsBase):
        (WebKit::learnMoreURL):
        (WebKit::reportAnErrorBase):
        (WebKit::localizedProvider):
        (WebKit::SafeBrowsingWarning::visitUnsafeWebsiteSentinel):
        (WebKit::SafeBrowsingWarning::confirmMalwareSentinel):
        (WebKit::replace):
        (WebKit::addLinkAndReplace):
        (WebKit::reportAnErrorURL):
        (WebKit::malwareDetailsURL):
        (WebKit::safeBrowsingTitleText):
        (WebKit::safeBrowsingWarningText):
        (WebKit::safeBrowsingDetailsText):
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        (WebKit::learnMore): Deleted.
        (WebKit::SafeBrowsingResult::SafeBrowsingResult): Deleted.
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
        (confirmMalwareSentinel): Deleted.
        (visitUnsafeWebsiteSentinel): Deleted.
        (replace): Deleted.
        (addLinkAndReplace): Deleted.
        (reportAnErrorURL): Deleted.
        (malwareDetailsURL): Deleted.
        (titleText): Deleted.
        (warningText): Deleted.
        (detailsText): Deleted.
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]): Deleted.
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        * UIProcess/SafeBrowsingResult.h: Removed.
        * UIProcess/SafeBrowsingWarning.h: Copied from Source/WebKit/UIProcess/SafeBrowsingResult.h.
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::title const):
        (WebKit::SafeBrowsingWarning::warning const):
        (WebKit::SafeBrowsingWarning::details const):
        (WebKit::SafeBrowsingResult::create): Deleted.
        (WebKit::SafeBrowsingResult::isPhishing const): Deleted.
        (WebKit::SafeBrowsingResult::isMalware const): Deleted.
        (WebKit::SafeBrowsingResult::isUnwantedSoftware const): Deleted.
        (WebKit::SafeBrowsingResult::url const): Deleted.
        (WebKit::SafeBrowsingResult::provider const): Deleted.
        (WebKit::SafeBrowsingResult::localizedProviderName const): Deleted.
        (WebKit::SafeBrowsingResult::malwareDetailsURLBase const): Deleted.
        (WebKit::SafeBrowsingResult::reportAnErrorURLBase const): Deleted.
        (WebKit::SafeBrowsingResult::learnMoreURL const): Deleted.
        (WebKit::SafeBrowsingResult::needsSafeBrowsingWarning const): Deleted.
        (): Deleted.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        (WebKit::WebFramePolicyListenerProxy::use):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::WebFrameProxy):
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        (WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::create):
        (WebKit::WebFrameProxy::page const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] A few drag and drop tests are crashing after r238146
        https://bugs.webkit.org/show_bug.cgi?id=191617

        Reviewed by Dean Jackson.

        The notion of temporarily suppressing the selection assistant was introduced during iOS drag and drop
        development as a way of allowing both the selection view and dropped content snapshot to fade in simultaneously
        during a drop in an editable element. r238146 piggy-backs on this mechanism by changing selection suppression
        state when an element is focused, when the selection changes, and when an element is blurred, depending on
        whether the currently focused element is transparent.

        However, in the case where the selection assistant is suppressed due to a running drop animation, if focus moves
        to an element that is not fully transparent, we end up prematurely unsuppressing the text selection assistant.
        This subsequently causes selection UI to immediately show up after a drop instead of animating in alongside a
        snapshot of the inserted document fragment, if the drop moved focus to an editable element.

        A number of drag and drop tests on iOS exercised this codepath by dragging content into editable fields and/or
        moving content between editable elements in a web view. These tests began to crash due to selection views and
        the accompanying callout bar appearing earlier than usual, which triggers an unrelated UIKit assertion in
        <https://webkit.org/b/190401>.

        This patch fixes the failing tests by refactoring our selection assistant suppression code. Instead of
        maintaining a single `BOOL` flag indicating whether the selection is suppressed, we use an `OptionSet` of
        `SuppressSelectionAssistantReason`s, which (at the moment) only include (1) a running drop animation, and (2)
        focusing a transparent element. The text selection assistant is considered suppressed when either of the reasons
        apply. This allows us to correctly handle a drop animation that occurs simultaneously as an element is focused
        without unsuppressing the selection assistant early, and also allows us to handle selection assistant
        suppression in more nuanced ways, depending on the suppression reason.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _displayFormNodeInputView]):

        Only prevent zooming to the focused element during drop if we're suppressing the selection assistant due to
        focusing a transparent element. In the case of a drop, we still want to allow scrolling and zooming.

        (-[WKContentView canShowNonEmptySelectionView]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _shouldSuppressSelectionCommands]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):

        Add helper methods for adding or removing selection assistant suppression reasons. When the last selection
        assistant suppression reason is removed, we activate the selection assistant, and conversely, when the first
        suppression reason is added, we deactivate the selection assistant.

        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView suppressAssistantSelectionView]): Deleted.
        (-[WKContentView setSuppressAssistantSelectionView:]): Deleted.

2018-11-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WebKit2] Hook up some more editing actions (-_pasteAndMatchStyle:, -makeTextWritingDirectionNatural:)
        https://bugs.webkit.org/show_bug.cgi?id=191605
        <rdar://problem/45813991>

        Reviewed by Dean Jackson.

        Hook up a couple of editing actions on iOS and macOS. The `-pasteAndMatchStyle:` selector is privately declared
        in UIKit, but does not exist on macOS; as such, add `-_pasteAndMatchStyle:` as SPI on WKWebView, and
        additionally implement the unprefixed version, `-pasteAndMatchStyle:`, on iOS.

        Since `-makeTextWritingDirectionNatural:` is already declared on both iOS and macOS (SPI on UIResponder and API
        on macOS, respectively) we simply implement the unprefixed variant on both platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView makeTextWritingDirectionNaturalForWebView:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):

2018-11-14  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (WEBPROCESS_WINDOWSERVER_BLOCKING): requestAnimationFrame Stops Completing
        https://bugs.webkit.org/show_bug.cgi?id=190884

        Reviewed by Dean Jackson.

        Since the Web page currently owns the display link on the UI process side, the display link will be
        deleted in the UI process when a Web page is closed. This is incorrect, since a display link can be
        reused between Web pages in the WebContent process. This patch moves the ownership of the UI process
        display links to the Web process object to address this issue. Also, the display ID of the display
        being updated is included in the message to the WebContent process.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::DisplayLink):
        (WebKit::DisplayLink::displayLinkCallback):
        * UIProcess/mac/DisplayLink.h:
        (WebKit::DisplayLink::displayID const):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::startDisplayLink): Deleted.
        (WebKit::WebPageProxy::stopDisplayLink): Deleted.
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::startDisplayLink):
        (WebKit::WebProcessProxy::stopDisplayLink):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/mac/DrawingAreaMac.cpp:
        (WebKit::DisplayRefreshMonitorMac::create):
        (WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback):
        (WebKit::DrawingArea::createDisplayRefreshMonitor):
        (WebKit::DrawingArea::displayWasRefreshed): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::displayWasRefreshed):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        Client should be able to disable PSON even if the experimental feature is on by default
        https://bugs.webkit.org/show_bug.cgi?id=191634

        Reviewed by Dean Jackson.

        Instead of overriding the APIProcessPoolConfiguration's m_processSwapsOnNavigation flag to true
        when the experimental is enabled, use a separate flag to store this information. If the client
        explicitly sets the APIProcessPoolConfiguration's m_processSwapsOnNavigation flag then we obey
        the client's request, otherwise, we fall back to using the state from experimental features.

        This allows:
        - API tests to explicitely disable PSON / Process prewarming even if those are on by default
          in experimental features.
        - If the client does not set those flags on the APIProcessPoolConfiguration (Safari for e.g.),
          then the experimental feature flag still fully controls the feature.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.ApplicationManifestBasic API test is failing when enabling PSON
        https://bugs.webkit.org/show_bug.cgi?id=191602

        Reviewed by Alex Christensen.

        Add support for process swapping for a [WKWebView loadHTML:] load by storing
        the necessary data on the API::Navigation and doing a loadData() instead of
        a loadRequest() after process swapping when this data is present on the
        navigation.

        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::Navigation):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::create):
        (API::Navigation::substituteData const):
        * UIProcess/WebNavigationState.cpp:
        (WebKit::WebNavigationState::createLoadDataNavigation):
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2018-11-14  Antti Koivisto  <antti@apple.com>

        Align Mac WK2 layer flush throttling with iOS
        https://bugs.webkit.org/show_bug.cgi?id=191632

        Reviewed by Zalan Bujtas.

        Currently Mac WK2 uses WebCore side throttling implementation in RenderLayerCompositor. This code has
        throttling timer per-frame while the actual decision making and layer flushes itself are per page. These
        timers generate way more flushes than expected in presence of multiple frames. There are also bugs in how
        flushing state is updated when frames are created dynamically.

        On iOS WK2 throttling is implemented on WebKit side and controlled by a per-page timer. Recent fixes also
        make this implementation visually fast. We should align the Mac implementation and eventually unify them.

        This patch implements throttling in TiledCoreAnimationDrawingArea mirroring the iOS RemoteLayerTreeDrawingArea
        implementation. There are some adjustments for platform differences (local vs remote layers) and we continue
        using runloop observer for the actual flushes. Timings are as in the existing Mac code.

        The patch appears to be a significant performance progression.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):

        Schedule an immediate flush when layers are unfrozen.

        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlushImmediately):

        Track pending flushes with m_hasPendingFlush bit.
        Delay flush if the flush throttling timer is active. Start it if we throttling but it is not active yet.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

        Clear m_hasPendingFlush if the flush succeeded.
        Restart the throttling timer if we are still throttling.
        Manage runloop observer invalidation here instead of the caller (and stop returning value).

        (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
        (WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling):

        Returning 'true' here disables WebCore side throttling code.

        Start or stop the throttling timer on state changes.

        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingIsActive const):

        This is used to control style and layout timers on WebCore side. Return false on frozen
        state since unfreezing depends on style and layout.

        (WebKit::TiledCoreAnimationDrawingArea::startLayerFlushThrottlingTimer):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.WKHTTPCookieStoreWithoutProcessPool API test is failing with process prewarming is enabled
        https://bugs.webkit.org/show_bug.cgi?id=191624

        Reviewed by Alex Christensen.

        Stop setting the WebProcessPool's primary data store (m_websiteDataStore) to the default one in
        WebProcessPool::prewarmProcess(). We did not really need to, we can pass the default data store
        to the new WebPageProxy without having to set m_websiteDataStore. m_websiteDataStore only gets
        set upon constructor if thr default data store already exists or later on when creating a WebPage
        that uses the default data store.

        In the case of the API test, the following was happening:
        1. Create an ephemeral data store EDS
        2. Create a WebView V1 using datastore EDS
        3. Do a load in V1
        4. Process prewarming would kick in and wrongly associated V1's process pool PP1 with the default data store
        5. Create/Get the default datastore and set a few cookies on it
        6. Create a WebView V2 using default datastore and a fresh new process pool PP2
        7. Do a load in V2 and expect the cookies to be there

        In HTTPCookieStore::setCookie() that is called at step 5, we call:
        m_owningDataStore->processPoolForCookieStorageOperations()

        In this case, m_owningDataStore is the default datastore and this call would previously return null because
        there is no WebProcessPool yet associated with the default datastore. However, with the process prewarming
        bug at step 4, the process pool PP1 would be returned since it was wrongly associated with the default
        data store. As a result, we would call setCookie() on PP1's WebCookieManagerProxy and this would fail
        because PP1's network process knows nothing about this session ID (it was only ever used with an ephemeral
        session).

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):

2018-11-13  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support CTAP HID authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=188623
        <rdar://problem/43353777>

        Reviewed by Brent Fulgham and Chris Dumez.

        This patch introduces a primitive support of CTAP HID authenticators for WebAuthN in macOS.
        It involves low level HID device management&communication, high level CTAP HID authenticator
        management&communication, and mock testing. The above three aspects will be covered in details:
        1) Low level HID device management&communication: HidService&HidConnection
        It relies on IOHIDManager to discover appropriate hid devices by passing a matching dictionary:
        { PrimaryUsagePage: 0xf1d0, PrimaryUsage: 0x01}. For communication, it utilizes HID reports.
        To send a report, it calls IOHIDDeviceSetReport since the async version is not implemented.
        To recieve a report, it calls IOHIDDeviceRegisterInputReportCallback to asynchronously wait
        for incoming reports.
        Here is the corresponding reference:
        https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW2
        2) High level CTAP HID authenticator management&communication: HidService&CtapHidDriver
        Whenever an appropriate hid device is discovered by IOHIDManager, an AuthenticatorGetInfo command
        is sent to the device to determine properties of the authenticator, says, which version of protocol
        it supports, i.e. CTAP or U2F. So far, we only support CTAP authenticators. Once the authenticator
        is determined to support CTAP, we then instantiate CtapHidAuthenticator which will then take care
        of even higher level WebAuthN requests&responses.
        Binaries are constructed and packaged according to the CTAP HID porotocol. CtapHidDriver takes care
        of concurrency and channels, i.e. allocating channel and establishing the actual request/response
        transaction. At the meantime, CtapHidDriver::Worker is then responsible for each single transaction.
        Here is the corresponding reference:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#usb.
        3) Mock Testing: MockHidService & MockHidConnection
        A CTAP hid authenticator is simulated within MockHidConnection with options of specifying specific
        error scenarios and of course could take care of successful cases. Four stages are presented in the
        simulated authenticator to reflect: a) allocating channel for AuthenticatorGetInfo, b) sending
        AuthenticatorGetInfo, c) allocating channel for actual request, and d) sending the actual request.

        Besides implementing the above, it also does a few other things:
        1) Make AuthenticatorManager::clearState asynchronous to avoid cyclic dependency:
        Authenticator::returnResponse => AuthenticatorManager::respondReceived => AuthenticatorManager::clearState
        => Authenticator::~Authenticator.
        2) Reorganize unified build sources to make it clear that which files are .mm and which are .cpp.
        3) Import LocalAuthentication.framework in LocalAuthenticationSoftLink instead of being scattered.

        * Sources.txt:
        * SourcesCocoa.txt:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::clearStateAsync):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp:
        (WebKit::AuthenticatorTransportService::create):
        (WebKit::AuthenticatorTransportService::createMock):
        (WebKit::AuthenticatorTransportService::startDiscovery):
        (WebKit::AuthenticatorTransportService::startDiscovery const): Deleted.
        * UIProcess/WebAuthentication/AuthenticatorTransportService.h:
        * UIProcess/WebAuthentication/Cocoa/HidConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/AuthenticatorTransportService.h.
        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm: Added.
        (WebKit::reportReceived):
        (WebKit::HidConnection::HidConnection):
        (WebKit::HidConnection::~HidConnection):
        (WebKit::HidConnection::initialize):
        (WebKit::HidConnection::terminate):
        (WebKit::HidConnection::send):
        (WebKit::HidConnection::registerDataReceivedCallback):
        (WebKit::HidConnection::unregisterDataReceivedCallback):
        (WebKit::HidConnection::receiveReport):
        (WebKit::HidConnection::consumeReports):
        (WebKit::HidConnection::registerDataReceivedCallbackInternal):
        * UIProcess/WebAuthentication/Cocoa/HidService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.h.
        * UIProcess/WebAuthentication/Cocoa/HidService.mm: Added.
        (WebKit::deviceAddedCallback):
        (WebKit::deviceRemovedCallback):
        (WebKit::HidService::HidService):
        (WebKit::HidService::~HidService):
        (WebKit::HidService::startDiscoveryInternal):
        (WebKit::HidService::platformStartDiscovery):
        (WebKit::HidService::createHidConnection const):
        (WebKit::HidService::deviceAdded):
        (WebKit::HidService::continueAddDeviceAfterGetInfo):
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h:
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        * UIProcess/WebAuthentication/Cocoa/LocalService.h:
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::startDiscoveryInternal):
        (WebKit::LocalService::startDiscoveryInternal const): Deleted.
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp: Added.
        (WebKit::MockHidConnection::MockHidConnection):
        (WebKit::MockHidConnection::initialize):
        (WebKit::MockHidConnection::terminate):
        (WebKit::MockHidConnection::send):
        (WebKit::MockHidConnection::registerDataReceivedCallbackInternal):
        (WebKit::MockHidConnection::assembleRequest):
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        (WebKit::MockHidConnection::stagesMatch const):
        (WebKit::MockHidConnection::shouldContinueFeedReports):
        (WebKit::MockHidConnection::continueFeedReports):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h.
        * UIProcess/WebAuthentication/Mock/MockHidService.cpp: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalService.cpp.
        (WebKit::MockHidService::MockHidService):
        (WebKit::MockHidService::platformStartDiscovery):
        (WebKit::MockHidService::createHidConnection const):
        * UIProcess/WebAuthentication/Mock/MockHidService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        * UIProcess/WebAuthentication/Mock/MockLocalService.mm: Renamed from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalService.cpp.
        (WebKit::MockLocalService::MockLocalService):
        (WebKit::MockLocalService::platformStartDiscovery const):
        (WebKit::MockLocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp: Added.
        (WebKit::CtapHidAuthenticator::CtapHidAuthenticator):
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):
        (WebKit::CtapHidAuthenticator::getAssertion):
        (WebKit::CtapHidAuthenticator::continueGetAssertionAfterResponseReceived const):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.h.
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp: Added.
        (WebKit::CtapHidDriver::Worker::Worker):
        (WebKit::CtapHidDriver::Worker::~Worker):
        (WebKit::CtapHidDriver::Worker::transact):
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::CtapHidDriver):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):
        (WebKit::CtapHidDriver::returnResponse):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.h: Added.
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed correction to previous build fix to avoid any internal/downstream repercussions.

        * WebProcess/Network/webrtc/LibWebRTCProvider.h:

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed GTK/WPE build fix for r238159. 

        * WebProcess/Network/webrtc/LibWebRTCProvider.h:

2018-11-13  Timothy Hatcher  <timothy@apple.com>

        Use a light scrollbar for transparent web views in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191559
        rdar://problem/46000489

        Reviewed by Dean Jackson.

        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage): Use FrameView's useDarkAppaearance().
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect): Ditto.

2018-11-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Do not show selection UI for editable elements with opacity near zero
        https://bugs.webkit.org/show_bug.cgi?id=191442
        <rdar://problem/45958625>

        Reviewed by Simon Fraser.

        Add support for suppressing native selection UI (for instance, selection highlight views, selection handles, and
        selection-related gestures) when the selection is inside a transparent editable element. This helps maintain
        compatibility with text editors that work by capturing key events and input events hidden contenteditable
        elements, and reflect these changes in different document or different part of the document.

        Since selection UI is rendered in the UI process on iOS using element geometry propagated from the web process,
        selection rendering is entirely decoupled from the process of painting in the web process. This means that if
        the editable root has an opacity of 0, we would correctly hide the caret and selection on macOS, but draw over
        the transparent element on iOS. When these hidden editable elements are focused, this often results in unwanted
        behaviors, such as double caret painting, native and custom selection UI from the page being drawn on top of one
        another, and the ability to change selection via tap and loupe gestures within hidden text.

        To fix this, we compute whether the focused element is transparent when an element is focused, or when the
        selection changes, and send this information over to the UI process via `AssistedNodeInformation` and
        `EditorState`. In the UI process, we then respect this information by suppressing the selection assistant if the
        focused element is transparent; this disables showing and laying out selection views, as well as gestures
        associated with selection overlays. However, this still allows for contextual autocorrection and spell checking.

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:
        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add `elementIsTransparent` flags, and also add boilerplate IPC code.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _displayFormNodeInputView]):

        Prevent zooming to the focused element if the focused element is hidden.

        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

        Don't allow these text interaction gestures to begin while suppressing the selection assistant.

        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        When an element is focused, begin suppressing the selection assistant if the element is fully transparent.

        (-[WKContentView _stopAssistingNode]):

        When the focused element is blurred, reset state by ending selection assistant suppression (additionally
        reactivating the selection assistant if needed). This ensures that selection in non-editable text isn't broken
        after focusing a hidden editable element.

        (-[WKContentView _updateChangedSelection:]):

        If needed, suppress or un-suppress the selection assistant when the selection changes. On certain rich text
        editors, a combination of custom selection UI and native selection UI is used. For instance, on Microsoft Office
        365, caret selections are rendered using the native caret view, but as soon as the selection becomes ranged, the
        editable root becomes fully transparent, and Office's selection UI takes over.

        (-[WKContentView _shouldSuppressSelectionCommands]):

        Override this UIKit SPI hook to suppress selection commands (e.g. the callout bar) when suppressing the
        selection assistant.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::getAssistedNodeInformation):

        Compute and set `elementIsTransparent` using the assisted node.

2018-11-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238137.

        Introduced API test failures on macOS.

        Reverted changeset:

        "Enable process swap on cross-site navigation by default on
        macOS"
        https://bugs.webkit.org/show_bug.cgi?id=191572
        https://trac.webkit.org/changeset/238137

2018-11-13  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191572

        Reviewed by Chris Dumez.

        Enabled the feature by default on macOS.

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

2018-11-13  Daniel Bates  <dabates@apple.com>

        Consolidate WebKit UIKitSPI.h and UIKitTestSPI.h
        https://bugs.webkit.org/show_bug.cgi?id=173341
        <rdar://problem/32752890>

        Reviewed by Simon Fraser.

        * Platform/spi/ios/UIKitSPI.h:

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

        Fix internal builds after r238115
        https://bugs.webkit.org/show_bug.cgi?id=191441

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        Some iOS-like operating systems don't have safe browsing.  Don't use symbols that don't exist on those systems.

2018-11-13  Ali Juma  <ajuma@chromium.org>

        Turn Intersection Observer on by default
        https://bugs.webkit.org/show_bug.cgi?id=191569

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:

2018-11-12  Darshan Kadu  <darsh7807@gmail.com>

        Implement Cache API support for WPE/GTK
        https://bugs.webkit.org/show_bug.cgi?id=178316

        Reviewed by Michael Catanzaro.

        Added a new API function WKWebsiteDataStoreSetCacheStoragePerOriginQuota which sets the
        cache limit per origin.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetCacheStoragePerOriginQuota):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

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

        [iOS] Implement safe browsing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=191441

        Reviewed by Tim Horton.

        In r237863 I implemented this for Mac.  This refines the UI and implements it for iOS.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextHandlesSafeBrowsing):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (-[WKWebView _clearSafeBrowsingWarning]):
        (-[WKWebView layoutSubviews]):
        (-[WKWebView setFrameSize:]):
        (+[WKWebView _handlesSafeBrowsing]):
        (-[WKWebView _safeBrowsingWarningForTesting]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance const):
        (WebKit::PageClientImplCocoa::serializableFileWrapperClasses const):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (confirmMalwareSentinel):
        (visitUnsafeWebsiteSentinel):
        (colorForItem):
        (addLinkAndReplace):
        (-[WKSafeBrowsingExclamationPoint drawRect:]):
        (makeButton):
        (makeTitleLabel):
        (setBackground):
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning layoutText]):
        (-[WKSafeBrowsingWarning textView:clickedOnLink:atIndex:]):
        (-[WKSafeBrowsingWarning layout]):
        (-[WKSafeBrowsingWarning layoutSubviews]):
        (-[WKSafeBrowsingWarning textView:shouldInteractWithURL:inRange:interaction:]):
        (-[WKSafeBrowsingWarning didMoveToWindow]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        (colorNamed): Deleted.
        (+[WKSafeBrowsingTextView viewWithAttributedString:linkTarget:]): Deleted.
        (+[WKSafeBrowsingTextView viewWithString:]): Deleted.
        (-[WKSafeBrowsingTextView clickedOnLink:atIndex:]): Deleted.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewWindowActive):
        (WebKit::PageClientImpl::isViewFocused):
        (WebKit::PageClientImpl::isViewVisible):
        (WebKit::PageClientImpl::isViewInWindow):
        (WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest):
        (WebKit::PageClientImpl::enterAcceleratedCompositingMode):
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        (WebKit::PageClientImpl::mimeTypesWithCustomContentProviders):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::navigationGestureWillEnd):
        (WebKit::PageClientImpl::navigationGestureDidEnd):
        (WebKit::PageClientImpl::willRecordNavigationSnapshot):
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):
        (WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showShareSheet):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::navigationGestureWillEnd):
        (WebKit::PageClientImpl::navigationGestureDidEnd):
        (WebKit::PageClientImpl::willRecordNavigationSnapshot):
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):

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

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h: Added.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::createForEmbeddedView):
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
        (WebKit::PlatformCALayerRemote::embeddedViewID const):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Propagate EmbeddedViewID through the PlatformCALayer constructor and
        through the layer creation parameters to the UI process.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setEditableImagesEnabled:]):
        (-[WKWebViewConfiguration _editableImagesEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Add a preference to enable editable images.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Keep track of "embedded views" in two maps: embeddedViewID->UIView,
        and layerID->embeddedViewID. Clean them up when layers go away.
        If a embedded view is reparented, currently it must be added to a new
        layer in the same commit as it is removed from the previous layer
        in order to persist the view's state (otherwise the view will be
        destroyed and recreated). This will be less of a problem after future
        patches introduce serialization of image data and whatnot.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        Move the various remote layer tree UIView subclasses out into a separate file.

        Add createEmbeddedView, which is used for LayerTypeEditableImageLayer,
        and creates a WKDrawingView and sticks it in the maps.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: Added.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: Added.
        (-[UIView _web_recursiveFindDescendantInteractibleViewAtPoint:withEvent:]):
        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        (-[WKCompositingView hitTest:withEvent:]):
        (-[WKCompositingView description]):
        (+[WKTransformView layerClass]):
        (+[WKSimpleBackdropView layerClass]):
        (+[WKShapeView layerClass]):
        (-[WKRemoteView initWithFrame:contextID:]):
        (+[WKRemoteView layerClass]):
        (-[WKBackdropView hitTest:withEvent:]):
        (-[WKBackdropView description]):
        (-[WKChildScrollView initWithFrame:]):
        Move various remote layer tree UIView subclasses here, to their own file.
        Make our UIView hit testing override test for views that conform to the
        protocol "WKNativelyInteractible", which switches to normal UIView hit
        testing. WKDrawingView will be the one such view.

        Add WKChildScrollView and pull the one thing we customize out into it,
        to make RemoteLayerTreeHost::createLayer less logic-ful.

        * UIProcess/ios/WKDrawingView.h: Added.
        * UIProcess/ios/WKDrawingView.mm: Added.
        (-[WKDrawingView init]):
        (-[WKDrawingView layoutSubviews]):
        Add a very simple WKDrawingView, which uses PKCanvasView to edit the image.

        * WebKit.xcodeproj/project.pbxproj:
        * SourcesCocoa.txt:
        Add the new files.

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

        Shipped PNGs include bad profiles: iCCP: known incorrect sRGB profile
        https://bugs.webkit.org/show_bug.cgi?id=189230
        <rdar://problem/44050379>

        Reviewed by Joseph Pecoraro.

        Runs all png images through zopflipng. This results in a smaller file
        size and takes care of this issue as a byproduct.

        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@1x.png:
        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@2x.png:
        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@3x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@1x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@2x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@3x.png:

2018-11-12  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Screen capture should be an experimental feature on OSX only
        https://bugs.webkit.org/show_bug.cgi?id=191552
        <rdar://problem/45994142>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml: Make ScreenCaptureEnabled.condition ENABLE(MEDIA_STREAM) && PLATFORM(MAC).

2018-11-12  Takashi Komori  <Takashi.Komori@sony.com>

        Resurrect WebKitTestRunner for Windows port
        https://bugs.webkit.org/show_bug.cgi?id=189257

        Reviewed by Fujii Hironori.

        * PlatformWin.cmake:

2018-11-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations experimental
        https://bugs.webkit.org/show_bug.cgi?id=191543

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-11-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement a new edit command to change the enclosing list type
        https://bugs.webkit.org/show_bug.cgi?id=191487
        <rdar://problem/45955922>

        Reviewed by Ryosuke Niwa.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):

        Add undo/redo edit action strings for ConvertToOrderedList and ConvertToUnorderedList.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):

        Remove preflight checks for these list editing commands. These are not necessary because these commands fall
        back to being noops if these checks return false. This avoids an extraneous ancestor walk to determine the
        enclosing list element when changing list type.

2018-11-11  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Notify the WebContent process with the current modifer state on window activation changes. Notify
        the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
        (-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
        keyboard flags changed event.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
        Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
        one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
        so that we toggle visibility of the caps lock indicator.

2018-11-11  Dan Bernstein  <mitz@apple.com>

        ProcessPoolConfiguration::copy() doesn’t copy m_customWebContentServiceBundleIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=191514

        Reviewed by Geoffrey Garen.

        Test: WebKitCocoa/WKProcessPoolConfiguration.mm

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

2018-11-11  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Platform/mac/StringUtilities.mm:
        * UIProcess/ApplicationStateTracker.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

2018-11-10  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Platform/mac/StringUtilities.mm:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::applicationDidEnterBackground):
        (WebKit::ApplicationStateTracker::applicationDidFinishSnapshottingAfterEnteringBackground):
        (WebKit::ApplicationStateTracker::applicationWillEnterForeground):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

2018-11-10  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238065.

        Breaks internal builds.

        Reverted changeset:

        "Make it possible to edit images inline"
        https://bugs.webkit.org/show_bug.cgi?id=191352
        https://trac.webkit.org/changeset/238065

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

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h: Added.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::createForEmbeddedView):
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
        (WebKit::PlatformCALayerRemote::embeddedViewID const):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Propagate EmbeddedViewID through the PlatformCALayer constructor and
        through the layer creation parameters to the UI process.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setEditableImagesEnabled:]):
        (-[WKWebViewConfiguration _editableImagesEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Add a preference to enable editable images.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Keep track of "embedded views" in two maps: embeddedViewID->UIView,
        and layerID->embeddedViewID. Clean them up when layers go away.
        If a embedded view is reparented, currently it must be added to a new
        layer in the same commit as it is removed from the previous layer
        in order to persist the view's state (otherwise the view will be
        destroyed and recreated). This will be less of a problem after future
        patches introduce serialization of image data and whatnot.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        Move the various remote layer tree UIView subclasses out into a separate file.

        Add createEmbeddedView, which is used for LayerTypeEditableImageLayer,
        and creates a WKDrawingView and sticks it in the maps.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: Added.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: Added.
        (-[UIView _web_recursiveFindDescendantInteractibleViewAtPoint:withEvent:]):
        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        (-[WKCompositingView hitTest:withEvent:]):
        (-[WKCompositingView description]):
        (+[WKTransformView layerClass]):
        (+[WKSimpleBackdropView layerClass]):
        (+[WKShapeView layerClass]):
        (-[WKRemoteView initWithFrame:contextID:]):
        (+[WKRemoteView layerClass]):
        (-[WKBackdropView hitTest:withEvent:]):
        (-[WKBackdropView description]):
        (-[WKChildScrollView initWithFrame:]):
        Move various remote layer tree UIView subclasses here, to their own file.
        Make our UIView hit testing override test for views that conform to the
        protocol "WKNativelyInteractible", which switches to normal UIView hit
        testing. WKDrawingView will be the one such view.

        Add WKChildScrollView and pull the one thing we customize out into it,
        to make RemoteLayerTreeHost::createLayer less logic-ful.

        * UIProcess/ios/WKDrawingView.h: Added.
        * UIProcess/ios/WKDrawingView.mm: Added.
        (-[WKDrawingView init]):
        (-[WKDrawingView layoutSubviews]):
        Add a very simple WKDrawingView, which uses PKCanvasView to edit the image.

        * WebKit.xcodeproj/project.pbxproj:
        * SourcesCocoa.txt:
        Add the new files.

2018-11-09  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::layerFlushThrottlingIsActive const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::scheduleInitialDeferredPaint):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::layerFlushThrottlingIsActive const):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::RemoteLayerTreeDrawingArea::initialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scheduleInitialDeferredPaint):

2018-11-09  John Wilander  <wilander@apple.com>

        Add ability to configure document.cookie lifetime cap through user defaults
        https://bugs.webkit.org/show_bug.cgi?id=191480
        <rdar://problem/45240871>

        Reviewed by Chris Dumez.

        This change makes the capped lifetime in seconds configurable through
        user defaults.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcess::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::didSetAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        (WebKit::NetworkProcessProxy::didSetShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed didSetAgeCapForClientSideCookies().
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setAgeCapForClientSideCookies):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateClientSideCookiesAgeCap):
        (WebKit::ResourceLoadStatisticsMemoryStore::didCreateNetworkProcess):
            New function that handles all the things that need to be done when a network
            process has been created.
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):
            Now just calls the corresponding function on its memory store where all the
            configuration parameters are available.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setAgeCapForClientSideCookies):
        (WebKit::WebsiteDataStore::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-11-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238047.

        Introduced layout test failures on iOS simulator.

        Reverted changeset:

        "[iOS] Draw caps lock indicator in password fields"
        https://bugs.webkit.org/show_bug.cgi?id=190565
        https://trac.webkit.org/changeset/238047

2018-11-09  Chris Dumez  <cdumez@apple.com>

        Suspended page persists even after back/forward list item is gone
        https://bugs.webkit.org/show_bug.cgi?id=191488
        <rdar://problem/45953006>

        Reviewed by Geoffrey Garen.

        Currently, the WebProcessPool owns the SuspendedPageProxy objects and makes sure we cap how
        many we can have. The WebBackForwardListItem merely has a WeakPtr to its associated
        SuspendedPageProxy. However, there is no point in having the WebProcessPool keeping a
        SuspendedPageProxy object alive if there is no longer any WebBackForwardListItem pointing
        to it.

        To address the issue, WebBackForwardListItem nows tells the WebProcessPool to destroy
        its SuspendedPageProxy when necessary. WebBackForwardList also takes care of nulling
        out the WebBackForwardListItem's SuspendedPageProxy after the item has been removed
        from the list (in case somebody keeps the item alive).

        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::~WebBackForwardListItem):
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        (WebKit::WebBackForwardListItem::suspendedPageIsNoLongerNeeded):
        * Shared/WebBackForwardListItem.h:
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::didRemoveItem):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::removeSuspendedPageProxy):
        * UIProcess/WebProcessPool.h:

2018-11-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Implement SPI on WKWebView to increase and decrease list levels
        https://bugs.webkit.org/show_bug.cgi?id=191471
        <rdar://problem/45952472>

        Reviewed by Tim Horton.

        Implement these method stubs by calling into Editor.

        Test: WKWebViewEditActions.ModifyListLevel

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):

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

        Unreviewed build fix after https://bugs.webkit.org/show_bug.cgi?id=191324

        Remove the use of .xcfilelists until their side-effects are better
        understood.

        * WebKit.xcodeproj/project.pbxproj:

2018-11-09  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl][WebKit] Implement Proxy configuration API.
        https://bugs.webkit.org/show_bug.cgi?id=189053

        Reviewed by Youenn Fablet.

        Added proxy configuration API to WebsiteDataStore. Three API were added in WKWebsiteDataStoreRefCurl.h:
        - WKWebsiteDataStoreEnableDefaultNetworkProxySettings(WKWebsiteDataStoreRef)
        - WKWebsiteDataStoreEnableCustomNetworkProxySettings(WKWebsiteDataStoreRef, WKURLRef, WKStringRef ignoreHosts)
        - WKWebsiteDataStoreDisableNetworkProxySettings(WKWebsiteDataStoreRef)

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::setNetworkProxySettings):
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl):
        * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * PlatformWin.cmake:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<CurlProxySettings>::encode):
        (IPC::ArgumentCoder<CurlProxySettings>::decode):
        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.cpp:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        (WKWebsiteDataStoreEnableDefaultNetworkProxySettings):
        (WKWebsiteDataStoreEnableCustomNetworkProxySettings):
        (WKWebsiteDataStoreDisableNetworkProxySettings):
        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.h:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::networkProxySettings const):
        * UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        (WebKit::WebsiteDataStore::platformSetParameters):
        (WebKit::WebsiteDataStore::setNetworkProxySettings):

2018-11-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Introduce WKWebView SPI to insert nested ordered and unordered lists
        https://bugs.webkit.org/show_bug.cgi?id=191410
        <rdar://problem/45898610>

        Reviewed by Dean Jackson.

        Prefixes a few iOS-only SPI methods declared on WKWebView in r236867 with underscores, and also exposes some
        more cross-platform Cocoa editing SPI. Once the unprefixed SPI methods are no longer used by internal clients,
        these will need to be removed (see followup bug: webkit.org/b/191450). See below for more details.

        Covered by new and existing API tests in WKWebViewEditActions.

        * UIProcess/API/Cocoa/WKWebView.mm:

        Hoist the definition (and undefinition) of `FORWARD_ACTION_TO_WKCONTENTVIEW` to encompass both the WKWebView
        implementation and the WKWebView (WKPrivate) implementation. This allows us to use this macro when implementing
        SPI methods in the WKPrivate category, as well as methods that are part of the main WKWebView implementation.

        (-[WKWebView canPerformAction:withSender:]):
        (-[WKWebView targetForAction:withSender:]):

        Add forwarding for the new editing commands in -canPerformAction: and -targetForAction:.

        (-[WKWebView _toggleStrikeThrough:]):
        (-[WKWebView _increaseListLevel:]):
        (-[WKWebView _decreaseListLevel:]):
        (-[WKWebView _changeListType:]):
        (-[WKWebView _setFont:sender:]):
        (-[WKWebView _setFontSize:sender:]):
        (-[WKWebView _setTextColor:sender:]):

        Add definitions for the new editing methods on WKWebView, using macros (`WEBCORE_PRIVATE_COMMAND` on macOS and
        `FORWARD_ACTION_TO_WKCONTENTVIEW` on iOS) to help reduce the code duplication.

        (-[WKWebView _pasteAsQuotation:]): Deleted.

        Remove this method definition, which is now replaced by macros on iOS and macOS.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Introduce the new SPI to WKWebView (WKPrivate), and add FIXMEs to remove old, unprefixed variants of the SPI.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::increaseListLevel):
        (WebKit::WebPageProxy::decreaseListLevel):
        (WebKit::WebPageProxy::changeListType):

        Add plumbing for these list editing commands.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _increaseListLevelForWebView:]):
        (-[WKContentView _decreaseListLevelForWebView:]):
        (-[WKContentView _changeListTypeForWebView:]):
        (-[WKContentView _toggleStrikeThroughForWebView:]):
        (-[WKContentView _setFontForWebView:sender:]):
        (-[WKContentView _setFontSizeForWebView:sender:]):
        (-[WKContentView _setTextColorForWebView:sender:]):
        (-[WKContentView toggleStrikeThroughForWebView:]):
        (-[WKContentView setFontForWebView:sender:]):
        (-[WKContentView setFontSizeForWebView:sender:]):
        (-[WKContentView setTextColorForWebView:sender:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):

        Check for the new action selectors here, and additionally add validation for `_pasteAsQuotation:`. Let the
        unprefixed versions of these methods simply call the prefixed versions (these method implementations will be
        removed in a followup once doing so would not affect any clients of WebKit).

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Add stubs for several list editing commands that are yet to be hooked up to WebCore. These will be implemented
        in a future patch.

2018-11-09  Antti Koivisto  <antti@apple.com>

        Use OptionSet for layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=191470

        Reviewed by Dean Jackson.

        * Shared/API/Cocoa/_WKRenderingProgressEventsInternal.h:
        (renderingProgressEvents):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toWKLayoutMilestones):
        (WebKit::toLayoutMilestones):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::newlyReachedLayoutMilestones const):
        (WebKit::RemoteLayerTreeTransaction::setNewlyReachedLayoutMilestones):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didReachLayoutMilestone):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::renderingProgressDidChange):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
        (pageRenderingProgressEvents):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (layoutMilestones):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::renderingProgressDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::listenForLayoutMilestones):
        (WebKit::WebPageProxy::didLayoutForCustomContentProvider):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didCommitLayerTree):
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::didReachLayoutMilestone):
        (API::InjectedBundle::PageLoaderClient::layoutMilestones const):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::didReachLayoutMilestone):
        (WebKit::InjectedBundlePageLoaderClient::layoutMilestones const):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        (WebKit::RemoteLayerTreeDrawingArea::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::listenForLayoutMilestones):
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones):
        (WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone):

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Notify the WebContent process with the current modifer state on window activation changes. Notify
        the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
        (-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
        keyboard flags changed event.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
        Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
        one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
        so that we toggle visibility of the caps lock indicator.

2018-11-09  Tim Horton  <timothy_horton@apple.com>

        Make use of _UIRemoteView instead of CALayerHost if possible for WKRemoteView
        https://bugs.webkit.org/show_bug.cgi?id=191449
        <rdar://problem/45884977>

        Reviewed by Eric Carlson.

        UIRemoteView has some nice process assertion management that it would
        be nice to not duplicate. So, we can just use it instead of CALayerHost!

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::page const):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (-[WKUIRemoteView hitTest:withEvent:]):
        (-[WKUIRemoteView description]):
        (createRemoteView):
        (WebKit::RemoteLayerTreeHost::createLayer):

2018-11-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Make screen capture an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=191472
        <rdar://problem/45946499>

        Reviewed by Jer Noble.

        * Shared/WebPreferences.yaml: Make ScreenCaptureEnabled an experimental feature.

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Pressing forward delete key in text field does nothing and we should not invoke an editor
        action when forward delete is pressed outside a text field
        https://bugs.webkit.org/show_bug.cgi?id=190566
        <rdar://problem/45262367>

        Reviewed by Wenson Hsieh.

        Override -_deleteForwardAndNotify to perform a forward deletion and remove the dead code that
        expected UIKit to send us a character string with 0xF728 for the forward delete key. UIKit
        ceased doing this many years ago. We may revist this decision once <rdar://problem/45772078>
        is fixed.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):
        (-[WKContentView _deleteForwardAndNotify:]):

2018-11-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the 32-bit macOS build

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showDefinitionForAttributedString):

2018-11-08  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an SPI to allow WebView clients to add additional supported image formats
        https://bugs.webkit.org/show_bug.cgi?id=190454

        Reviewed by Simon Fraser.

        * Platform/mac/StringUtilities.h:
        * Platform/mac/StringUtilities.mm:
        (WebKit::webCoreStringVectorFromNSStringArray):
        A helper function which converts an NSArray of NSStrings to a Vector of
        WTFString.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Handle encoding and decoding the AdditionalSupportedImageTypes which will
        allow transferring it from the UI process to the web process.

        * UIProcess/API/APIPageConfiguration.h:
        (API::PageConfiguration::additionalSupportedImageTypes const):
        (API::PageConfiguration::setAdditionalSupportedImageTypes):
        Store the AdditionalSupportedImageTypes in the APIPageConfiguration
        which is used when creating the WebPageProxy in the UIPorcess.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _additionalSupportedImageTypes]):
        (-[WKWebViewConfiguration _setAdditionalSupportedImageTypes:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Setter/Getter for the AdditionalSupportedImageTypes.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        Copy the AdditionalSupportedImageTypes from APIPageConfiguration to 
        WebPageCreationParameters.

        * UIProcess/WebPageProxy.h:
        Delete unimplemented function.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        Copy the AdditionalSupportedImageTypes from WebPageCreationParameters to
        WebCore.

2018-11-08  Megan Gardner  <megan_gardner@apple.com>

        Adopt Reveal Framework to replace Lookup
        https://bugs.webkit.org/show_bug.cgi?id=191097
        <rdar://problem/45924508>

        Reviewed by Tim Horton.

        Pass in what it needed to clear the textIndicators. This is better than
        the current notification structure.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver dealloc]):
        (-[WKWindowVisibilityObserver startObservingLookupDismissalIfNeeded]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::didPerformDictionaryLookup):
        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _animationControllerForText]):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showDefinitionForAttributedString):

        Generate and pass in the text indicator information, as this is needed now.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::dictionaryPopupInfoForSelectionInPDFPlugin):

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

        Create .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191324
        <rdar://problem/45852819>

        Reviewed by Alex Christensen.

        As part of preparing for enabling XCBuild, create and use .xcfilelist
        files. These files are using during Run Script build phases in an
        Xcode project. If a Run Script build phase produces new files that are
        used later as inputs to subsequent build phases, XCBuild needs to know
        about these files. These files can be either specified in an "output
        files" section of the Run Script phase editor, or in .xcfilelist files
        that are associated with the Run Script build phase.

        This patch takes the second approach. It consists of three sets of changes:

        - Modify the DerivedSources.make files to have a
          'print_all_generated_files" target that produces a list of the files
          they create.

        - Create a shell script that produces .xcfilelist files from the
          output of the previous step, as well as for the files created in the
          Generate Unified Sources build steps.

        - Add the new .xcfilelist files to the associated projects.

        Note that, with these changes, the Xcode workspace and projects can no
        longer be fully loaded into Xcode 9. Xcode will attempt to load the
        projects that have .xcfilelist files associated with them, but will
        fail and display a placeholder for those projects instead. It's
        expected that all developers are using Xcode 10 by now and that not
        being able to load into Xcode 9 is not a practical issue. Keep in mind
        that this is strictly an IDE issue, and that the projects can still be
        built with `xcodebuild`.

        Also note that the shell script that creates the .xcfilelist files can
        also be used to verify that the set of files that's currently checked
        in is up-to-date. This checking can be used as part of a check-in hook
        or part of check-webkit-style to sooner catch cases where the
        .xcfilelist files need to be regenerated.

        * DerivedSources.make:
        * DerivedSources.xcfilelist: Added.
        * UnifiedSources.xcfilelist: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-11-08  Timothy Hatcher  <timothy@apple.com>

        Add experimental support for a `supported-color-schemes` CSS property.
        https://bugs.webkit.org/show_bug.cgi?id=191319
        rdar://problem/45852261

        Reviewed by Dean Jackson.

        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect):

2018-11-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use DeviceIdHashSaltStorage to generate device ID hash salt
        https://bugs.webkit.org/show_bug.cgi?id=190825
        <rdar://problem/45486085>

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKUserMediaPermissionCheck.cpp:
        (WKUserMediaPermissionCheckSetUserMediaAccessInfo):
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp:
        (webkitDeviceInfoPermissionRequestAllow):
        (webkitDeviceInfoPermissionRequestDeny):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::regenerateDeviceIdHashSaltForOrigin):
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigin):
        * UIProcess/DeviceIdHashSaltStorage.h:
        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
        * UIProcess/UserMediaPermissionCheckProxy.h:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        (WebKit::UserMediaPermissionRequestManagerProxy::updateDeviceIDHashSalt):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt const): Deleted.

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

        [GTK] Crash when running with sandbox enabled
        https://bugs.webkit.org/show_bug.cgi?id=191353

        Reviewed by Michael Catanzaro.

        g_key_file_set_string_list() expects a null-terminated array as parameter.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::createFlatpakInfo): Append nullptr to sharedPermissions array.

2018-11-07  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _EVOrganizationName]):

2018-11-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Enable cap on partitioned cache max age
        https://bugs.webkit.org/show_bug.cgi?id=191395
        <rdar://problem/45885977>

        Reviewed by Chris Dumez.

        This change does not bump the network cache revision number.
        It's not needed since it was done just a week ago.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setCacheMaxAgeCap):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCacheMaxAgeCap):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):

2018-11-07  Daniel Bates  <dabates@apple.com>

        [iOS] Support deleting to the start of the line and to the end of the line
        https://bugs.webkit.org/show_bug.cgi?id=191389
        <rdar://problem/45883972>

        Reviewed by Wenson Hsieh.

        Add support for the key commands Command + Delete and Control + K to delete to the start
        of the line and to delete to the end of the line, respectively.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _deleteToStartOfLine]): Added.
        (-[WKContentView _deleteToEndOfLine]): Added.

2018-11-07  Daniel Bates  <dabates@apple.com>

        [iOS] Option + Delete should delete previous word
        https://bugs.webkit.org/show_bug.cgi?id=191381
        <rdar://problem/23681351>

        Reviewed by Wenson Hsieh.

        Implement support for pressing Option + Delete to delete the previous word. This makes text editing
        in WebKit more closely match the platform conventions.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _deleteByWord]):

2018-11-07  Daniel Bates  <dabates@apple.com>

        Override +[UIKeyboard isInHardwareKeyboardMode] in WebKitTestRunner and DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=190141

        Reviewed by Darin Adler.

        Directly use +[UIKeyboard isInHardwareKeyboardMode]. We will override this class method
        in DumpRenderTree and WebKitTestRunner to always return NO so as to make test runs
        deterministic regardless of whether a hardware keyboard is attached.

        * Shared/NativeWebKeyboardEvent.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        (WebKit::isInHardwareKeyboardMode): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):

2018-11-07  Zamiul Haque  <zhaque@apple.com>

        Force a gregorian calendar to show for credit card expiration date inputs
        (autocomplete='cc-exp'*) regardless of default system settings.
        https://bugs.webkit.org/show_bug.cgi?id=191096
        rdar://problem/42640256

        Reviewed by Tim Horton.

        Added some plumbing code to expose the calendar identifier of the calendar used by a
        presented date picker. Added shouldPresentGregorianCalendar:, to be used for
        determining what property values a date input control must present a Gregorian
        calendar for.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView formInputPeripheral]):
        * UIProcess/ios/forms/WKFormInputControl.mm:

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

        Unreviewed. Fix GTK/WPE build when memfd is not available after r237922.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::createSharedMemory):

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

        [Linux] Use memfd_create when available in SharedMemory implementation
        https://bugs.webkit.org/show_bug.cgi?id=189741

        Reviewed by Michael Catanzaro.

        If memfd is available, use it instead of shm_open.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::createSharedMemory): Helper to create the shared memory, trying first with memfd and falling back to
        shm if it's not available.
        (WebKit::SharedMemory::create): Use createSharedMemory() helper.

2018-11-06  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain
        https://bugs.webkit.org/show_bug.cgi?id=191291

        Reviewed by Myles Maxfield.

        Properly disable WEBGPU on all non-Metal platforms for now.

        * Configurations/FeatureDefines.xcconfig:

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Make mDNS ICE Candidate an experimental flag again
        https://bugs.webkit.org/show_bug.cgi?id=191262

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebRTCMDNSICECandidatesEnabled):
        (WKPreferencesGetWebRTCMDNSICECandidatesEnabled):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-11-06  Suresh Koppisetty  <skoppisetty@apple.com>

        Don’t use the main queue to create an XPC connection.
        https://bugs.webkit.org/show_bug.cgi?id=191160
        <rdar://problem/45736262>

        Reviewed by Geoffrey Garen.

        Don't use the main queue to create an XPC connection. xpc_connection_set_bootstrap does
        dispatch_mach_send_barrier_f on this queue which delays the sending of the subsequent
        bootstrap message (sent to launchd for launching a new target process) when the main queue is busy.

        Now that the XPC connection runs on the default concurrent queue, errorHandler could be invoked
        by any thread. The job of errorHandler is to dispatch errorHandlerImpl to the main thread,
        where errorHandlerImpl is responsible for the actual handling of errors if any.

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

2018-11-06  Brian Burg  <bburg@apple.com>

        Add missing iOS availability macro to _WKAutomationSessionConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=191320

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:

2018-11-06  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove cap on partitioned cache max age if it matches a network reload (redirect-only)
        https://bugs.webkit.org/show_bug.cgi?id=189760
        <rdar://problem/44612242>

        Reviewed by Youenn Fablet and Antti Koivisto.

        When a redirect cache entry for a prevalent resource reaches its max
        age cap, it is loaded again from the network and the network response
        is compared with what's in the cache. If it's a match, the cache entry
        is fully accepted. If not, a new capped cache entry is created.

        This feature is still off by default.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::canUseCachedRedirect const):
            Now checks the new member m_cacheEntryForMaxAgeCapValidation.
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
            New case handled for entry->hasReachedPrevalentResourceAgeCap().
        (WebKit::NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation):
            This is where the new logic compares the incoming redirect with the
            cached one. If they match, an uncapped entry is allowed to be stored.
            If they don't match, a new capped entry will be stored.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
            Now calls the new
            NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation()
            function.
        * NetworkProcess/NetworkResourceLoader.h:
            Added the m_cacheEntryForMaxAgeCapValidation member.
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeUseDecision):
            Restored to previous behavior which means
            UseDecision::NoDueToPrevalentResourceAgeCap was removed.
        (WebKit::NetworkCache::Cache::retrieve):
            Restored to previous behavior.
        (WebKit::NetworkCache::Cache::storeRedirect):
            Now takes the optional maxAgeCap and caps the entry's max age if it's set.
        (WebKit::NetworkCache::hasReachedPrevalentResourceAgeCap): Deleted.
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::encodeAsStorageRecord const):
            Now encodes m_maxAgeCap.
        (WebKit::NetworkCache::Entry::decodeStorageRecord):
            Now decodes m_maxAgeCap.
        (WebKit::NetworkCache::Entry::hasReachedPrevalentResourceAgeCap const):
            Added.
        (WebKit::NetworkCache::Entry::capMaxAge):
            Added.
        * NetworkProcess/cache/NetworkCacheEntry.h:
            Added the optional m_maxAgeCap.
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
            Now gets the optional max age cap from the NetworkStorageSession and sends it
            to Cache::storeRedirect().
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
            Removed handling of UseDecision::NoDueToPrevalentResourceAgeCap.

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

        REGRESSION (r230523): Caps lock indicator not shown in password field
        https://bugs.webkit.org/show_bug.cgi?id=190056

        Reviewed by Ryosuke Niwa.

        Update cached modifier state in the WebProcess when WebKit::WebPage::keyEvent is called, and
        when the window becomes active.

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

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

        Add ObjC SPI equivalent of WKContextHandlesSafeBrowsing
        https://bugs.webkit.org/show_bug.cgi?id=191329

        Reviewed by Tim Horton.

        Like WKContextHandlesSafeBrowsing, this is so I can make one change in WebKit and enable safe browsing
        in WKWebView and disable it in Safari at the same time without broken revisions between landing two changes
        in two repositories.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (+[WKWebView handlesSafeBrowsing]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2018-11-06  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

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

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Unreviewed build fix of ports not ENABLE(MEDIA_STREAM).

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Define getRequestAction only if ENABLE(MEDIA_STREAM).
        * UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto.

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

        [Mac] Implement safe browsing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=188871

        Reviewed by Tim Horton.

        * Platform/spi/Cocoa/SafeBrowsingSPI.h:
        * Resources/SafeBrowsing.xcassets: Added.
        * Resources/SafeBrowsing.xcassets/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningBackground.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningBackground.colorset/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningText.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningText.colorset/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningTitle.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningTitle.colorset/Contents.json: Added.
        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextHandlesSafeBrowsing):
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm:
        (WebKit::malwareDetailsBase):
        (WebKit::learnMore):
        (WebKit::reportAnErrorBase):
        (WebKit::localizedProvider):
        (WebKit::SafeBrowsingResult::SafeBrowsingResult):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h: Added.
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm: Added.
        (confirmMalwareSentinel):
        (visitUnsafeWebsiteSentinel):
        (colorNamed):
        (replace):
        (addLinkAndReplace):
        (-[WKSafeBrowsingExclamationPoint drawRect:]):
        (-[WKSafeBrowsingExclamationPoint intrinsicContentSize]):
        (reportAnErrorURL):
        (malwareDetailsURL):
        (titleText):
        (warningText):
        (detailsText):
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]):
        (-[WKSafeBrowsingWarning dealloc]):
        (-[WKSafeBrowsingWarning goBackClicked]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (+[WKSafeBrowsingTextView viewWithAttributedString:linkTarget:]):
        (+[WKSafeBrowsingTextView viewWithString:]):
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        (-[WKSafeBrowsingTextView clickedOnLink:atIndex:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::clearSafeBrowsingWarning):
        (WebKit::WebViewImpl::setFrameSize):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        (WebKit::PageClient::clearSafeBrowsingWarning):
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::url const):
        (WebKit::SafeBrowsingResult::provider const):
        (WebKit::SafeBrowsingResult::localizedProviderName const):
        (WebKit::SafeBrowsingResult::malwareDetailsURLBase const):
        (WebKit::SafeBrowsingResult::reportAnErrorURLBase const):
        (WebKit::SafeBrowsingResult::learnMoreURL const):
        (WebKit::SafeBrowsingResult::needsSafeBrowsingWarning const):
        (WebKit::SafeBrowsingResult::isKnownToBeUnsafe const): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setImpl):
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        * WebKit.xcodeproj/project.pbxproj:

2018-11-05  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Remove BackingStore, BackingStoreCairo implementation files from build
        https://bugs.webkit.org/show_bug.cgi?id=191269

        Reviewed by Michael Catanzaro.

        * SourcesWPE.txt: Drop the BackingStore.cpp and BackingStoreCairo.cpp
        files from the WPE build. These are not used at all in WPE configuration
        as they are only used by the GTK+ port for non-AC functionality.

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

        Use same limit for page cache and suspended pages
        https://bugs.webkit.org/show_bug.cgi?id=191266

        Reviewed by Geoffrey Garen.

        Use same limit for page cache and suspended pages as they serve the same purpose.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _maximumSuspendedPageCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::updateMaxSuspendedPageCount):
        (WebKit::WebProcessPool::setCacheModel):
        (WebKit::WebProcessPool::addSuspendedPageProxy):
        * UIProcess/WebProcessPool.h:

2018-11-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Allow WKWebView clients to customize bar button item groups in the accessory view when editing
        https://bugs.webkit.org/show_bug.cgi?id=191240
        <rdar://problem/44872806>

        Reviewed by Tim Horton.

        Allow WKWebView clients to override WKContentView's default input assistant item by plumbing the call to
        `-inputAssistantItem` through `-[WKWebView inputAssistantItem]`, such that if a client asks WKWebView for its
        input assistant item and changes its leading or trailing bar button groups, the changes will be reflected by
        WKContentView; additionally, this allows clients to achieve the same effect by overriding `-inputAssistantItem`
        on WKWebView.

        Test:   KeyboardInputTests.ModifyInputAssistantItemBarButtonGroups
                KeyboardInputTests.OverrideInputAssistantItemBarButtonGroups

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView inputAssistantItem]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView inputAssistantItem]):

        Route the call to `[super inputAssistantItem]` through `-[WKWebView inputAssistantItem]`, so that the input
        assistant item may be overridden via WKWebView.

        (-[WKContentView inputAssistantItemForWebView]):

2018-11-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237785.

        Introduced layout test and API test failures on macOS and iOS.

        Reverted changeset:

        "[iOS] Issue initial paint soon after the visuallyNonEmpty
        milestone is fired."
        https://bugs.webkit.org/show_bug.cgi?id=191078
        https://trac.webkit.org/changeset/237785

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

        Unreviewed, rolling out r237784 and r237788.
        https://bugs.webkit.org/show_bug.cgi?id=191270

        Caused mediastream layout test failures (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "[MediaStream] User should not be prompted again after denying
        getDisplayMedia request"
        https://bugs.webkit.org/show_bug.cgi?id=191227
        https://trac.webkit.org/changeset/237784

        "[MediaStream] User should not be prompted again after denying
        getDisplayMedia request"
        https://bugs.webkit.org/show_bug.cgi?id=191227
        https://trac.webkit.org/changeset/237788

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

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Unreviewed build fix of ports not ENABLE(MEDIA_STREAM).

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Define getRequestAction only if ENABLE(MEDIA_STREAM).
        * UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto.

2018-11-04  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::layerFlushThrottlingIsActive const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::scheduleInitialDeferredPaint):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::layerFlushThrottlingIsActive const):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::RemoteLayerTreeDrawingArea::initialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scheduleInitialDeferredPaint):

2018-11-04  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

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

        Mac production builds should sign the network process xpc service with entitlements
        https://bugs.webkit.org/show_bug.cgi?id=191209
        <rdar://problem/45377609>

        Reviewed by Geoff Garen.

        * Configurations/Network-OSX.entitlements: Copied from Configurations/Network-OSX-sandbox.entitlements.
        * Configurations/NetworkService.xcconfig:
        Set CODE_SIGN_ENTITLEMENTS_COCOA_TOUCH_NO like we do for the web process,
        except with the corresponoding network process entitlements file.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _networkProcessHasEntitlementForTesting:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::networkProcessHasEntitlementForTesting):
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:
        Add infrastructure to test that the network process actually has an entitlement.

2018-11-03  Philippe Normand  <pnormand@igalia.com>

        [WPE] Add the WebKitVersion.h header
        https://bugs.webkit.org/show_bug.cgi?id=191015
        <rdar://problem/45647211>

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake: Install the generated header as well.

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

        Unreviewed, rolling out r237761.

        Makes most API tests timeout and WK2 tests crash

        Reverted changeset:

        "Mac production builds should sign the network process xpc
        service with entitlements"
        https://bugs.webkit.org/show_bug.cgi?id=191209
        https://trac.webkit.org/changeset/237761

2018-11-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the build with recent SDKs.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceExit):

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

        Mac production builds should sign the network process xpc service with entitlements
        https://bugs.webkit.org/show_bug.cgi?id=191209
        <rdar://problem/45377609>

        Reviewed by Geoff Garen.

        * Configurations/NetworkService.xcconfig:
        Set CODE_SIGN_ENTITLEMENTS_COCOA_TOUCH_NO like we do for the web process,
        except with the corresponoding network process entitlements file.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _networkProcessHasEntitlementForTesting:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::networkProcessHasEntitlementForTesting):
        * UIProcess/WebProcessPool.h:
        Add infrastructure to test that the network process actually has an entitlement.

2018-11-02  Daniel Bates  <dabates@apple.com>

        [iOS] WebKit should dispatch DOM events when a modifier key is pressed
        https://bugs.webkit.org/show_bug.cgi?id=190487

        Reviewed by Tim Horton.

        Add support for modifier flags change events dispatched by UIKit.

        * Shared/ios/WebIOSEventFactory.mm:
        (modifiersForEvent): Update for renamed enumerations.
        (WebIOSEventFactory::createWebKeyboardEvent): Modifier keys do not have an associated
        character and do not participate in key repeat.
        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Update for renamed enumerations.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]): Return NO if the event represents a
        modifier flags change to allow the default handling.
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]): Update for renamed enumerations.

2018-11-02  Chris Dumez  <cdumez@apple.com>

        [PSON] Reuse SuspendedPages' process when possible, for performance
        https://bugs.webkit.org/show_bug.cgi?id=191166

        Reviewed by Geoffrey Garen.

        When process-swapping check if there is an existing SuspendedPage for the domain we're going to.
        If there is, use this SuspendedPage's process for the navigation instead of a fresh new process.
        This change should be beneficial for performance as it:
        - Avoids spinning up a new process (CPU & memory cost)
        - Likely better leverages caches since this process already loaded this domain in the past

        Due to current limitations, using a SuspendedPage's proxy may consume the SuspendedPage, which
        means that it can no longer be used for PageCache on history navigations. We need to do this when
        the SuspendedPageProxy in question was created for the current WebPageProxy because:
        - This SuspendedPageProxy's process already has a suspended WebPage with this WebPageProxy's pageID
        and
        - We do not currently support having more than one WebPage with a given pageID within a single
          WebProcess.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

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

        Rename <wtf/unicode/UTF8.h> to <wtf/unicode/UTF8Conversion.h> in order to avoid conflicting with ICU's unicode/utf8.h
        https://bugs.webkit.org/show_bug.cgi?id=189693

        Reviewed by Yusuke Suzuki.

        * Shared/API/APIString.h: Replaced <wtf/unicode/UTF8.h> with <wtf/unicode/UTF8Conversion.h>.

2018-11-01  Daniel Bates  <dabates@apple.com>

        Cleanup: Extraneous platform guarding of -_setUpSQLiteDatabaseTrackerClient
        https://bugs.webkit.org/show_bug.cgi?id=191124

        Reviewed by Tim Horton.

        Remove the platform guard around the call to -_setUpSQLiteDatabaseTrackerClient as the
        implementation of that message is already guarded.

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

2018-11-01  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the build with recent SDKs.

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

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

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

        Reviewed by Chris Dumez.

        Add SPI for testing.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::setIDBPerOriginQuota):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetIDBPerOriginQuota):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setIDBPerOriginQuota):
        * UIProcess/WebProcessPool.h:

2018-11-01  Chris Dumez  <cdumez@apple.com>

        [PSON] WebPageProxy::receivedNavigationPolicyDecision() should not schedule the new load asynchronously when process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=191076

        Reviewed by Geoffrey Garen.

        WebPageProxy::receivedNavigationPolicyDecision() should not schedule the new load asynchronously when process-swapping.
        The client can request a new load synchronously after answering the policy decision, in which case we'd end up loading
        the wrong URL.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:

2018-11-01  Chris Dumez  <cdumez@apple.com>

        [PSON] Unable to submit a file in FormData cross-site
        https://bugs.webkit.org/show_bug.cgi?id=191138

        Reviewed by Alex Christensen.

        When PSON is enabled, we are unable to submit a file in FormData cross-site. Although we encode the
        request body over IPC since r237639, we're missing the right sandbox extensions for its to work for
        files.

        Update FormDataReference encoder to pass along the necessary sandbox extensions for files in the
        FormData, and have its decoder consume those extensions so that the recipient has access to those
        files. Also update LoadParameters's IPC encoder / decoder to encoder an IPC::FormDataReference
        (which encodes both FormData and sandbox extensions) instead of a FormData.

        * Platform/IPC/FormDataReference.h:
        (IPC::FormDataReference::encode const):
        (IPC::FormDataReference::decode):
        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):

2018-11-01  Claudio Saavedra  <csaavedra@igalia.com>

        ERROR: ResourceLoadStatisticsPersistentStorage: Unable to delete statistics file
        https://bugs.webkit.org/show_bug.cgi?id=191152

        Reviewed by Chris Dumez.

        The statistics file is not created unconditionally, so
        make sure it exists before logging an error.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::clear):
        Check that the file exists before logging an error.

2018-11-01  Claudio Saavedra  <csaavedra@igalia.com>

        [GLIB] Silent a build warning when not using Wayland

        Unreviewed.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

2018-11-01  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: Add missing headers.

2018-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
        https://bugs.webkit.org/show_bug.cgi?id=191114
        <rdar://problem/45700410>

        Reviewed by Dean Jackson.

        Followup to r237648: also make sure that we insecurely unarchive NSFileWrapper on platforms that don't support
        secure archiving of file wrappers.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::updateFromSerializedRepresentation):

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

        Forward original fragment identifier into System Preview
        https://bugs.webkit.org/show_bug.cgi?id=191141
        <rdar://problem/45717542>

        Reviewed by Wenson Hsieh.

        If the URL used by the page includes a fragment identifier, use
        it when telling QuickLook to open a local file.

        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didFinish): Append original fragment identifier
        to the destination URL.

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [iOS] Do not paint tap highlight unless it is above a certain threshold
        https://bugs.webkit.org/show_bug.cgi?id=191134
        <rdar://problem/43615142>

        Flashing a large portion of the screen on every tap looks unpleasant.
        This patch impoves the existing heuristic by adding area check and a % threshold.  

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showTapHighlight]):
        (highlightedQuadsAreSmallerThanRect): Deleted.

2018-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
        https://bugs.webkit.org/show_bug.cgi?id=191114
        <rdar://problem/45700410>

        Reviewed by Dean Jackson.

        On macOS 10.12, we don't attempt secure archival at all because SECURE_ARCHIVER_API is turned off, and on macOS
        10.14, NSFileWrapper supports secure coding. However, on macOS 10.13, SECURE_ARCHIVER_API is on despite
        NSFileWrapper not being securely codable, so we're unable to serialize attachment data.

        To fix this, we only use the secure archiver on ≥ macOS 10.14 and ≥ iOS 12.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::createSerializedRepresentation const):

2018-10-31  Zach Li  <zacharyli323@gmail.com>

        Add credit card autofill button
        https://bugs.webkit.org/show_bug.cgi?id=191051
        <rdar://problem/45657011>

        Reviewed by Wenson Hsieh.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (toAutoFillButtonType):
        (toWKAutoFillButtonType):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
        Introduce a new button type for credit card autofill.
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        (toAutoFillButtonType):
        (toWKAutoFillButtonType):
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:

2018-10-31  Chris Dumez  <cdumez@apple.com>

        [PSON] When process-swapping for a POST request the HTTP body gets dropped
        https://bugs.webkit.org/show_bug.cgi?id=191046
        <rdar://problem/45229732>

        Reviewed by Alex Christensen.

        For performance reasons, the ResourceRequest IPC encoder does not encode the request's HTTP body (aka form data).
        When we decide to process-swap for a POST request in WebPageProxy::decidePolicyForNavigationAction(), the request
        we pass the new WebProcess thus no longer has a HTTP body and the load will likely fail in the new process.

        To address the issue, we now pass the request body along with the request when sending the DecidePolicyForNavigationActionAsync
        / DecidePolicyForNavigationActionSync IPC from the WebProcess to the UIProcess. No action is needed for the
        LoadRequest IPC to the new WebProcess since the LoadParameters' IPC encoder takes care of encoding the request's
        body already.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-10-31  Antti Koivisto  <antti@apple.com>

        Stop using LayerFlushScheduler in WK2
        https://bugs.webkit.org/show_bug.cgi?id=191065

        Reviewed by Tim Horton.

        Code gets more understandable when TiledCoreAnimationDrawingArea simply uses RunLoopObserver
        directly for flush scheduling. LayerFlushScheduler can be later moved to WK1.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
        (WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver):

2018-10-31  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Certificates loaded from the cache don't include the certificate chain
        https://bugs.webkit.org/show_bug.cgi?id=190956

        Reviewed by Youenn Fablet.

        Similarly to what was done for the IPC coders, serialize
        the entire certificate chain in the cache coder. Bump
        the cache version due to the caching format changes.

        * NetworkProcess/cache/NetworkCacheCoders.h: Add GRefPtr<GByteArray> coders.
        * NetworkProcess/cache/NetworkCacheCodersSoup.cpp:
        (WTF::Persistence::certificatesDataListFromCertificateInfo):
        (WTF::Persistence::certificateFromCertificatesDataList): Helpers.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::encode):
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::decode):
        * NetworkProcess/cache/NetworkCacheStorage.h: Bump the cache version.

2018-10-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Attachment dropped from one web view to another is missing its file wrapper
        https://bugs.webkit.org/show_bug.cgi?id=190530
        <rdar://problem/45232149>

        Reviewed by Tim Horton.

        See WebCore ChangeLog for more details.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<SerializedAttachmentData>::encode):
        (IPC::ArgumentCoder<SerializedAttachmentData>::decode):
        * Shared/WebCoreArgumentCoders.h:

        Add IPC encoding/decoding support for SerializedAttachmentData.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::createSerializedRepresentation const):
        (API::Attachment::updateFromSerializedRepresentation):
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::createSerializedRepresentation const):

        Add a method to serialize and return attachment info as a blob of data.

        (API::Attachment::updateFromSerializedRepresentation):

        Add a method to update the attachment, given a serialized blob of data. On Cocoa platforms, this fails
        gracefully if the serialized data cannot be decoded.

        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance const):
        (WebKit::PageClientImplCocoa::serializableFileWrapperClasses const):
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance): Deleted.

        Add an additional hook to return the list of NSFileWrapper subclasses suitable for deserialization. This
        array contains (at minimum) NSFileWrapper, but may additionally include a custom NSFileWrapper subclass, if
        configured.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::allocFileWrapperInstance const):
        (WebKit::PageClient::serializableFileWrapperClasses const):
        (WebKit::PageClient::allocFileWrapperInstance): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::registerAttachmentsFromSerializedData):

        Registers the given serialized attachment data, creating new _WKAttachment instances if necessary. Currently,
        this does not update the file wrappers of existing _WKAttachments; we should revisit this in the future to see
        if we can additionally update file wrappers for existing attachments, without breaking the case where the user
        copies and pastes or drags and drops attachments within a single web view and the client expects _WKAttachment
        instances to be reused.

        (WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachments):
        (WebKit::WebEditorClient::serializedAttachmentDataForIdentifiers):

        Implement a new IPC hook to fetch an array of serialized attachment data blobs, given a list of attachment
        identifiers.

        * WebProcess/WebCoreSupport/WebEditorClient.h:

2018-10-30  Chris Dumez  <cdumez@apple.com>

        [PSON] View gesture snapshot gets taken down early when process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=191083
        <rdar://problem/45058738>

        Reviewed by Alex Christensen.

        When process-swapping, we would call WebViewImpl::processDidExit(), which would destroy
        the ViewGestureController and thus take down the swipe navigation snapshot before it
        should. We now call WebViewImpl::processDidSwap() instead, which does the same thing,
        except for destroying the ViewGestureController. As a result, the view snapshot stays
        visible as long as it is needed, even in case of process swap.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::handleProcessSwapOrExit):
        (WebKit::WebViewImpl::processWillSwap):
        (WebKit::WebViewImpl::processDidExit):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::processWillSwap):

2018-10-30  Chris Dumez  <cdumez@apple.com>

        [PSON] WebView renders with incorrect dimensions after back or forward
        https://bugs.webkit.org/show_bug.cgi?id=191071
        <rdar://problem/45058950>

        Reviewed by Alex Christensen.

        Make sure WebPage::reinitializeWebPage() updates the page's dimensions if needed using the
        WebPageCreationParameters it is provided.

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

2018-10-30  Dewei Zhu  <dewei_zhu@apple.com>

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' to 'experimental' category.
        https://bugs.webkit.org/show_bug.cgi?id=191049

        Reviewed by Dean Jackson.

        Move the feature flag to experimental feature section.

        * Shared/WebPreferences.yaml:

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

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

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig: Enabled it. Added NSURLDownloadSPI.h as an
        excluded header - WebKit doesn't export NSURLDownload, so the definition
        shouldn't be processed by InstallAPI.

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

        Clean up some obsolete MAX_ALLOWED macros
        https://bugs.webkit.org/show_bug.cgi?id=190916

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
        * Platform/spi/Cocoa/DeviceIdentitySPI.h:
        * Platform/spi/ios/UIKitSPI.h:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultCustomPasteboardDataEnabled):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentRequest):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.

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

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

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

        Reverted changesets:

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

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

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

        Build fix attempt after enabling InstallAPI for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        * Configurations/WebKit.xcconfig: Skip NSURLDownloadSPI.h here too.

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

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

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig: Enabled it.

2018-10-30  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] CoordinatedLayerTreeHost::flushLayersAndForceRepaint() should schedule the flush
        https://bugs.webkit.org/show_bug.cgi?id=191066

        Reviewed by Michael Catanzaro.

        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::flushLayersAndForceRepaint):
        Only schedule the layer flush in this call, don't perform it on the
        spot. This avoids re-entry of the layer flushing process in cases when
        the associated display refresh monitor is requested a callback during
        the layout phase that's executed under the initial layer flush.

2018-10-29  Dewei Zhu  <dewei_zhu@apple.com>

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' to 'experimental' category.
        https://bugs.webkit.org/show_bug.cgi?id=191049

        Reviewed by Chris Dumez.

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' from 'internal' to 'experimental' category.

        * Shared/WebPreferences.yaml:

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Add support for AsyncResolver to resolve MDNS.
        This basically reuse the code path used to resolve STUN server addresses.
        Removed MDNS specific resolution.
        Use existing CFHost resolution mechanism to do the actual resolution.

        Make sure that a resolver is kept alive while iterating through its clients when signaling done.
        Some of its clients may indeed call Destroy() on the resolver during that iteration.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):
        * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCResolver::Destroy):
        (WebKit::LibWebRTCResolver::doDestroy):
        (WebKit::LibWebRTCResolver::setResolvedAddress):
        (WebKit::LibWebRTCResolver::setError):
        (WebKit::LibWebRTCProvider::createPeerConnection):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.cpp:
        * WebProcess/Network/webrtc/WebMDNSRegister.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.messages.in:

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

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

        Reviewed by Dan Bernstein.

        * Resources/WebContentProcess.xib:
        * WebKit.xcodeproj/project.pbxproj:
        * en.lproj/InfoPlist.strings: Renamed from Source/WebKit/English.lproj/InfoPlist.strings.
        English->en

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

        Make FindOptionsShowOverlay work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190551

        Reviewed by Andy Estes.

        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::updateFindUIAfterPageScroll):
        Update the find indicator after installing the page overlay for the find holes.
        This ensures that if the find indicator mechanism also uses page overlays,
        as it does on iOS, that they are installed in the correct order (because
        order of installation directly affects z-order).

        (WebKit::FindController::findIndicatorRadius const):
        (WebKit::FindController::shouldHideFindIndicatorOnScroll const):
        Add two getters for design differences between find-in-page on iOS vs. other platforms.

        (WebKit::FindController::rectsForTextMatchesInRect):
        Return FloatRects instead of IntRects for ease of use in the caller.
        Don't clip rects for matches that intersect the current tile. We still
        drop ones that don't intersect at all, but if they do intersect, we
        provide the full rect (which may overlap a different tile), so that
        e.g. border drawing will work correctly.

        (WebKit::FindController::drawRect):
        Adopt shrink-wrapping for find holes. This has minimal impact on macOS,
        where the holes don't have rounded corners, but on iOS this makes
        overlapping or adjacent holes look great. We already do this for the indicator,
        so it only makes sense to do the same for the holes.

        In order to support shrink-wrapping here, switch to using a Clear operator
        with a path-fill instead of clearRect to clear out the holes.

        Avoid hiding the find indicator on scroll if the platform says not to.

        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::findIndicatorRadius const):
        (WebKit::FindController::shouldHideFindIndicatorOnScroll const):
        Slightly adjust the find indicator's parameters to be compatible with having holes.
        Reduce the horizontal margin by half a point so that it fits precisely in the hole.
        Drop the "TightlyFitContent" text indicator parameter, because we want 
        rects that match the holes, and they do not tightly fit the content's height.
        This matches macOS's behavior.

2018-10-29  Jer Noble  <jer.noble@apple.com>

        CRASH in CoreGraphics: ERROR_CGDataProvider_BufferIsNotBigEnough
        https://bugs.webkit.org/show_bug.cgi?id=190954

        Reviewed by Simon Fraser.

        * Shared/cg/ShareableBitmapCG.cpp:
        (WebKit::ShareableBitmap::makeCGImage):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Guard H264 simulcast with a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=191025

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-29  Chris Dumez  <cdumez@apple.com>

        [PSON] When Safari restores session state after launching, going back and forward does not swap processes
        https://bugs.webkit.org/show_bug.cgi?id=190975
        <rdar://problem/45059256>

        Reviewed by Antti Koivisto.

        When deciding to process-swap or not on a history navigation, we normally check the BackForwardListItems'
        process identifiers do check if they come from different WebProcesses or not. However, the check was invalid
        in the case where the BackForwardListItems were restored by the client. After a session restore, the
        items' process identifier is the UIProcess one. Therefore, we need to disable the BackForwardListItems'
        process identifiers check if if the process identifier is the one of the UIProcess.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        [WebRTC] Enable VP8 by default
        https://bugs.webkit.org/show_bug.cgi?id=190672

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-28  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Add the WebKitVersion.h header
        https://bugs.webkit.org/show_bug.cgi?id=191015

        Reviewed by Michael Catanzaro.

        Add the WebKitVersion.h API header for the WPE port. As with other
        headers providing the GLib API, we have to provide a WPE-specific
        version, but the implementation file can be shared with the GTK port,
        and is moved under the UIProcess/API/glib/ directory accordingly.

        * PlatformWPE.cmake:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitVersion.cpp: Renamed from Source/WebKit/UIProcess/API/gtk/WebKitVersion.cpp.
        * UIProcess/API/wpe/WebKitVersion.h.in: Added.
        * UIProcess/API/wpe/webkit.h:

2018-10-26  Megan Gardner  <megan_gardner@apple.com>

        Remove Unused WebSelectionAssistant
        https://bugs.webkit.org/show_bug.cgi?id=190939

        Reviewed by Tim Horton.

        We made webSelectionAssistant alwasys nil last year when we moved to using
        the textSelectionAssistant for all text selection on the web. This patch merely 
        goes through and cleans out all the references to this object that is always nil.
        No functionality should change.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _didExitStableState]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _scrollingNodeScrollingWillBegin]):
        (-[WKContentView _scrollingNodeScrollingDidEnd]):
        (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _uiTextSelectionRects]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _willStartScrollingOrZooming]):
        (-[WKContentView _didEndScrollingOrZooming]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView _addShortcutForWebView:]):
        (-[WKContentView _showDictionary:]):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView selectionInteractionAssistant]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
        (-[WKContentView _restoreCalloutBarIfNeeded]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView webSelectionAssistant]): Deleted.

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

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

        broke internal iOS builds (Requested by zalan on #webkit).

        Reverted changeset:

        "Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI"
        https://bugs.webkit.org/show_bug.cgi?id=190951
        https://trac.webkit.org/changeset/237458

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

        [PSON] Only delay attaching drawingArea in case of process swap and drop DidCompletePageTransition IPC handshake
        https://bugs.webkit.org/show_bug.cgi?id=190971

        Reviewed by Geoffrey Garen.

        Only delay attaching drawingArea in case of process swap and drop DidCompletePageTransition IPC handshake.

        Since r236257, the WebProcess would always delay attaching the drawing area when a new WebPage is created. The
        WebProcess would send a DidCompletePageTransition IPC to the UIProcess when the page transition is complete and
        the UIProcess would then send an IPC back to attach the drawing area.

        In the new design, WebPageCreationParameters contains a flag indicating if the WebPage should delay attaching
        the drawing area or not. We only delay attaching in case of process swap and we've successfuly suspended the
        previous page. Then when WebPage::didCompletePageTransition(), we stop sending the DidCompletePageTransition
        IPC to the UIProcess and instead have the WebProcess attach the drawing area right away if we've delayed
        attaching until then.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didCompletePageTransition):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

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

        [PSON] Avoid tearing down the drawing area when suspending a WebPage due to process-swap
        https://bugs.webkit.org/show_bug.cgi?id=190879

        Reviewed by Antti Koivisto.

        Avoid tearing down the drawing area when suspending a WebPage due to process-swap. We really only need to reset
        the drawing area upon resuming the WebPage. There is no strict need to destroy the drawing area on suspension
        and this has caused various crashes because code usually assumes we always have a drawing area.

        This patch also drops various drawing area null checks that were added to address PSON crashes.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess): Deleted.
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::invalidateContentsAndRootView):
        (WebKit::WebChromeClient::invalidateContentsForSlowScroll):
        (WebKit::WebChromeClient::contentsSizeChanged const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
        (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::exitAcceleratedCompositingMode):
        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-26  Antti Koivisto  <antti@apple.com>

        Use random() instead of begin() to limit cache sizes
        https://bugs.webkit.org/show_bug.cgi?id=190957

        Reviewed by Chris Dumez.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::didCollectPrewarmInformation):

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

        Modernize / Simplify IPC::Connection::sendOutgoingMessage()
        https://bugs.webkit.org/show_bug.cgi?id=190931

        Reviewed by Alex Christensen.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendOutgoingMessage):

2018-10-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Add an asyncronous reply request to VideoFullscreenManager.

        Drive-by fix: messages.py generates "WTFMove(*arg1, *arg2)" instead of "WTFMove(*arg1), WTFMove(*arg2)"
        in its reply handler generation.

        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply):
        * Scripts/webkit/messages.py:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID):
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID):

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, another try at fixing the GTK build with sandbox enabled

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::memfd_create): Deleted.

2018-10-25  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations CSS Integration off by default
        https://bugs.webkit.org/show_bug.cgi?id=190901

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, try to fix GTK build with sandbox enabled

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

2018-10-25  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Follow-up fixes to the certificate coders
        https://bugs.webkit.org/show_bug.cgi?id=190900

        Reviewed by Michael Catanzaro.

        Cleanup the GRefPtr mess I created earlier. Also we now bail out
        if any certificate in the chain has no data instead of returning a
        cropped chain.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-10-25  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][AC] Resizing the window doesn't always update the visible rect
        https://bugs.webkit.org/show_bug.cgi?id=189743

        Reviewed by Michael Catanzaro.

        Disassociate resizing that can be done on an AcceleratedSurface object
        between "host resizes" and "client resizes".

        The former is done from ThreadedCoordinatedLayerTreeHost directly, and
        is currently used only for GTK on X11, where a new pixmap object is
        created on each resize, which affects the context ID that is based on
        that pixmap object's address.

        The latter is done from the composition thread. It's used for GTK on
        Wayland and WPE. In both cases, the underlying window object does not
        change on each resize, but it's necessary to perform the actual resize
        on the composition thread.

        So far it hasn't been performed there, which ended up pushing sizes of
        the WebKit view and the underlying window object out of sync during
        resizing, leaving parts of window unrendered.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/AcceleratedSurface.cpp:
        (WebKit::AcceleratedSurface::hostResize):
        (WebKit::AcceleratedSurface::resize): Deleted.
        * WebProcess/WebPage/AcceleratedSurface.h:
        (WebKit::AcceleratedSurface::clientResize):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged):
        (WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
        (WebKit::AcceleratedSurfaceWayland::clientResize):
        (WebKit::AcceleratedSurfaceWayland::resize): Deleted.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
        (WebKit::AcceleratedSurfaceX11::hostResize):
        (WebKit::AcceleratedSurfaceX11::resize): Deleted.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::clientResize):
        (WebKit::AcceleratedSurfaceWPE::resize): Deleted.
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h:

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

        Clean up some obsolete macOS version guards
        https://bugs.webkit.org/show_bug.cgi?id=190887

        Reviewed by Dan Bernstein.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-10-24  Megan Gardner  <megan_gardner@apple.com>

        Turn on Conic Gradients
        https://bugs.webkit.org/show_bug.cgi?id=190810

        Reviewed by Tim Horton.

        Remove conic gradients from experimental features and turn it on always.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:

2018-10-24  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Cleanup: MIMETypeRegistry functions
        https://bugs.webkit.org/show_bug.cgi?id=190838

        Reviewed by Simon Fraser.

        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry initWithConfiguration:]):

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

        REGRESSION (r237257): [iOS] Crashes in com.apple.WebKit: WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit
        https://bugs.webkit.org/show_bug.cgi?id=190804

        Reviewed by Alex Christensen.

        Fix null-dereference of the drawing area in RemoteScrollingCoordinator::scheduleTreeStateCommit.
        With process-swap-on-navigation enabled, suspended pages' drawing area gets torn down.

        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
        (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):

2018-10-24  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Cleanups to the certificate decoder
        https://bugs.webkit.org/show_bug.cgi?id=190867

        Reviewed by Žan Doberšek.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-10-24  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Cleanups to the certificate encoder
        https://bugs.webkit.org/show_bug.cgi?id=190865

        Reviewed by Žan Doberšek.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):

2018-10-23  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237261.

        The layout test for this change crashes under GuardMalloc.

        Reverted changeset:

        "Handle MDNS resolution of candidates through libwebrtc
        directly"
        https://bugs.webkit.org/show_bug.cgi?id=190681
        https://trac.webkit.org/changeset/237261

2018-10-23  David Kilzer  <ddkilzer@apple.com>

        Fix false positive leaks when using custom -init methods that don't start with -init
        <https://webkit.org/b/190818>
        <rdar://problem/45476042>

        Reviewed by Dan Bernstein.

        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        (-[WKWebViewContentProvider web_initWithFrame:webView:mimeType:]):
        Add attribute to make this behave like an -init method.

2018-10-23  Chris Dumez  <cdumez@apple.com>

        [PSON] Add support for cross-site client-side redirects
        https://bugs.webkit.org/show_bug.cgi?id=190806
        <rdar://problem/45047344>

        Reviewed by Geoffrey Garen.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setLockHistory):
        (API::Navigation::lockHistory const):
        (API::Navigation::setLockBackForwardList):
        (API::Navigation::lockBackForwardList const):
        (API::Navigation::setClientRedirectSourceForHistory):
        (API::Navigation::clientRedirectSourceForHistory const):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::willPerformClientRedirect):
        (API::NavigationClient::didPerformClientRedirect):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::setURL):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::setCurrentHistoryItemForReattach):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-23  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Pass full certificate chain in CertificateInfo coder
        https://bugs.webkit.org/show_bug.cgi?id=190789

        Reviewed by Michael Catanzaro.

        When the network process serializes certificate data to other
        processes through the argument coders, the certificate chain, if
        present, is lost. In practice this means that applications using
        the public API to process certificate info have no details on the
        certificate chain, other than the very basics included in the
        certificate. Serialize the entire chain if available in the
        certificate.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode): Encode the
        certificate chain if present.
        (IPC::ArgumentCoder<CertificateInfo>::decode): Decode the
        entire certificate chain and rebuild it.

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

        Use Location = "Relative to Build Products" rather than "Relative to Group"
        https://bugs.webkit.org/show_bug.cgi?id=190781

        Reviewed by Alexey Proskuryakov.

        Almost all Derived Files are included in Xcode projects with the
        Location attribute set to "Relative to Group". While this currently
        works, the Derived Files can no longer be found when enabling XCBuild
        (which has stricter requirements). Fix this by setting the Location
        attribute to "Relative to Build Products".

        * WebKit.xcodeproj/project.pbxproj:

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

        Don't waste time under -setupInteraction under -initWithFrame for unparented WKWebViews
        https://bugs.webkit.org/show_bug.cgi?id=190801
        <rdar://problem/43674361>

        Reviewed by Megan Gardner.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView didMoveToWindow]):
        Defer the first call to WKContentViewInteraction's -setupInteraction
        until the view is parented. This avoids a few milliseconds of unnecessary
        work for views that are never parented.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        Keep track of the current state of WKContentViewInteraction's gestures.
        Use this to make it OK to call -setupInteraction multiple times.

2018-10-22  Chris Dumez  <cdumez@apple.com>

        Deque's contains() and findIf() should be const
        https://bugs.webkit.org/show_bug.cgi?id=190796

        Reviewed by Antti Koivisto.

        Mark method as const now that Deque's implementation allows it to be.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor const):
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor): Deleted.
        * UIProcess/WebProcessPool.h:

2018-10-19  Brent Fulgham  <bfulgham@apple.com>

        Allow WebContent process to check some file system features
        https://bugs.webkit.org/show_bug.cgi?id=190768
        <rdar://problem/45377609>

        Reviewed by Alexey Proskuryakov.

        This patch unblocks some IOKit properties that are needed by lower level frameworks to make decisions
        about how to efficiently use the file system.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-10-19  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Search terms are not saved for <input type="search">
        https://bugs.webkit.org/show_bug.cgi?id=188174

        Reviewed by Fujii Hironori.

        Add support for saving the search terms for <input
        type="search"> to a SQLite database, replacing the
        CF-based implementation for Windows and adding support
        for non-legacy WebKit.

        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::saveRecentSearches): Use SQLite database
        implementation in WebCore::SearchPopupMenuDB to save search
        terms
        (WebKit::WebPageProxy::loadRecentSearches): Use SQLite database
        implementation in WebCore::SearchPopupMenuDB to load search
        terms

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        WebDataListSuggestionsDropdown should use a WeakPtr
        https://bugs.webkit.org/show_bug.cgi?id=190763
        <rdar://problem/45417449>

        Reviewed by Tim Horton.

        Nothing suspicious here. It's just good practice to not keep raw pointers that aren't reset when the object they point to are destroyed.

        * UIProcess/WebDataListSuggestionsDropdown.cpp:
        (WebKit::WebDataListSuggestionsDropdown::WebDataListSuggestionsDropdown):
        (WebKit::WebDataListSuggestionsDropdown::close):
        * UIProcess/WebDataListSuggestionsDropdown.h:
        (WebKit::WebDataListSuggestionsDropdown::Client::~Client): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (WebKit::WebDataListSuggestionsDropdownIOS::create):
        (WebKit::WebDataListSuggestionsDropdownIOS::WebDataListSuggestionsDropdownIOS):
        (WebKit::WebDataListSuggestionsDropdownIOS::close):
        (WebKit::WebDataListSuggestionsDropdownIOS::didSelectOption):
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.h:
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (WebKit::WebDataListSuggestionsDropdownMac::create):
        (WebKit::WebDataListSuggestionsDropdownMac::WebDataListSuggestionsDropdownMac):
        (WebKit::WebDataListSuggestionsDropdownMac::didSelectOption):
        (WebKit::WebDataListSuggestionsDropdownMac::selectOption):

2018-10-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] [Datalist] Can't pick datalist suggestions in a stock WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190621
        <rdar://problem/45310649>

        Reviewed by Tim Horton.

        Fixes the bug by refactoring datalist suggestion information on iOS; currently, we override text suggestions on
        _WKFormInputSession. This only works for a few internal clients (including Safari) that set a _WKInputDelegate
        and also implement either -_webView:willStartInputSession: or -_webView:didStartInputSession:, which is
        necessary in order to ensure that WebKit creates and maintains a form input session.

        The two pieces of information that datalist code needs to vend to WKContentView are a list of UITextSuggestions
        and a custom input view, which are both currently properties of _WKFormInputSession. This patch lifts these out
        of the input session and makes them properties of WKContentView, which are used in
        WebDataListSuggestionsDropdownIOS.

        Test: fast/forms/datalist/datalist-textinput-suggestions-order.html

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:

        Add new properties to WKContentView: an input view for datalist suggestions, and a list of text suggestions.

        (-[WKFormInputSession setSuggestions:]):
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _endEditing]):

        Pull out common logic when resigning first responder or tabbing to the next or previous text field into a new
        helper. This helper notifies `_inputPeripheral`, `_formInputSession`, and `_dataListTextSuggestionsInputView`
        when editing has ended; the input peripheral and suggestions input view use this chance to send the value of the
        form control to the web process.

        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView inputView]):

        If a custom input view is not set but we have an input view for a datalist's text suggestions, use the datalist
        input view.

        (-[WKContentView accessoryTab:]):
        (-[WKContentView _stopAssistingNode]):

        Clear datalist state on WKContentView.

        (-[WKContentView dataListTextSuggestionsInputView]):
        (-[WKContentView dataListTextSuggestions]):
        (-[WKContentView setDataListTextSuggestionsInputView:]):
        (-[WKContentView setDataListTextSuggestions:]):
        (-[WKContentView updateTextSuggestionsForInputDelegate]):

        Pull out logic for setting suggestions on UIKit's `inputDelegate` (i.e. UIKeyboardImpl). We now first consult
        internally-vended text suggestions from _WKFormInputSession; if an internal client has not overridden our text
        suggestions, then we simply use suggestions from the current datalist (if present).

        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsPicker updateWithInformation:]):
        (-[WKDataListSuggestionsPicker showSuggestionsDropdown:activationType:]):
        (-[WKDataListSuggestionsPicker invalidate]):
        (-[WKDataListSuggestionsPopover updateWithInformation:]):
        (-[WKDataListSuggestionsPopover showSuggestionsDropdown:activationType:]):
        (-[WKDataListSuggestionsPopover didSelectOptionAtIndex:]):

        Change all the places that currently manipulate WKContentView's form input session to directly set text
        suggestions and the text suggestion input view on the content view instead.

2018-10-19  John Wilander  <wilander@apple.com>

        Only cap lifetime of persistent cookies created client-side through document.cookie when resource load statistics is enabled
        https://bugs.webkit.org/show_bug.cgi?id=190687
        <rdar://problem/45349024>

        Reviewed by Alex Christensen.

        This patch adds the following:
        - The WebProcessPool now tells the WebsiteDataStore when a network process has
            been created.
        - The WebsiteDataStore in turn tells the WebResourceLoadStatisticsStore when
            a network process has been created.
        - The WebResourceLoadStatisticsStore makes sure to update the network processes
            with its cookie policy when it's notified that a network process has been
            created.

        In addition, this patch changes the following:
        - The ResourceLoadStatisticsMemoryStore no longer keeps track of which domains
            it has told the network process to block cookies for. The reason is that
            we cannot assume that there is only one network process so we should
            always send complete blocking data.
        - The ResourceLoadStatisticsMemoryStore's functions for communicating cookie
            blocking state to the network process no longer take and forward the
            "clear first" parameter. This is because complete data is sent every time
            and thus the network process' set is always cleared on an update.
        - Removes WebsiteDataStore::networkProcessDidCrash() and
            WebResourceLoadStatisticsStore::scheduleCookieBlockingStateReset() since
            the call site---WebProcessPool::ensureNetworkProcess()---now calls
            WebsiteDataStore::didCreateNetworkProcess() after a network process
            crash and the state sync for cookie blocking is triggered.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcess::setShouldCapLifetimeForClientSideCookies):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::setShouldCapLifetimeForClientSideCookies):
        (WebKit::NetworkProcessProxy::didSetShouldCapLifetimeForClientSideCookies):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::clear):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlockingForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearBlockingStateForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::resetCookieBlockingState): Deleted.
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingStateReset): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebsiteDataStore::setShouldCapLifetimeForClientSideCookies):
        (WebKit::WebsiteDataStore::didCreateNetworkProcess):
        (WebKit::WebsiteDataStore::networkProcessDidCrash): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Rebase python tests.

        * Scripts/webkit/messages_unittest.py:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Rebase python tests.

        * Scripts/Makefile:
        * Scripts/webkit/MessageReceiver-expected.cpp:
        * Scripts/webkit/Messages-expected.h:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Mark LegacySync IPC messages
        https://bugs.webkit.org/show_bug.cgi?id=190759

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessageLegacySync):
        * PluginProcess/PluginControllerProxy.messages.in:
        * Scripts/webkit/messages.py:
        * Shared/Plugins/NPObjectMessageReceiver.messages.in:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/WebFullScreenManagerProxy.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.messages.in:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebStorage/StorageManager.messages.in:
        * UIProcess/mac/SecItemShimProxy.messages.in:
        * WebProcess/Plugins/PluginProcessConnection.messages.in:
        * WebProcess/Plugins/PluginProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.messages.in:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Update and add python tests after r237294
        https://bugs.webkit.org/show_bug.cgi?id=190746

        * Scripts/Makefile: Added to help updating expectations.
        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestAsyncMessage::callReply):
        (Messages::WebPage::TestAsyncMessage::cancelReply):
        (Messages::WebPage::TestAsyncMessage::send):
        (WebKit::WebPage::didReceiveMessage):
        * Scripts/webkit/MessagesSuperclass-expected.h:
        (Messages::WebPage::TestAsyncMessage::receiverName):
        (Messages::WebPage::TestAsyncMessage::name):
        (Messages::WebPage::TestAsyncMessage::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessage::TestAsyncMessage):
        (Messages::WebPage::TestAsyncMessage::arguments const):
        * Scripts/webkit/test-superclass-messages.in:
        Adding the extra newline made python tests fail.
        I also added more tests for the new functionality introduced in r237924.

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Introduce CompletionHandler-based Async IPC messages with replies
        https://bugs.webkit.org/show_bug.cgi?id=190746

        Reviewed by Tim Horton.

        Before this patch, to make an asynchronous IPC message with a reply you had to find two objects that
        can talk to each other, make two new message types, send a generated identifier, keep track of that
        identifier, make a HashMap somewhere to store the object waiting for the response, and hook it all up.
        What a mess.  No wonder people take shortcuts and make strange design decisions.

        Now, you can just use a CompletionHandler and mark the reply as Async in *.messages.in.
        I've adopted this with a message whose behavior is covered by the storage/indexeddb/modern/blob-cursor.html
        layout test and many others.  I intent to refine and further adopt this incrementally.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        This is representative of how code will be simplified with greater adoption. 
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::decode):
        Modernize HandleArray decoding.
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::dispatchMessage):
        (IPC::nextAsyncReplyHandlerID):
        (IPC::asyncReplyHandlerMap):
        Handle async replies when looking at incoming messages from the sending process.
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendWithAsyncReply):
        Send a message with an async reply and prepare the reply receiver.
        * Platform/IPC/Encoder.h:
        Make the uint64_t encoder public so we can use it when encoding the listenerID.
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessageAsync):
        Handle an asynchronous message with a reply from the receiving process.
        This is similar to how DelayedReply messages are handled, but the listenerID is automatically captured and sent back.
        * Scripts/webkit/messages.py:
        Generate code for async message replies.
        * Shared/Databases/IndexedDB/WebIDBResult.cpp:
        (WebKit::WebIDBResult::decode):
        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::HandleArray::at):
        (WebKit::SandboxExtension::HandleArray::decode):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtension::HandleArray::decode):
        Modernize the decoding of HandleArray to work with generated decoding.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        This is also representative of how code will be simplified with greater adoption.
        * WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:
        (WebKit::MediaDeviceSandboxExtensions::decode):
        Modernize HandleArray decoding.

2018-10-19  Chris Dumez  <cdumez@apple.com>

        [PSON] WebPageProxy::didCompletePageTransition() may interact with a SuspendedPageProxy from a previous navigation
        https://bugs.webkit.org/show_bug.cgi?id=190717

        Reviewed by Antti Koivisto.

        WebPageProxy::didCompletePageTransition() may interact with a SuspendedPageProxy from a previous navigation. We need
        to reset m_lastSuspendedPage whenever the page starts a new navigation as m_lastSuspendedPage is only updated when
        we process-swap otherwise.

        Also rename the data member to m_pageSuspendedDueToCurrentNavigation for clarity.

        In a follow-up, I will see if I can get rid of this data member entirely or maybe move it to the Navigation
        object.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Encode shouldCaptureDisplayInUIProcess.
        (WebKit::WebProcessCreationParameters::decode): Decode shouldCaptureDisplayInUIProcess.
        * Shared/WebProcessCreationParameters.h:

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

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable):
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): Remove
        RealtimeMediaSource::Type parameter, CaptureDevice has the same information. Deal with display
        capture "devices".
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Copy shouldCaptureDisplayInUIProcess.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source): Only allocate a ring buffer for Audio sources.
        (WebKit::UserMediaCaptureManager::Source::~Source): Same for deallocate.
        (WebKit::UserMediaCaptureManager::Source::storage): m_ringBuffer is a pointer.
        (WebKit::UserMediaCaptureManager::Source::setStorage): Ditto.
        (WebKit::UserMediaCaptureManager::Source::setRingBufferFrameBounds): Ditto.
        (WebKit::UserMediaCaptureManager::Source::audioSamplesAvailable): Ditto.
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Create a 
        PixelBuffer-backed media sample and call videoSampleAvailable.
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager): Clear the audio and display capture
        factory overrides.
        (WebKit::UserMediaCaptureManager::initialize): Set the audio and display capture factory overrides.
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2018-10-18  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r237272.

        Broke on device iOS builds and Windows builds

        Reverted changeset:

        "[MediaStream] Allow ports to optionally do screen capture in
        the UI process"
        https://bugs.webkit.org/show_bug.cgi?id=190728
        https://trac.webkit.org/changeset/237272

2018-10-18  Jer Noble  <jer.noble@apple.com>

        Enable WKPreferences._lowPowerVideoAudioBufferSizeEnabled by default
        https://bugs.webkit.org/show_bug.cgi?id=190315

        Reviewed by Eric Carlson.

        This preference is disabled for WebKitLegacy because it can interact poorly with clients' own use of audio.
        It can be enabled for WebKit since it will only affect the WebProcess and not the client process.

        * Shared/WebPreferences.yaml:

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Encode shouldCaptureDisplayInUIProcess.
        (WebKit::WebProcessCreationParameters::decode): Decode shouldCaptureDisplayInUIProcess.
        * Shared/WebProcessCreationParameters.h:

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

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable):
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): Remove
        RealtimeMediaSource::Type parameter, CaptureDevice has the same information. Deal with display
        capture "devices".
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Copy shouldCaptureDisplayInUIProcess.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source): Only allocate a ring buffer for Audio sources.
        (WebKit::UserMediaCaptureManager::Source::~Source): Same for deallocate.
        (WebKit::UserMediaCaptureManager::Source::storage): m_ringBuffer is a pointer.
        (WebKit::UserMediaCaptureManager::Source::setStorage): Ditto.
        (WebKit::UserMediaCaptureManager::Source::setRingBufferFrameBounds): Ditto.
        (WebKit::UserMediaCaptureManager::Source::audioSamplesAvailable): Ditto.
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Create a 
        PixelBuffer-backed media sample and call videoSampleAvailable.
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager): Clear the audio and display capture
        factory overrides.
        (WebKit::UserMediaCaptureManager::initialize): Set the audio and display capture factory overrides.
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2018-10-18  Chris Dumez  <cdumez@apple.com>

        [PSON] SuspendedPages do not report meaningful domains in Activity Monitor
        https://bugs.webkit.org/show_bug.cgi?id=190721
        <rdar://problem/45059699>

        Reviewed by Alex Christensen.

        SuspendedPages do not report meaningful domains in Activity Monitor, which makes
        debugging harder.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::origin):
        (WebKit::WebProcess::updateActivePages):

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

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

        Reviewed by Tim Horton.

        * DerivedSources.make:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
        * NetworkProcess/NetworkActivityTracker.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::updateTaskWithFirstPartyForSameSiteCookies):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        (WebKit::NetworkProcess::platformSyncAllCookies):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
        (IPC::Connection::receiveSourceEventHandler):
        (IPC::AccessibilityProcessSuspendedNotification):
        * Platform/ios/AccessibilityIOS.mm:
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * Platform/spi/Cocoa/DeviceIdentitySPI.h:
        * Platform/spi/ios/CelestialSPI.h:
        * Platform/spi/ios/FrontBoardServicesSPI.h:
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/API/Cocoa/WKDataDetectorTypesInternal.h:
        * Shared/API/Cocoa/WebKit.m:
        * Shared/AssistedNodeInformation.cpp:
        * Shared/AssistedNodeInformation.h:
        * Shared/CacheModel.cpp:
        (WebKit::calculateURLCacheSizes):
        * Shared/ChildProcess.cpp:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/Cocoa/WebKit2InitializeCocoa.mm:
        (WebKit::runInitializationCode):
        * Shared/DrawingAreaInfo.h:
        * Shared/EditorState.cpp:
        (WebKit::EditorState::encode const):
        (WebKit::EditorState::decode):
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        (WebKit::operator<<):
        * Shared/EditorState.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::checkEntitlements):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/PrintInfo.cpp:
        (WebKit::PrintInfo::encode const):
        (WebKit::PrintInfo::decode):
        * Shared/PrintInfo.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        * Shared/SessionState.cpp:
        (WebKit::FrameState::encode const):
        (WebKit::FrameState::decode):
        * Shared/SessionState.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.h:
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent):
        * Shared/WebKeyboardEvent.cpp:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebPlatformTouchPoint.cpp:
        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultPassiveTouchListenersAsDefaultOnDocument):
        (defaultCustomPasteboardDataEnabled):
        * Shared/WebPreferencesDefaultValues.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebTouchEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/cf/ArgumentCodersCF.h:
        * Shared/ios/ChildProcessIOS.mm:
        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        * Shared/ios/InteractionInformationRequest.cpp:
        * Shared/ios/InteractionInformationRequest.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        * Shared/ios/NativeWebMouseEventIOS.mm:
        * Shared/ios/NativeWebTouchEventIOS.mm:
        * Shared/ios/WebIOSEventFactory.h:
        * Shared/ios/WebIOSEventFactory.mm:
        * Shared/ios/WebIconUtilities.h:
        * Shared/ios/WebIconUtilities.mm:
        * Shared/mac/ArgumentCodersMac.h:
        * Shared/mac/ArgumentCodersMac.mm:
        * Shared/mac/SandboxExtensionMac.mm:
        * Shared/mac/SecItemShim.cpp:
        (WebKit::initializeSecItemShim):
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy const):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIUIClient.h:
        * UIProcess/API/C/WKInspector.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetIgnoresViewportScaleLimits):
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextIsPlugInUpdateAvailable):
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultApplicationCacheDirectory):
        (API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
        (API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction description]):
        * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm:
        * UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (IGNORE_WARNINGS_BEGIN):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _pluginProcessCount]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (shouldRequireUserGestureToLoadVideo):
        (validate):
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _setUpSQLiteDatabaseTrackerClient]):
        (-[WKWebView dealloc]):
        (-[WKWebView allowsLinkPreview]):
        (-[WKWebView setAllowsLinkPreview:]):
        (-[WKWebView _countStringMatches:options:maxCount:]):
        (-[WKWebView _findString:options:maxCount:]):
        (-[WKWebView _hideFindUI]):
        (-[WKWebView _scrollPerformanceData]):
        (-[WKWebView _allowsMediaDocumentInlinePlayback]):
        (-[WKWebView _setAllowsMediaDocumentInlinePlayback:]):
        (-[WKWebView _contentsOfUserInterfaceItem:]):
        (-[WKWebView _internalDoAfterNextPresentationUpdate:withoutWaitingForPainting:withoutWaitingForAnimatedResize:]):
        (-[WKWebView _doAfterNextVisibleContentRectUpdate:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration encodeWithCoder:]):
        (-[WKWebViewConfiguration initWithCoder:]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (defaultApplicationNameForUserAgent):
        * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
        (-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:userInfo:]):
        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
        * UIProcess/API/Cocoa/_WKAttachment.mm:
        * UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        * UIProcess/API/Cocoa/_WKElementActionInternal.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate invalidate]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::toPKPaymentRequest):
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        * UIProcess/ApplicationStateTracker.h:
        * UIProcess/ApplicationStateTracker.mm:
        * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::shutDownProcess):
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::takeActivityToken):
        (WebKit::DownloadClient::releaseActivityTokenIfNecessary):
        * UIProcess/Cocoa/LayerRepresentation.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::didChangeIsLoading):
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/Cocoa/VersionChecks.mm:
        (WebKit::linkedOnOrAfter):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
        (WebKit::VideoFullscreenManagerProxy::exitFullscreen):
        (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):
        (WebKit::VideoFullscreenManagerProxy::setVideoLayerFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:
        (WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider):
        * UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::shouldLeakBoost):
        (WebKit::systemDirectoryPath):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        * UIProcess/PageClient.h:
        * UIProcess/ProcessAssertion.cpp:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation const):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::detachRootLayer):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        * UIProcess/WKImagePreviewViewController.h:
        * UIProcess/WKImagePreviewViewController.mm:
        * UIProcess/WKInspectorHighlightView.h:
        * UIProcess/WKInspectorHighlightView.mm:
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticatorInternal::buildAuthData):
        (WebKit::LocalAuthenticator::makeCredential):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (WebKit::LocalAuthenticator::getAssertion):
        (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::isAvailable):
        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::supportsFullScreen):
        * UIProcess/WebGeolocationManagerProxy.cpp:
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::viewDidLeaveWindow):
        (WebKit::WebPageProxy::updateThrottleState):
        (WebKit::WebPageProxy::waitForDidUpdateActivityState):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::exitFullscreenImmediately):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::pageDidScroll):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::hasActiveVideoForControlsManager const):
        (WebKit::WebPageProxy::requestControlledElementID const):
        (WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::updateProcessAssertions):
        (WebKit::WebProcessPool::reinstateNetworkProcessAssertionState):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::isMainThreadOrCheckDisabled):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::didSetAssertionState):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasePath const):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        * UIProcess/_WKWebViewPrintFormatter.mm:
        * UIProcess/_WKWebViewPrintFormatterInternal.h:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/DragDropInteractionState.mm:
        * UIProcess/ios/InputViewUpdateDeferrer.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        * UIProcess/ios/LayerRepresentation.mm:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        * UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm:
        * UIProcess/ios/SmartMagnificationController.h:
        * UIProcess/ios/SmartMagnificationController.messages.in:
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/TextCheckerIOS.mm:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKActionSheet.h:
        * UIProcess/ios/WKActionSheet.mm:
        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKApplicationStateTrackingView.h:
        * UIProcess/ios/WKApplicationStateTrackingView.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKGeolocationProviderIOS.h:
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:
        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h:
        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.h:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        * UIProcess/ios/WKPasswordView.h:
        * UIProcess/ios/WKPasswordView.mm:
        * UIProcess/ios/WKScrollView.h:
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/ios/WKSyntheticClickTapGestureRecognizer.h:
        * UIProcess/ios/WKSyntheticClickTapGestureRecognizer.m:
        * UIProcess/ios/WKWebEvent.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * UIProcess/ios/WebProcessProxyIOS.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.h:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/ios/forms/WKFormColorControl.h:
        * UIProcess/ios/forms/WKFormColorControl.mm:
        * UIProcess/ios/forms/WKFormColorPicker.h:
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        * UIProcess/ios/forms/WKFormInputControl.h:
        * UIProcess/ios/forms/WKFormInputControl.mm:
        * UIProcess/ios/forms/WKFormPopover.h:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.h:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.h:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp:
        * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.h:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFrameStateNode):
        (WebKit::decodeBackForwardTreeNode):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * UIProcess/mac/ViewSnapshotStore.mm:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
        (WebContentServiceInitializer):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/Geolocation/WebGeolocationManager.messages.in:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFrameState):
        (WebKit::applyFrameState):
        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::windowRect):
        (WebKit::WebChromeClient::enterVideoFullscreenForVideoElement):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidLayout):
        (WebKit::WebFrameLoaderClient::saveViewStateToItem):
        (WebKit::WebFrameLoaderClient::restoreViewState):
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebKit::WebFrameLoaderClient::objectContentType):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::highlight):
        (WebKit::WebInspectorClient::hideHighlight):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        * WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::findString):
        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::dispatchDidCollectGeometryForSmartMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in:
        * WebProcess/WebPage/ViewUpdateDispatcher.cpp:
        * WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.h:
        * WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.mm:
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebOpenPanelResultListener.cpp:
        * WebProcess/WebPage/WebOpenPanelResultListener.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::~WebPage):
        (WebKit::WebPage::scalePage):
        (WebKit::WebPage::setUseFixedLayout):
        (WebKit::WebPage::disabledAdaptationsDidChange):
        (WebKit::WebPage::viewportPropertiesDidChange):
        (WebKit::WebPage::pageDidScroll):
        (WebKit::WebPage::mouseEvent):
        (WebKit::WebPage::updatePreferences):
        (WebKit::WebPage::willCommitLayerTree):
        (WebKit::WebPage::didFlushLayerTreeAtTime):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::resetAssistedNodeForFrame):
        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::elementDidBlur):
        (WebKit::WebPage::willReplaceMultipartContent):
        (WebKit::WebPage::didReplaceMultipartContent):
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        (WebKit::WebProcess::initializeConnection):
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.messages.in:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreen const):
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::registerWithAccessibility):
        (WebKit::WebProcess::sourceApplicationAuditData const):
        (WebKit::WebProcess::initializeSandbox):
        * WebProcess/mac/SecItemShimLibrary.mm:
        * config.h:

2018-10-18  Alex Christensen  <achristensen@webkit.org>

        Clean up FrameLoader two-state enums
        https://bugs.webkit.org/show_bug.cgi?id=190731

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-18  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Add support for AsyncResolver to resolve MDNS.
        This basically reuse the code path used to resolve STUN server addresses.
        Removed MDNS specific resolution.
        Use existing CFHost resolution mechanism to do the actual resolution.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):
        * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCProvider::createPeerConnection):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.cpp:
        * WebProcess/Network/webrtc/WebMDNSRegister.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.messages.in:

2018-10-18  Chris Dumez  <cdumez@apple.com>

        [PSON] Cap number of SuspendedPageProxy objects and allow a WebPageProxy to have more than one
        https://bugs.webkit.org/show_bug.cgi?id=190688
        <rdar://problem/45354095>

        Reviewed by Antti Koivisto.

        Cap number of SuspendedPageProxy objects to 3 to avoid accumulating too many "suspended" processes.

        Also allow a WebPageProxy to have more than one SuspendedPageProxy so that PageCache now works for
        more than 1 history navigation (up to 3 with the suspended page limit in this patch).

        The following cleanup / refactoring was made to support this:
        - The SuspendedPageProxy objects are now owned by the WebProcessPool instead of the WebPageProxy.
          The WebProcessPool is in charge of limiting the number of SuspendedPageProxy objects by dropping
          the oldest one whenever a WebPageProxy tries to add a new one and we've already reached the limit.
        - WebProcessProxy no longer needs to know anything about suspended pages, which simplifies the
          code quite a bit. Instead, the SuspendedPageProxy objects now register themselves as
          IPC::MessageReceivers with their WebProcessProxy. The SuspendedPageProxy also take care of
          calling maybeShutdown() on their WebProcessProxy when they get destroyed.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        (WebKit::SuspendedPageProxy::didReceiveSyncMessage):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::addSuspendedPageProxy):
        (WebKit::WebProcessPool::removeAllSuspendedPageProxiesForPage):
        (WebKit::WebProcessPool::takeSuspendedPageProxy):
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didReceiveMessage):
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        (WebKit::WebProcessProxy::canTerminateChildProcess):
        (WebKit::WebProcessProxy::requestTermination):
        * UIProcess/WebProcessProxy.h:

2018-10-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable the datalist element by default on iOS and macOS
        https://bugs.webkit.org/show_bug.cgi?id=190594
        <rdar://problem/45281159>

        Reviewed by Ryosuke Niwa and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Platform/spi/ios/UIKitSPI.h:

        Add SPI to UITextSuggestion.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (-[WKDataListSuggestionCell setText:]):
        (-[WKDataListSuggestionTable initWithElementRect:]):

        Fix the 32-bit macOS build with ENABLE(DATALIST_ELEMENT).

2018-10-17  Andy Estes  <aestes@apple.com>

        [Apple Pay] Increment the API version to 5
        https://bugs.webkit.org/show_bug.cgi?id=190686
        <rdar://problem/45348523>

        Reviewed by Simon Fraser.

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::supportsVersion):

2018-10-17  Alex Christensen  <achristensen@webkit.org>

        BackForwardClient needs to be able to support UIProcess-only back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190675

        Reviewed by Chris Dumez.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::itemAtIndex const):
        (WebKit::WebBackForwardList::backListCount const):
        (WebKit::WebBackForwardList::forwardListCount const):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::backForwardBackListCount):
        (WebKit::WebPageProxy::backForwardForwardListCount):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::itemAtIndex):
        (WebKit::WebBackForwardListProxy::backListCount const):
        (WebKit::WebBackForwardListProxy::forwardListCount const):
        * WebProcess/WebPage/WebBackForwardListProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::dumpHistoryForTesting):

2018-10-17  Ali Juma  <ajuma@chromium.org>

        Flaky IntersectionObserver web platform tests involving style updates
        https://bugs.webkit.org/show_bug.cgi?id=189091

        Reviewed by Simon Fraser.

        Add a WebPage::willDisplayPage bottleneck that gets called when flushing layers
        or, in the non-composited case, when rendering the page into a bitmap.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::updateBackingStoreState):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::willDisplayPage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2018-10-16  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix xdg-desktop-portal permissions from a sandbox
        https://bugs.webkit.org/show_bug.cgi?id=190619

        Reviewed by Michael Catanzaro.

        We have to generate a /.flatpak-info file for xdg-desktop-portal
        to properly treat us as a sandboxed application.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::createSealedMemFdWithData):
        (WebKit::argsToFd):
        (WebKit::XDGDBusProxyLauncher::setPermissions):
        (WebKit::createFlatpakInfo):
        (WebKit::bubblewrapSpawn):

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

        Add a switch for Web SQL
        https://bugs.webkit.org/show_bug.cgi?id=190271

        Reviewed by Ryosuke Niwa.

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

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Remove InjectedBundleBackForwardList
        https://bugs.webkit.org/show_bug.cgi?id=190640

        Reviewed by Chris Dumez.

        These objects are only used in testing now, so I made a replacement to be used for testing,
        WKBundlePageDumpHistoryForTesting and WKBundleClearHistoryForTesting.
        The existence of these objects is problematic with process swapping and the true back/forward list being in the UIProcess.

        * Sources.txt:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.cpp:
        (WKBundleBackForwardListGetTypeID):
        (WKBundleBackForwardListCopyItemAtIndex):
        (WKBundleBackForwardListGetBackListCount):
        (WKBundleBackForwardListGetForwardListCount):
        (WKBundleBackForwardListClear):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.h:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        (WKBundleBackForwardListItemGetTypeID):
        (WKBundleBackForwardListItemIsSame):
        (WKBundleBackForwardListItemCopyURL):
        (WKBundleBackForwardListItemCopyTarget):
        (WKBundleBackForwardListItemIsTargetItem):
        (WKBundleBackForwardListItemCopyChildren):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageDumpHistoryForTesting):
        (WKBundleClearHistoryForTesting):
        (WKBundlePageGetBackForwardList):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h: Removed.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::~WebPage):
        (WebKit::dumpHistoryItem):
        (WebKit::WebPage::dumpHistoryForTesting):
        (WebKit::WebPage::clearHistory):
        (WebKit::WebPage::didReceiveSyncMessage):
        (WebKit::WebPage::backForwardList): Deleted.
        * WebProcess/WebPage/WebPage.h:

2018-10-16  Timothy Hatcher  <timothy@apple.com>

        Add <meta name="supported-color-schemes"> to control what color schemes the page supports
        https://bugs.webkit.org/show_bug.cgi?id=190526
        rdar://problem/45230140

        Reviewed by Dean Jackson.

        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView drawRect:]): Update use of LocalDefaultSystemAppearance.
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage): Ditto.
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::paintControlForLayerInContext): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect): Ditto.

2018-10-16  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag and bindings for CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190237

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-16  Philippe Normand  <pnormand@igalia.com>

        [GLib] Build error with RemoteInspector disabled
        https://bugs.webkit.org/show_bug.cgi?id=190623

        Reviewed by Michael Catanzaro.

        Compilation guards added to ensure the build still works when the
        Remote WebInspector has been disabled.

        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
        * UIProcess/RemoteWebInspectorProxy.cpp:

2018-10-16  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix sandbox on distros with suid bubblewrap
        https://bugs.webkit.org/show_bug.cgi?id=190616

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Replace HistoryItem* with HistoryItem& where possible
        https://bugs.webkit.org/show_bug.cgi?id=190617

        Reviewed by Chris Dumez.

        * WebProcess/WebCoreSupport/SessionStateConversion.h:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WK2NotifyHistoryItemChanged):
        (WebKit::WebBackForwardListProxy::goToItem):
        * WebProcess/WebPage/WebBackForwardListProxy.h:

2018-10-16  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, another GTK build fix after r237146

        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):

2018-10-15  Justin Fan  <justin_fan@apple.com>

        Add WebGPU 2018 feature flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=190509

        Reviewed by Dean Jackson.

        Re-add ENABLE_WEBGPU, an experimental feature flag, and a RuntimeEnabledFeature
        for the 2018 WebGPU prototype.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix API tests after r237146

        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::decode):
        I accidentally changed the decoder.

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

        HSTS cache entries cannot be removed by origin
        https://bugs.webkit.org/show_bug.cgi?id=190455
        <rdar://problem/45181322>

        Reviewed by Chris Dumez.

        The SPI _CFNetworkResetHSTS does not recognize url without protocol, so we need to add protocol manually.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::deleteHSTSCacheForHostNames):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix GTK build, even though bots are not working right now.

        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix WinCairo build after r237146

        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):

2018-10-15  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r236512): [ Mac WK2 ] Layout Test editing/undo/undo-smart-delete-word.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190375
        <rdar://problem/45177807>

        Reviewed by Ryosuke Niwa.

        The test is doing the following:
        > document.execCommand("Delete"); document.execCommand("Undo");

        Both operation are synchronous and rely on synchronous IPC from the WebProcess to the UIProcess.
        However, for the undo operation to succeed, the first command need to have been registered with
        with the UIProcess via the WebPageProxy::RegisterEditCommandForUndo IPC to the UIProcess, which
        is asynchronous.

        After r236512, the UIProcess no longer processes incoming sync / async IPC in order and thus,
        it is possible for the WebPageProxy::ExecuteUndoRedo synchronous IPC to get processed by the
        UIProcess *before* the WebPageProxy::RegisterEditCommandForUndo asynchronous IPC for the
        previous "Delete" command. As a result, canUndo would return false and we would fail to undo.

        To address the issue, use SendOption::DispatchMessageEvenWhenWaitingForSyncReply flag when sending
        the WebPageProxy::RegisterEditCommandForUndo IPC, so that it gets processed in order with regards
        to surrounding synchronous IPC.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Modernize BackForwardClient.h
        https://bugs.webkit.org/show_bug.cgi?id=190610

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
        (WebKit::InjectedBundleBackForwardList::clear):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::WebBackForwardListProxy):
        (WebKit::WebBackForwardListProxy::backListCount const):
        (WebKit::WebBackForwardListProxy::forwardListCount const):
        (WebKit::WebBackForwardListProxy::backListCount): Deleted.
        (WebKit::WebBackForwardListProxy::forwardListCount): Deleted.
        * WebProcess/WebPage/WebBackForwardListProxy.h:
        (WebKit::WebBackForwardListProxy::create):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::restoreSessionInternal):

2018-10-15  Timothy Hatcher  <timothy@apple.com>

        Add support for prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=190499
        rdar://problem/45212025

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_DARK_MODE_CSS.
        * Shared/WebPreferences.yaml: Added DarkModeCSSEnabled as experimental.

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        Remove StorageProcess leftover
        https://bugs.webkit.org/show_bug.cgi?id=190591

        Reviewed by Michael Catanzaro.

        The process was deleted.

        * Shared/ChildProcess.h:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::processStorageClass):
        (WebKit::sandboxDirectory):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused parameters of WebPageGroupData
        https://bugs.webkit.org/show_bug.cgi?id=190600

        Reviewed by Chris Dumez.

        visibleToInjectedBundle and visibleToHistoryClient are both always true.
        This removes a mysterious check in the history code.

        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::encode const):
        (WebKit::WebPageGroupData::decode):
        * Shared/WebPageGroupData.h:
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::create):
        (WebKit::pageGroupData):
        (WebKit::WebPageGroup::WebPageGroup):
        * UIProcess/WebPageGroup.h:
        (WebKit::WebPageGroup::WebPageGroup):
        (WebKit::WebPageGroup::create):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::updateGlobalHistory):
        (WebKit::WebFrameLoaderClient::updateGlobalHistoryRedirectLinks):
        (WebKit::WebFrameLoaderClient::setTitle):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::create):
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPageGroupProxy.cpp:
        (WebKit::WebPageGroupProxy::create):
        * WebProcess/WebPage/WebPageGroupProxy.h:
        (WebKit::WebPageGroupProxy::pageGroupID const):
        (WebKit::WebPageGroupProxy::isVisibleToInjectedBundle const): Deleted.
        (WebKit::WebPageGroupProxy::isVisibleToHistoryClient const): Deleted.

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Experiment: target=_blank on anchors should imply rel=noopener
        https://bugs.webkit.org/show_bug.cgi?id=190481

        Reviewed by Alex Christensen.

        * Shared/WebPreferences.yaml:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused parameters from FrameLoaderClient::createFrame
        https://bugs.webkit.org/show_bug.cgi?id=190587

        Reviewed by Chris Dumez.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createFrame):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Can't select text after dismissing the keyboard when changing focus
        https://bugs.webkit.org/show_bug.cgi?id=190563
        <rdar://problem/44613559>

        Reviewed by Tim Horton.

        In r230686, we switched from using UIWKSelectionAssistant to UIWKTextInteractionAssistant for handling selection
        in non-editable content on iOS; as such, when an editable element loses focus, instead of switching from the
        text interaction assistant to the web selection assistant as we've previously done, we now reset our text
        interaction assistant by calling `-[UIWKTextInteractionAssistant setGestureRecognizers]`, which removes all of
        the current text selection gesture recognizers from WKContentView and regenerates them by building up a tree of
        `UITextInteraction`s and adding them to the assistant (see `-[UITextInteractionAssistant
        addGestureRecognizersToView:]`). In particular, `_UITextSelectionForceGesture` is the gesture recognizer used to
        trigger text selection when long pressing.

        After dismissing the keyboard by tapping the "Done" button, the UITextInteractions and gesture recognizers on
        the interaction assistant include:

            <UITextInteraction>
                …
                <UITextIndirectNonEditableInteraction>
                    <_UIKeyboardBasedNonEditableTextSelectionInteraction>
                      ↳ "_UIKeyboardTextSelectionGestureForcePress" → <_UITextSelectionForceGesture>

        However, after the keyboard dismisses due to an editable element losing focus, the UITextInteractions on the
        interaction assistant look like this:

            <UITextInteraction>
                …
                <UITextIndirectNonEditableInteraction>

        Subsequently, the lack of a `_UIKeyboardBasedNonEditableTextSelectionInteraction` makes text selection by long
        pressing impossible, since the `_UITextSelectionForceGesture` is never introduced to `WKContentView`. In UIKit,
        `UITextIndirectNonEditableInteraction` only adds `_UIKeyboardBasedNonEditableTextSelectionInteraction` as a
        child if the text input view — in our case, WKContentView — is missing an input delegate (see `-initWithView:`).
        In the case where the Done button is used to dismiss the keyboard, WKContentView loses first responder, and the
        input delegate of WKContentView is cleared out early on, before we call `-stopAssistingKeyboard`:

            -[WKContentView(WKInteraction) setInputDelegate:]
            -[UIKeyboardImpl setDelegate:force:]
            -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:]
            -[UIResponder _finishResignFirstResponder]
            -[UIResponder resignFirstResponder]
            -[WKContentView(WKInteraction) resignFirstResponderForWebView]
            -[UIKeyboardImpl dismissKeyboard]

        However, in the case where the focused element is blurred, we end up clearing out the delegate in
        `-_stopAssistingNode`, *after* we've already called `-setGestureRecognizers` on the interaction assistant. This
        means UIKit will skip adding `_UIKeyboardBasedNonEditableTextSelectionInteraction` to the text interaction
        assistant.

            -[WKContentView(WKInteraction) setInputDelegate:]
            -[UIKeyboardImpl setDelegate:force:]
            -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:]
            -[UIResponder(UIResponderInputViewAdditions) reloadInputViews]
            -[WKContentView(WKInteraction) _stopAssistingNode]

        To fix this, we simply reset our `inputDelegate` earlier in `_stopAssistingKeyboard` instead of waiting until
        we reload input views. This ensures that UIKit sets up the text interaction assistant's gestures when changing
        focus in the same way as we would when the keyboard is dismissed via `-resignFirstResponder` (e.g. when pressing
        the Done button).

        Test: editing/selection/ios/select-text-after-changing-focus.html

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView setUpTextSelectionAssistant]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _stopAssistingKeyboard]):
        (-[WKContentView useSelectionAssistantWithGranularity:]): Deleted.

        Additionally rename this to -setUpTextSelectionAssistant and remove the selection granularity argument. This was
        previously used to switch between web and text interaction assistants.

2018-10-15  Remy Demarest  <rdemarest@apple.com>

        Web Inspector: RDM: Toolbar hidden in when Inspector is docked to side.
        https://bugs.webkit.org/show_bug.cgi?id=190545
        rdar://problem/44674500

        Reviewed by Brian Burg.

        When the inspector is placed next to the web view it uses its _topContentInset and _totalHeightOfBanners
        to lay out the inspector so it does not underlap the window toolbar, but this technique does not work when
        in responsive design mode because of the different attachment view. This patch fixes the issue by using
        -[NSWindow contentLayoutRect] to figure out the height of the inspector instead of relying on the content
        insets of the web view. This requires observing -contentLayoutRect and ensure we only observe its changes
        when the view is actually on the screen.

        * UIProcess/WebInspectorProxy.h:
        Declare helpers to add/remove observer on the attached inspector window.

        * UIProcess/mac/WKInspectorViewController.h:
        * UIProcess/mac/WKInspectorViewController.mm:
        (-[WKInspectorViewController inspectorWKWebView:willMoveToWindow:]):
        (-[WKInspectorViewController inspectorWKWebViewDidMoveToWindow:]):

        * UIProcess/mac/WKInspectorWKWebView.h:
        * UIProcess/mac/WKInspectorWKWebView.mm:
        (-[WKInspectorWKWebView viewWillMoveToWindow:]):
        (-[WKInspectorWKWebView viewDidMoveToWindow]):

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (-[WKWebInspectorProxyObjCAdapter observeValueForKeyPath:ofObject:change:context:]): Update inspector layout
        whenever the contentLayoutRect changes. Except when live resizing since the attachment view also sends
        notifications at the same time.
        (-[WKWebInspectorProxyObjCAdapter inspectorViewController:willMoveToWindow:]):
        (-[WKWebInspectorProxyObjCAdapter inspectorViewControllerDidMoveToWindow:]):
        (WebKit::WebInspectorProxy::attachmentWillMoveFromWindow): Remove the observer only if we set it up before.
        (WebKit::WebInspectorProxy::attachmentDidMoveToWindow): Set up the observer and immediately update the frame
        of the inspector since it just moved to its final destination.
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange): Adjust the frame of the attached inspector based
        on the contentLayoutRect of the window rather than the topContentInset of the web view.

2018-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Changing view scale should zoom to initial scale if the page is already at initial scale
        https://bugs.webkit.org/show_bug.cgi?id=190570
        <rdar://problem/45261877>

        Reviewed by Tim Horton.

        r237087 added support for changing the view scale on iOS, by making it possible to let the minimum layout size
        be a factor of the view size; this allows internal clients to change page zoom levels on iOS. Currently,
        changing the page zoom level automatically zooms to the new initial scale only if the user has not manually
        scaled the page before, even if the page is already at initial scale (e.g. after the user double taps to zoom on
        a small element, and double taps again to zoom back out to initial scale).

        This patch makes some minor adjustments to automatically zoom to the new initial scale after changing the view
        scale, as long as the page was at initial scale when changing zoom levels.

        Test: fast/viewport/ios/initial-scale-after-changing-view-scale.html

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

        Move this function further up in the file, so that we can use it in `setViewportConfigurationViewLayoutSize`.

        (WebKit::WebPage::setViewportConfigurationViewLayoutSize):

        If the page is near initial scale and the zoom level changes, zoom to the new initial scale.

        (WebKit::WebPage::viewportConfigurationChanged):

        Make this take a new enum argument that determines whether we want to zoom to initial scale as a result of the
        viewport configuration change (`No` by default).

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Restrict browsing context lookup by name to frames that are related to one another
        https://bugs.webkit.org/show_bug.cgi?id=190475

        Reviewed by Alex Christensen.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performJavaScriptURLRequest):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix assertion after r237102
        https://bugs.webkit.org/show_bug.cgi?id=190459

        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
        Shipping Safari still uses shouldGoToBackForwardListItem, so only assert on
        newer platforms like we do in WKPageSetPageLoaderClient.

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Shrink more enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190540

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/Authentication/AuthenticationChallengeDisposition.h:
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/DragControllerAction.h:
        * Shared/LayerTreeContext.h:
        * Shared/UndoOrRedo.h:
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Notifications/WebNotification.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/PageClient.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/UserContent/InjectUserScriptImmediately.h:
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/UserContent/WebUserContentController.messages.in:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Add new files missing from previous commit.

        * Source/cmake/FindLibseccomp.cmake: Added.

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Implement subprocess sandboxing
        https://bugs.webkit.org/show_bug.cgi?id=188568

        Reviewed by Michael Catanzaro.

        This implements sandboxing of WebKitWebProcesses.

        The sandbox is opt-in at runtime as it is a behavior change.
        See webkit_web_context_set_sandbox_enabled() and the
        WEBKIT_FORCE_SANDBOX env var for developers.

        This is Linux specific using Namespaces, Seccomp, and a DBus proxy service.
        This introduces three new dependencies:

        - bwrap executable
        - libseccomp library
        - xdg-dbus-proxy executable

        The use of xdg-dbus-proxy will ideally be replaced once upstream DBus
        gains the same filtering abilities which is a work in progress.

        Currently the sandbox is not completed and there are a few large holes:

        - Pulseaudio: The Pipewire project will solve this.
        - DRI device access: No immediate solutions planned.
        - Webcam device access: Pipewire will also solve this.
        - Webprocess network access: Will require GStreamer changes.
        - DConf access: Custom proxy planned.
        - X11 access: Wayland solves this.

        That is not an exhaustive list but are the noteworthy ones. Filesystem access
        is still an evolving list as problems are found as is specific DBus name access.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_sandbox_enabled):
        (webkit_web_context_get_sandbox_enabled):
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitWebContext.h:
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::platformGetLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: Added.
        (WebKit::memfd_create):
        (WebKit::argsToFd):
        (WebKit::XDGDBusProxyLauncher::setAddress):
        (WebKit::XDGDBusProxyLauncher::isRunning const):
        (WebKit::XDGDBusProxyLauncher::path const):
        (WebKit::XDGDBusProxyLauncher::proxyPath const):
        (WebKit::XDGDBusProxyLauncher::setPermissions):
        (WebKit::XDGDBusProxyLauncher::launch):
        (WebKit::XDGDBusProxyLauncher::childSetupFunc):
        (WebKit::XDGDBusProxyLauncher::makeProxyPath):
        (WebKit::XDGDBusProxyLauncher::dbusAddressToPath):
        (WebKit::bindIfExists):
        (WebKit::bindDBusSession):
        (WebKit::bindX11):
        (WebKit::bindDconf):
        (WebKit::bindWayland):
        (WebKit::bindPulse):
        (WebKit::bindFonts):
        (WebKit::bindGtkData):
        (WebKit::bindA11y):
        (WebKit::bindPathVar):
        (WebKit::bindGStreamerData):
        (WebKit::bindOpenGL):
        (WebKit::bindV4l):
        (WebKit::bindSymlinksRealPath):
        (WebKit::setupSeccomp):
        (WebKit::bubblewrapSpawn):
        * UIProcess/Launcher/glib/BubblewrapLauncher.h: Added.
        * UIProcess/Launcher/glib/FlatpakLauncher.cpp: Added.
        (WebKit::flatpakSpawn):
        * UIProcess/Launcher/glib/FlatpakLauncher.h: Added.
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::isInsideFlatpak):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getLaunchOptions):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/glib/WebProcessProxyGLib.cpp: Added.
        (WebKit::WebProcessProxy::platformGetLaunchOptions):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Add a temporarily off by default preference for doing safe browsing checks
        https://bugs.webkit.org/show_bug.cgi?id=190522

        Reviewed by Chris Dumez.

        Safe browsing development has taken longer than anticipated.
        To prevent the unused possible contacting the safe browsing provider for no benefit, make this off by default for now.
        I'll make it on by default when it's actually used.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setSafeBrowsingEnabled:]):
        (-[WKPreferences _safeBrowsingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Include EnumTraits.h less
        https://bugs.webkit.org/show_bug.cgi?id=190535

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkSessionCreationParameters.h:
        * Shared/Authentication/AuthenticationChallengeDisposition.h:
        * Shared/CoordinateSystem.h:
        * Shared/LayerTreeContext.h:
        * Shared/UndoOrRedo.h:
        * Shared/WebsiteAutoplayPolicy.h:
        * Shared/WebsitePopUpPolicy.h:
        * UIProcess/API/APIWebsitePolicies.h:
        * WebProcess/UserContent/InjectUserScriptImmediately.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove InjectedBundle processing of back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190459

        Reviewed by Chris Dumez.

        * Shared/API/c/WKDeprecated.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        (WKBundleBackForwardListItemCopyOriginalURL):
        (WKBundleBackForwardListItemCopyTitle):
        (WKBundleBackForwardListItemIsTargetItem):
        (WKBundleBackForwardListItemIsInPageCache):
        (WKBundleBackForwardListItemHasCachedPageExpired):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
        (WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        WebPageProxy should always have a HistoryClient
        https://bugs.webkit.org/show_bug.cgi?id=190450

        Reviewed by Chris Dumez.

        This will make it so we don't forget to null check it.
        No change in behavior because the default HistoryClient does nothing.

        * UIProcess/API/APIHistoryClient.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::createHistoryClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setHistoryClient):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        * UIProcess/WebPageProxy.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Use std::optional<size_t> for a WebBackForwardList's current index
        https://bugs.webkit.org/show_bug.cgi?id=190448

        Reviewed by Chris Dumez.

        Also remove m_capacity, which was immutable.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::WebBackForwardList):
        (WebKit::WebBackForwardList::~WebBackForwardList):
        (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::backListCount const):
        (WebKit::WebBackForwardList::forwardListCount const):
        (WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::removeAllItems):
        (WebKit::WebBackForwardList::clear):
        (WebKit::WebBackForwardList::backForwardListState const):
        (WebKit::WebBackForwardList::restoreFromState):
        (WebKit::WebBackForwardList::loggingString):
        * UIProcess/WebBackForwardList.h:
        (WebKit::WebBackForwardList::currentIndex const): Deleted.

2018-10-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove Option::useAsyncIterator
        https://bugs.webkit.org/show_bug.cgi?id=190567

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2018-10-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the view
        https://bugs.webkit.org/show_bug.cgi?id=190504
        <rdar://problem/45117760>

        Reviewed by Tim Horton.

        Add support for _setViewScale: and _viewScale on iOS. While similar in concept to macOS, changing this property
        on iOS uses viewport configurations to change the minimum layout size of the document and apply view scaling.
        Setting the view scale on iOS to a value `s` multiplies the minimium layout size by a factor `1 / s`, but also
        multiplies the initial, minimum and maximum scales by a factor of `s`. The net effect of applying this scale
        causes the page to lay out at a larger width and shrink (or a smaller width and expand) to fit the viewport.

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

        Send `viewportConfigurationLayoutSizeScaleFactor` alongside `viewportConfigurationViewLayoutSize`.

        (-[WKWebView _dispatchSetViewLayoutSize:]):
        (-[WKWebView _viewScale]):
        (-[WKWebView _setViewScale:]):

        Provide a different implementation of `_setViewScale:` on iOS, by scaling the effective minimum layout size.
        (See above for more detail).

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add missing API availability annotations for the _viewScale property.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _setViewScale:]):
        * UIProcess/Cocoa/WebViewImpl.mm:

        Both -[WKView _setViewScale:] and -[WKWebView _setViewScale:] throw Objective C exceptions upon receiving a bad
        argument (e.g. scale <= 0). However, logic for throwing this exception is specific to iOS in WKWebView, and
        handled in WebViewImpl on macOS. To make this less confusing, move the exception throwing code out of
        !PLATFORM(MAC) in WKWebView, and move the path for raising this exception in WKView on macOS from WebViewImpl to
        WKView.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::layoutSizeScaleFactor const):

        Tie the notion of "view scale" on iOS to `layoutSizeScaleFactor`. As its name suggests, this is a scale factor
        by which we transform the layout size.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Plumb the layout size scale factor over to the web process, along with the layout size.

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

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

        Allow encoding of small enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190531

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkLoadClient.h:
        * Scripts/webkit/messages.py:
        * Scripts/webkit/parser.py:
        (parse_parameters_string):
        * UIProcess/API/APINavigation.h:
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-12  Rob Buis  <rbuis@igalia.com>

        Solve the confusion around blankURL() and isBlankURL() in URL
        https://bugs.webkit.org/show_bug.cgi?id=158988

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):

2018-10-12  Youenn Fablet  <youenn@apple.com>

        Cache API tests are flaky due to file writing failing from time to time
        https://bugs.webkit.org/show_bug.cgi?id=190321

        Reviewed by Chris Dumez.

        Make NetworkCache::Storage::store callback return an error in case of writing failure.
        Use this to surface this error at Cache API level.

        Minor clean-up to make Storage::clear take a completion handler.

        Make also sure to create the folder before writing the file in CacheStorageEngine.
        As can be seen from some logging, it does happen that writing the 'origin' file sometimes fail with Posix error 9,
        which might mean the folder is not present.

        Changes are covered by current tests, flaky tests like http/wpt/cache-storage/cache-put-keys.https.any.worker.html
        will show a "failed writing data to the file system" error message.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::writeFile):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::storeOrigin):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        (WebKit::CacheStorage::Caches::writeRecord):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
        (WebKit::NetworkCache::Storage::dispatchWriteOperation):
        (WebKit::NetworkCache::Storage::finishWriteOperation):
        (WebKit::NetworkCache::Storage::store):
        (WebKit::NetworkCache::Storage::clear):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::store):

2018-10-11  Youenn Fablet  <youenn@apple.com>

        IOS 12 - Service worker cache not shared when added to homescreen
        https://bugs.webkit.org/show_bug.cgi?id=190269
        <rdar://problem/45009961>

        Reviewed by Alex Christensen.

        NetworkProcessProxy does not always have all its stores in its hash map.
        Make sure to check for the default web process pool store when grabbing cache storage parameters from a given session ID.

        Add a way to remove the default website data for testing.
        This is used in the new API test.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::deleteDefaultDataStoreForTesting):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _deleteDefaultDataStoreForTesting]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):

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

        Hide RenderLayer z-order and normal flow lists behind iterators
        https://bugs.webkit.org/show_bug.cgi?id=190457

        Reviewed by Zalan Bujtas.

        Expose the positive z-order, negative z-order and normal flow lists
        from RenderLayer as iterators rather than vectors of raw pointers.
        
        Use a lambda function to get access to the private constructor, while not having
        to refer to the nested RenderLayer::LayerIterator class in the header.

        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::WebRenderLayer):
        (WebKit::WebRenderLayer::createArrayFromLayerList): Deleted.
        * Shared/WebRenderLayer.h:

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

        iOS: Scrolling using the arrow keys doesn't show the scroll indicator like it does on macOS
        https://bugs.webkit.org/show_bug.cgi?id=190478
        <rdar://problem/22194031>

        Reviewed by Megan Gardner.

        * Platform/spi/ios/UIKitSPI.h:
        Add some SPI.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        Do a persistent flash when scrolling continuously.

        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        Do a single flash when doing a scroll-to-top/bottom.

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

        Clicking on bookmarklet crashes at NavigationState::willRecordNavigationSnapshot
        https://bugs.webkit.org/show_bug.cgi?id=190476
        <rdar://problem/32757191>

        Reviewed by Megan Gardner.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _saveBackForwardSnapshotForItem:]):
        The WKBackForwardListItem can be nil. Then we retrieve a reference from it.
        An Objective-C method that returns a reference is a great way to get
        a null reference. Other code then assumes it's not null and crashes.
        Add a nil check.

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

        Hardware keyboard arrow keys/spacebar don't scroll PDFs (works for web content)
        https://bugs.webkit.org/show_bug.cgi?id=190495
        <rdar://problem/22734616>

        Reviewed by Andy Estes.

        Hook up WKKeyboardScrollViewAnimator to the scroll view when
        WKPDFView is installed.

        * Platform/spi/ios/UIKitSPI.h:
        Move _inputFlags to the IPI section so we can remove it
        from WKContentViewInteraction.

        * SourcesCocoa.txt:
        * UIProcess/ios/WKWebEvent.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]):
        (-[WKWebEvent dealloc]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        Move WKWebEvent out of WKContentViewInteraction.
        We tend to prefer one file per class.
        Also, move the code to make a WKWebEvent from a UIEvent into
        -initWithEvent:, instead of being ad-hoc in WKContentViewInteraction.
        Adopt RetainPtr for the WKWebEvent's uiEvent property.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _handleKeyUIEvent:]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        Plumb hardware keyboard events to custom content views, if they want them.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView dealloc]):
        (-[WKPDFView web_handleKeyEvent:]):
        (-[WKPDFView web_initWithFrame:webView:mimeType:]):
        Install a WKKeyboardScrollViewAnimator and plumb key events to it.

2018-10-11  Antoine Quint  <graouts@apple.com>

        [Web Animations] Allow iOS to also control toggling Web Animations CSS Integration
        https://bugs.webkit.org/show_bug.cgi?id=190489

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setWebAnimationsCSSIntegrationEnabled:]):
        (-[WKPreferences _webAnimationsCSSIntegrationEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

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

        Reviewed by Alexey Proskuryakov.

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

        * DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
        first entry in ARCHS rather than use CURRENT_ARCH.

2018-10-11  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): Deal with the drawing area potentially being null under WebChromeClient::contentsSizeChanged()
        https://bugs.webkit.org/show_bug.cgi?id=190474

        Reviewed by Geoffrey Garen.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged const):

2018-10-11  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add mediaDevices.enumerateDevices support
        https://bugs.webkit.org/show_bug.cgi?id=185761

        Reviewed by Youenn Fablet.

        Implemented the enumerateDevices API using a new WebKit class
        (DeviceIdHashSaltStorage) that generates and stores the device ids
        hash salts per origin, used to avoid fingerprinting in the
        webpages.

        The patch also adds a new type of data for the WebsiteDataStore.
        That way the users can call the WebsiteDataStore to show what
        origins have hash salt generated and remove them at some point.

        For the moment just GTK+ and WPE ports are using this class to
        generate the hash salts. The patch adds code to the
        checkUserMediaPermissionForOrigin API implementation, it was empty
        until now for these ports. In this function we create an instance
        of a new class WebKitDeviceInfoPermissionRequest that implements
        the WebKitPermissionRequestIface interface, that allows the ports
        to use the current permission managers implemented in the
        embedders to handle this new kind of request the way they like
        it. The default implementation is deny.

        The class WebKitDeviceInfoPermissionRequest takes care of
        contacting the DeviceIdHashSaltStorage and request/regenerate the
        hash salts accordingly.

        Persistency is still not implemented, we will add it in a
        future patch.

        * Shared/WebsiteData/WebsiteDataType.h: Added the new type of
        webside data: DeviceIdHashSalt.
        * Sources.txt: Added new files to compilation.
        * SourcesGTK.txt: Ditto.
        * SourcesWPE.txt: Ditto.
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp: Added
        this class to represent a request of permission to access the
        devices information. This is specific for glib ports and implements
        the policies regarding the hash salts when the embedder allows or
        denies the access using the DeviceIdHashSaltStorage class.
        (webkitDeviceInfoPermissionRequestAllow): Get the device hash salt
        when the origin is allowed and set it in the original request.
        (webkitDeviceInfoPermissionRequestDeny): Regenerate the device id
        hash salt when the user does not allow to access the device information.
        (webkit_permission_request_interface_init):
        (webkitDeviceInfoPermissionRequestDispose):
        (webkit_device_info_permission_request_class_init):
        (webkitDeviceInfoPermissionRequestCreate): Create the class using
        the proxy request from the webprocess and a reference to the
        DeviceIdHashSaltStorage.
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
        Ditto.
        * UIProcess/API/glib/WebKitUIClient.cpp: Added the implementation
        for the checkUserMediaPermissionForOrigin API for the glib ports,
        it creates the device info request and calls the permission
        request API.
        * UIProcess/API/glib/WebKitWebsiteData.cpp:
        (recordContainsSupportedDataTypes): Added the DeviceIdHashSalt
        type.
        (toWebKitWebsiteDataTypes): Added the conversion from the WebKit
        types to the glib types for the WebsiteDataType::DeviceIdHashSalt.
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        (toWebsiteDataTypes): Added the conversion from the glib type
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT to the WebKit type.
        (webkit_website_data_manager_remove): Make sure we remote the
        DeviceIdHashSalt if the Cookies are selected.
        * UIProcess/API/gtk/WebKitDeviceInfoPermissionRequest.h: Added
        this new class that represents a permission request for the device
        information in the GTK+ port.
        * UIProcess/API/gtk/WebKitWebsiteData.h: Added the new type of
        website that in the GTK+ port:
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
        * UIProcess/API/wpe/WebKitDeviceInfoPermissionRequest.h: Added
        this new class that represents a permission request for the device
        information in the WPE port.
        * UIProcess/API/wpe/WebKitWebsiteData.h: Added the new type of
        website that in the WPE port:
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
        * UIProcess/DeviceIdHashSaltStorage.cpp: Added this new class that
        handles how to generate and store the hash salts inside
        WebKit. Persistency is still not implemented, we will add it in a
        future patch.
        (WebKit::DeviceIdHashSaltStorage::create):
        (WebKit::DeviceIdHashSaltStorage::deviceIdentifierHashSaltForOrigin):
        Check the map to get the hash salt for an origin, if there is none
        create a new random one.
        (WebKit::DeviceIdHashSaltStorage::regenerateDeviceIdentifierHashSaltForOrigin):
        Delete the hash salt of an origin if it already exists and create a new one.
        (WebKit::DeviceIdHashSaltStorage::getDeviceIdHashSaltOrigins):
        Returns the list of origins that have a hash salt generated for
        them. It is used in the WebsiteDataStore.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins):
        Deletes the hash salts in the map for an origin.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltOriginsModifiedSince):
        Delete the origins that have not been modified since a time.
        * UIProcess/DeviceIdHashSaltStorage.h: Ditto.
        * UIProcess/UserMediaPermissionCheckProxy.h: Remove uneeded class
        definition.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp: Added support to
        return and remove the origins with a generate hash salt used to
        generate the device ids.
        (WebKit::WebsiteDataStore::WebsiteDataStore): Added the new
        reference to the DeviceIdHashSaltStorage class, used to handle the
        hash salts.
        (WebKit::WebsiteDataStore::fetchDataAndApply): Get the list of
        origins with a hash salts in the DeviceIdHashSaltStorage.
        (WebKit::WebsiteDataStore::removeData): Remove the hash salts in
        DeviceIdHashSaltStorage for an origin.
        * UIProcess/WebsiteData/WebsiteDataStore.h: Ditto.
        (WebKit::WebsiteDataStore::deviceIdHashSaltStorage):
        * WebKit.xcodeproj/project.pbxproj: Added the
        DeviceIdHashSaltStorage to the compilation.

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

        Safari crashes when attempting to share a YouTube video while in full-screen
        https://bugs.webkit.org/show_bug.cgi?id=190456
        <rdar://problem/45130748>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        Allow the share sheet to present centered, since we don't have enough
        context to put it in a more sensible place.

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

        REGRESSION (r236935): Layout test fast/events/ios/keyboard-scrolling-distance.html is timing out
        https://bugs.webkit.org/show_bug.cgi?id=190444
        <rdar://problem/45110698>

        Reviewed by Simon Fraser.

        There's a race in WKKeyboardScrollingAnimator that's exacerbated by HIDEventGenerator
        being much faster than a human finger. We get our "begin" events from interpretKeyEvent,
        after the Web Content process has had its way with it, but currently the
        back-channel "handle" events (e.g. for key up, which doesn't go to interpretKeyEvent)
        are retrieved from handleKeyWebEvent in the UI process, which is *before*
        the Web Content process has had a swing at it.

        If you lose the race (an insanely short tap like you get from HIDEventGenerator,
        or with a very busy Web Content process), we see handle(keyDown), handle(keyUp), begin(keyDown),
        and get stuck scrolling!

        Instead, retrieve the out-of-band "handle" events from _didHandleKeyEvent,
        so that they're sensibly and strictly ordered with respect to the timing of interpretKeyEvent/"begin".

        Also, hook up didFinishScrolling, so that UIScriptController's callbacks work correctly.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):
        (-[WKContentView keyboardScrollViewAnimatorDidFinishScrolling:]):
        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollingAnimator displayLinkFired:]):
        (-[WKKeyboardScrollViewAnimator setDelegate:]):
        (-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollViewAnimator didFinishScrolling]):

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

        Share more WKShareSheet code between macOS and iOS, and fix a few bugs
        https://bugs.webkit.org/show_bug.cgi?id=190420

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _resolutionForShareSheetImmediateCompletionForTesting]):
        (-[WKWebView _setShareSheetCompletesImmediatelyWithResolutionForTesting:]):
        (-[WKWebView _invokeShareSheetWithResolution:]): Deleted.
        Add a new mechanism to tell the share sheet up-front that it should
        immediately dismiss with a particular resolution, for testing.
        See the Tools ChangeLog for justification.
        We keep the bit on WKWebView instead of WKShareSheet so that it can be
        called prior to invoking the share sheet.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WKShareSheet.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet initWithView:]):
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet _didCompleteWithSuccess:]):
        (-[WKShareSheet dismiss]):
        (-[WKShareSheet dispatchDidDismiss]):
        (-[WKShareSheet initWithView:initWithView:]): Deleted.
        (-[WKShareSheet _dispatchDidDismiss]): Deleted.
        (-[WKShareSheet _cancel]): Deleted.
        (-[WKShareSheet _dismissDisplayAnimated:]): Deleted.
        (-[WKShareSheet _presentFullscreenViewController:animated:]): Deleted.
        (-[WKShareSheet invokeShareSheetWithResolution:]): Deleted.
        Reduce the number of extraneous members, methods, and #ifdefs.
        Try to share as much of WKShareSheet between the platforms as makes sense.
        The interface is now totally identical on the two platforms.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showShareSheet):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView invokeShareSheetWithResolution:]): Deleted.
        Instead of silently failing (without even calling the completion handler!)
        if we try to present one share sheet on top of another, dismiss the first
        and present the new one. This is important because there are (separately
        filed) bugs on both platforms where the completion handler is not called;
        now, instead of a tab getting stuck forever, we'll reject the promise
        when another share takes place.

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

        REGRESSION (r236678): Keyboard scrolling with arrow keys doesn't work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190433
        <rdar://problem/45111986>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        (-[WKKeyboardScrollingAnimator beginWithEvent:]): Deleted.
        (-[WKKeyboardScrollViewAnimator beginWithEvent:]): Deleted.
        r236678 changes the characters in charactersIgnoringModifiers to match AppKit.
        We similarly need to update WKKeyboardScrollingAnimator's comparison.

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
        https://bugs.webkit.org/show_bug.cgi?id=190429

        Reviewed by Saam Barati.

        Use `tryCreate` or new `create`. If we use new `create`, we can use Ref<> and remove null check.

        * Shared/API/c/WKString.cpp:
        (WKStringCopyJSString):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::toJSValue):
        (WebKit::callPropertyFunction):
        (WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::runScriptsInPDFDocument):

2018-10-10  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): Assertion hit under WebPageProxy::didNavigateWithNavigationData()
        https://bugs.webkit.org/show_bug.cgi?id=190418
        <rdar://problem/45059769>

        Reviewed by Geoffrey Garen.

        When process swapping and "suspending" the previous WebProcess in a SuspendedPageProxy,
        we need to keep around the main frame's ID that still exists on in this process. This
        is needed so that we can re-create a UI-side WebFrameProxy for the WebFrame that exists
        in the WebProcess, if we ever swap back to this suspended process (see login in
        WebPageProxy::swapToWebProcess()).

        The bug was that the main frame ID was stored on the WebPageProxy via m_mainFrameID instead of the
        SuspendedPageProxy. This means that m_mainFrameID would get overriden when navigating in the new
        WebProcess with the value 1 (because WebFrame identifiers start at 1 and are per-WebProcess).
        This would lead to us constructing a WebFrameProxy with the wrong frame identifier in
        WebPageProxy::swapToWebProcess(), which would override an existing unrelated WebFrame in the
        WebProcessProxy's HashMap of frames. This would lead to crashes later on as the WebFrame
        would not be associated to the WebPageProxy we expect.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::mainFrameID const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maybeCreateSuspendedPage):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCreateMainFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::suspendWebPageProxy):
        * UIProcess/WebProcessProxy.h:

2018-10-10  Antti Koivisto  <antti@apple.com>

        Do domain prewarming for processes for new tabs
        https://bugs.webkit.org/show_bug.cgi?id=190425

        Reviewed by Chris Dumez.

        We currently only do domain prewarming for navigation process swaps.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        Do domain prewarming when using an existing but so far unused process.

        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):

        Factor into a function.

        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):

        This didn't usually get invoked.

        (WebKit::WebPage::didReceivePolicyDecision):
        (WebKit::WebPage::didFinishLoad):

        Update prewarm information when a top level load finishes.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:

2018-10-09  Antoine Quint  <graouts@apple.com>

        Remove the frames() timing function
        https://bugs.webkit.org/show_bug.cgi?id=190034
        <rdar://problem/44827544>

        Reviewed by Dean Jackson.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FramesTimingFunction>::encode): Deleted.
        (IPC::ArgumentCoder<FramesTimingFunction>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::PlatformCAAnimationRemote::Properties::encode const):
        (WebKit::PlatformCAAnimationRemote::Properties::decode):

2018-10-09  Youenn Fablet  <youenn@apple.com>

        ASSERTION FAILED: m_cachesLocks.contains(sessionID) in WebKit::CacheStorageEngineConnection::dereference(PAL::SessionID, unsigned long long)
        https://bugs.webkit.org/show_bug.cgi?id=190373
        <rdar://problem/45106402>

        Reviewed by Alex Christensen.

        This assertion can be hit if:
        - WebProcess has a DOMCache
        - NetworkProcess crashes
        - WebProcess navigates and dereference DOMCache.
        Remove this assertion as it is hit when a test is using testRunner.terminateNetworkProcess().

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

2018-10-09  Jer Noble  <jer.noble@apple.com>

        Crash when closing WKWebView during enter fullscreen animation
        https://bugs.webkit.org/show_bug.cgi?id=190412

        Reviewed by Brian Burg.

        We need a valid _webView if, during -[NSWindow close], we catch a notification saying we failed to enter
        fullscreen and try to replace the placeholder with the actual _webView.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController close]):

2018-10-09  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r231663) loading in hidden WKWebViews stalls because WebProcess is suspended
        https://bugs.webkit.org/show_bug.cgi?id=190417
        <rdar://problem/43391014>

        Reviewed by Chris Dumez.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):
        Revert r321663, but keep the change to TestWKWebView.mm because that made the tests more reliable.

2018-10-09  Chris Dumez  <cdumez@apple.com>

        Allow behavior when the parent process IPC::Connection closes to be overridden by ChildProcess subclasses
        https://bugs.webkit.org/show_bug.cgi?id=190294

        Reviewed by Geoffrey Garen.

        Allow behavior when the parent process IPC::Connection closes to be overridden by ChildProcess subclasses.
        This will be useful to allow the NetworkProcess to not exit if it still has pending downloads.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::callExitSoon):
        (WebKit::NetworkProcess::initializeConnection):
        * NetworkProcess/NetworkProcess.h:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::callExit):
        (WebKit::PluginProcess::initializeConnection):
        * PluginProcess/PluginProcess.h:
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::didClose):
        (WebKit::ChildProcess::initialize):
        (WebKit::callExitNow): Deleted.
        (WebKit::callExitSoon): Deleted.
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::shouldCallExitWhenConnectionIsClosed const): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::callExit):
        (WebKit::WebProcess::initializeConnection):

2018-10-09  Jer Noble  <jer.noble@apple.com>

        WebDriver: thrown ObjC exception under -[WKFullScreenWindowController windowDidFailToEnterFullScreen:] when session is terminated
        https://bugs.webkit.org/show_bug.cgi?id=190098
        <rdar://problem/42822671>

        Reviewed by Brian Burg.

        Forcibly exit fullscreen in resetState(), while the VideoFullscreenManagerProxy is still valid.

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

2018-10-09  Daniel Bates  <dabates@apple.com>

        [iOS] Ignore some deprecated declarations
        https://bugs.webkit.org/show_bug.cgi?id=190371

        Reviewed by Dan Bernstein.

        * UIProcess/ios/WKActionSheet.mm:
        (-[WKActionSheet init]):
        (-[WKActionSheet presentSheet:]):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant presentSheet]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        (-[WKMultipleSelectPicker initWithView:]):
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController initWithView:hasGroups:]):

2018-10-09  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Explicitly link against gmodule where used
        https://bugs.webkit.org/show_bug.cgi?id=190398

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake:

2018-10-09  Chris Dumez  <cdumez@apple.com>

        PSON: Doing a cross-site navigation via the URL bar does not swap process on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190378
        <rdar://problem/45059466>

        Reviewed by Geoffrey Garen.

        Process swapping was sometimes not happening via URL bar navigation on iOS due to top-hit preloading,
        which would use a new WKWebView for the speculative load and rely on the _relatedWebView SPI to use
        the same WebContent process as the view currently on screen.

        To address the issue, if the source URL is empty and the page has a related page, use the related
        page's URL as source URL when doing the process-swap decision.

        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::relatedPage const):
        (API::PageConfiguration::relatedPage): Deleted.
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-10-09  Andy Estes  <aestes@apple.com>

        [iOS] Replace @"UIPreviewDataAttachmentListIsContentManaged" with a UIKit constant
        https://bugs.webkit.org/show_bug.cgi?id=190400
        <rdar://problem/35442879>

        Reviewed by Wenson Hsieh.

        Also fixed the iOS version check in WKContentViewInteraction.mm.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):

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

        REGRESSION (r232416): Can not scroll after swiping back on quoteunquoteapps.com
        https://bugs.webkit.org/show_bug.cgi?id=190377
        <rdar://problem/45108222>

        Reviewed by Andy Estes.

        Introduce the notion of 'pausing' to SnapshotRemovalTracker.
        Reimplement r232416 in terms of this: the SnapshotRemovalTracker
        starts out paused (not accepting events), and un-pauses when
        we get a provisional load or same-document navigation.
        This way, we don't lose the watchdog timer in cases where we get
        no provisional load, same-document navigation, or main frame load
        (which is the separate root cause for this bug -- this just papers
        over it with a timeout).

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        Resume the snapshot removal tracker.

        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        If we didn't see a provisional load or same document navigation,
        but somehow got to the terminal load state, immediately remove the snapshot.
        
        (WebKit::ViewGestureController::SnapshotRemovalTracker::resume):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::start):
        Start the SnapshotRemovalTracker out in the paused state; it will be
        resumed in the same places we previously would call the
        provisionalOrSameDocumentLoadCallback.

        (WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
        Ignore (but debug log) incoming events while paused.

        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::pause):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::isPaused const):
        Add the pausing bit.

        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        Remove m_provisionalOrSameDocumentLoadCallback.

2018-10-09  Antti Koivisto  <antti@apple.com>

        Prewarm FontDatabase on process swap
        https://bugs.webkit.org/show_bug.cgi?id=190312

        Reviewed by Chris Dumez.

        Add mechanism for caching prewarm information per domain on UI process side. This information
        is then passed to newly initialized web processes that are being used for the same domain.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        Pass prewarm information on process swap to the new process.

        (WebKit::WebProcessPool::didCollectPrewarmInformation):

        UI process side cache.

        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didCollectPrewarmInformation):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        (WebKit::WebPage::didReceivePolicyDecision):

        Collect and cache prewarm information for the previous process on process swap.

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

        Renamed for clarity.

        (WebKit::WebProcess::prewarmWithDomainInformation):
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WK2] Add support for text alignment and text lists in font attributes
        https://bugs.webkit.org/show_bug.cgi?id=190342
        <rdar://problem/44767118>

        Reviewed by Tim Horton.

        Add encoding and decoding for text alignment and text lists in FontAttributes.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FontAttributes>::encode):
        (IPC::ArgumentCoder<FontAttributes>::decode):

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325
        <rdar://problem/44990443>

        Reviewed by Dean Jackson.

        Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Followup to r236942: Make input type=color an internal feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Rubber-stamped by Dean Jackson.

        I've learned from Dean that an internal feature is more suitable than an experimental feature in this scenario.

        * Shared/WebPreferences.yaml:

2018-10-08  Aditya Keerthi  <akeerthi@apple.com>

        Make <input type=color> a runtime enabled (on-by-default) feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Reviewed by Wenson Hsieh and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:

        Add an experimental feature flag for input type=color.

        * UIProcess/mac/WebColorPickerMac.mm:
        (-[WKPopoverColorWell webDelegate]):
        (-[WKPopoverColorWell setWebDelegate:]):

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

        Try to fix the build

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:

2018-10-08  Brian Burg  <bburg@apple.com>

        [Mac] Web Automation: some keyboard interactions don't generate events, causing event simulation to stall
        https://bugs.webkit.org/show_bug.cgi?id=190316
        <rdar://problem/42833290>

        Reviewed by Tim Horton.

        Some users have reported that Cmd-A for Select All no longer works in safaridriver.
        Instead, this hangs the session. This happens because the WebAutomationSession class
        assumes that each call to simulateKeyboardInteraction causes keyboard events to be processed,
        but in corner cases like Cmd-A, some events that we simulate are swallowed by AppKit and
        never make it back to WebKit. Because the session never gets the "keyboard events flushed"
        callback, it assumes the interaction is still ongoing, and never returns, causing a hang.

        This patch consists of two parts:
         - Add logging of important state changes and events when simulating user input.
         - Make code more robust when simulating key actions that generate no events on macOS.

        This change progresses WPT test key_shortcuts.py::test_mod_a_and_backspace_deletes_all_text on Mac.

        * Platform/Logging.h: Add a logging channel.
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired):
        (WebKit::SimulatedInputDispatcher::transitionBetweenKeyFrames):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        (WebKit::SimulatedInputDispatcher::run):
        (WebKit::SimulatedInputDispatcher::finishDispatching):
        Add a bunch of logging so its easier to figure out where things get stuck.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::simulateKeyboardInteraction):
        In some cases, no keyboard events need to be processed for the simulated interaction.
        When that happens, early exit rather than waiting for keyboard events to be flushed.

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Logging.
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        On Mac, if you tap a character key while Command is held down, only a KeyDown event
        is forwarded to the first responder by AppKit, even if you send a KeyUp event too.
        In this case don't send an NSEvent since it won't ever be delivered back to WebKit.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isProcessingKeyboardEvents const): Expose this state for keyboard
        events too.

2018-10-08  Youenn Fablet  <youenn@apple.com>

        NetworkCache::Storage should be WTF::DestructionThread::Main
        https://bugs.webkit.org/show_bug.cgi?id=190324

        Reviewed by Alex Christensen.

        Use WTF::DestructionThread::Main to make sure that Storage is destroyed in the main thread.
        Remove the code that was making sure that any ref was destroyed in the main thread.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp: Make sure the completion handler is not null.
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation): Make it clear that a ref is taken.
        (WebKit::NetworkCache::Storage::Storage):
        (WebKit::NetworkCache::Storage::synchronize): Protect 'this' when dispatching back to the main thread.
        Move the code that was after dispatch before dispatch to allow moving protectedThis in the dispatch lambda.
        (WebKit::NetworkCache::Storage::remove):
        (WebKit::NetworkCache::Storage::traverse):
        (WebKit::NetworkCache::Storage::clear):
        (WebKit::NetworkCache::Storage::deleteOldVersions):
        * NetworkProcess/cache/NetworkCacheStorage.h:

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

        Adjust keyboard scrolling animator to springy and semiphysical
        https://bugs.webkit.org/show_bug.cgi?id=190345
        <rdar://problem/43494393>

        Reviewed by Simon Fraser.

        Introduce WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
        and provides a reasonable set of default behaviors for UIScrollView.
        This is the first step on the way to WKKeyboardScrollingAnimator
        being platform- and toolkit-agnostic, and helps avoid adding a whole
        bunch of code to WKContentView.

        Adopt UIKit's scroll-to-top animation curve for whole-document scrolls.

        Adjust WKKeyboardScrollingAnimator's physics; it now simulates a spring
        attached to the page when decelerating. When a key is pressed, it applies
        a constant force to the page (up to some maximum velocity). When released,
        the spring causes the page to decelerate smoothly.

        Add rubber-banding to keyboard scrolling, based on the same spring that
        decelerates the page.

        Remove the initial bounce on keydown before starting the smooth scroll.

        Remove arrow key commands from WKContentView; this avoids double-processing
        incoming arrow key events, makes the event stream make more sense, and was
        entirely unnecessary.

        * Platform/spi/ios/UIKitSPI.h:
        Add a wide variety of useful SPI.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        Remove _scrollByContentOffset:animated: because it's only used by
        the keyboard scrolling mechanism.

        Remove _arrowKey because we're removing the arrow key commands.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        Create a WKKeyboardScrollViewAnimator (which knows how to directly
        manipulate a UIScrollView) instead of a WKKeyboardScrollingAnimator
        (which requires its clients to implement everything in terms of an
        abstract interface.

        (-[WKContentView scrollViewWillStartPanOrPinchGesture]):
        Inform the keyboard scrolling animator that the user is going to start
        an interactive gesture that needs control of the scroll view, so it
        can stop its current animated scroll.

        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView keyCommands]):
        (-[WKContentView _arrowKeyForWebView:]): Deleted.
        Remove arrow key commands.

        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        Scale from content to WKWebView coordinate space; the keyboard scrolling
        animator operates in WKWebView coordinates. This was broken before.

        (-[WKContentView keyboardScrollViewAnimatorWillScroll:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView isKeyboardScrollable]): Deleted.
        (-[WKContentView distanceForScrollingIncrement:]): Deleted.
        (-[WKContentView scrollByContentOffset:animated:]): Deleted.
        Reimplement these as keyboardScrollViewAnimator delegate methods.

        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        Add WKKeyboardScrollViewAnimator, hide the interface for
        WKKeyboardScrollingAnimator itself in the implementation file.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator initWithScrollable:]):
        (-[WKKeyboardScrollingAnimator parameters]):
        (-[WKKeyboardScrollingAnimator invalidate]):
        (unitVector):
        Return a unit vector in the given direction.

        (perpendicularAbsoluteUnitVector):
        Return a positive unit vector perpendicular to the axis of the given direction.
        Useful for multiplying with another vector to remove the component in the
        axis of the given direction.

        (boxSide):
        Convert ScrollingDirection to WebCore::PhysicalBoxSide, for use with RectEdges.

        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        Instead of just returning the desired increment, compute everything we'll need
        for the lifetime of the scroll (including the force applied, maximum
        velocity, etc.) and return them together.

        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        Use the scrollable's native scroll-to-extent animation (e.g. UIScrollView's
        scroll-to-top curve) for whole-document scrolls.

        Remove the first discrete scroll; start the smooth scroll immediately.

        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):
        (farthestPointInDirection):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        Stop the current scroll. Let the spring coast to its natural stopping
        point given the system's current energy, unless that stopping point is
        less than one increment from the starting point. In that case, we attach
        the spring to /that/ point and let it run.

        (-[WKKeyboardScrollingAnimator startDisplayLinkIfNeeded]):
        (-[WKKeyboardScrollingAnimator stopDisplayLink]):
        (-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
        Immediately stop all motion if the user touches the screen to scroll
        or zoom with fingers.

        (-[WKKeyboardScrollingAnimator displayLinkFired:]):
        Update the position of the scrollable based on the applied force and spring.
        See the comments in this function for more details.

        (-[WKKeyboardScrollViewAnimator init]):
        (-[WKKeyboardScrollViewAnimator initWithScrollView:]):
        (-[WKKeyboardScrollViewAnimator dealloc]):
        (-[WKKeyboardScrollViewAnimator invalidate]):
        (-[WKKeyboardScrollViewAnimator setDelegate:]):
        (-[WKKeyboardScrollViewAnimator willStartInteractiveScroll]):
        (-[WKKeyboardScrollViewAnimator beginWithEvent:]):
        (-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollViewAnimator isKeyboardScrollable]):
        (-[WKKeyboardScrollViewAnimator distanceForIncrement:]):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        (-[WKKeyboardScrollViewAnimator contentOffset]):
        (-[WKKeyboardScrollViewAnimator boundedContentOffset:]):
        (-[WKKeyboardScrollViewAnimator interactiveScrollVelocity]):
        (-[WKKeyboardScrollViewAnimator scrollableDirectionsFromOffset:]):
        (-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
        Add WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
        and provides animated keyboard scrolling for a UIScrollView without much
        additional plumbing work. It contains reasonable default behaviors,
        with a few optional delegate methods for customization.

        (-[WKKeyboardScrollingAnimator _scrollOffsetForEvent:]): Deleted.
        (-[WKKeyboardScrollingAnimator startAnimatedScroll]): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Remove dead code: VideoFullscreenModel::isVisible()
        https://bugs.webkit.org/show_bug.cgi?id=190356

        Reviewed by Jon Lee.

        Remove isVisible since it is no longer used.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::isVisible const): Deleted.
        (WebKit::VideoFullscreenManagerProxy::isVisible const): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

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

        Reviewed by Jon Lee.

        Remove resetMediaState since it is no longer used.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionManagerProxy::resetMediaState): Deleted.
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::resetMediaState): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Use MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
        https://bugs.webkit.org/show_bug.cgi?id=190357

        Reviewed by Jon Lee.

        Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::setVideoLayerGravity):
        (WebKit::VideoFullscreenManagerProxy::setVideoLayerGravity):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::setVideoLayerGravityEnum):

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

        Remove WKBundleFileHandleRef
        https://bugs.webkit.org/show_bug.cgi?id=190360

        Reviewed by Tim Horton.

        WKBundleFrameGetJavaScriptWrapperForFileForWorld and WKBundleFileHandleCreateWithPath were only used in Mail
        and were removed in rdar://problem/44955158
        I need to remove them for rdar://problem/24576194

        * Shared/API/APIObject.h:
        * Shared/API/c/WKDeprecated.h:
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKBundleFrameGetJavaScriptWrapperForFileForWorld):
        (WKBundleFileHandleCreateWithPath):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.cpp: Removed.
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameGetJavaScriptWrapperForFileForWorld): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp: Removed.
        * WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.h: Removed.
        * WebProcess/WebPage/WebFrame.cpp:
        * WebProcess/WebPage/WebFrame.h:

2018-10-08  Konstantin Tokarev  <annulen@yandex.ru>

        Validation in Connection::readBytesFromSocket() is too aggressive
        https://bugs.webkit.org/show_bug.cgi?id=190281

        Reviewed by Michael Catanzaro.

        Since r217206 Connection::readBytesFromSocket() validates size of
        control message. However, it compares cmsg_len with attachmentMaxAmount,
        while Connection::sendOutgoingMessage() computes it as
        CMSG_LEN(sizeof(int) * attachmentFDBufferLength) where
        attachmentFDBufferLength <= attachmentMaxAmount. This mismatch between
        sender and receiver leads to possibility of assertion failure with large
        number of attachments, e.g. here 62 attachments have cmsg_length == 264.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::readBytesFromSocket):

2018-10-08  Chris Dumez  <cdumez@apple.com>

        Have DOMWindowProperty get is frame from its associated DOMWindow
        https://bugs.webkit.org/show_bug.cgi?id=190341

        Reviewed by Alex Christensen.

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

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

        Tried to fix HAVE(LINK_PREVIEW) iOS builds.

        * UIProcess/WKImagePreviewViewController.mm:
        (-[WKImagePreviewViewController previewActions]):

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

        Tried to fix the macOS Mojave build.

        * UIProcess/API/Cocoa/LegacyBundleForClass.mm:

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

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

        Reviewed by Andy Estes.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
          CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and
          CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

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

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        * UIProcess/API/Cocoa/WKConnection.mm:
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        * UIProcess/API/Cocoa/WKTypeRefWrapper.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
        * UIProcess/API/mac/WKView.mm:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

          Suppressed -Wdeprecated-implementations around some class, category and method
          implementations the above files.

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

        REGRESSION(r236154) Page loads are not drawn when loaded in shipped Safari11/12
        https://bugs.webkit.org/show_bug.cgi?id=190202

        Reviewed by Youenn Fablet.

        Safari11/12 had a WKPageLoaderClient and a WKPageNavigationClient.
        It did not actually draw the page until its WKPageNavigationClient.renderingProgressDidChange was called.
        r236154 made it so we only call WKPageLoaderClient.didLayout if an application has both clients.
        This fixes open source WebKit running with shipped Safari.

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

2018-10-05  Chris Dumez  <cdumez@apple.com>

        [PSON] Drop snapshotting workaround introduced in r235898
        https://bugs.webkit.org/show_bug.cgi?id=190314

        Reviewed by Geoffrey Garen.

        Drop snapshotting workaround introduced in r235898 as it is no longer needed now
        that the flashing bug has been fixed.

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

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

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraints>::encode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
        (-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-10-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236866.

        Breaks internal builds.

        Reverted changeset:

        "Add support for reporting "display composited video frames"
        through the VideoPlaybackQuality object."
        https://bugs.webkit.org/show_bug.cgi?id=190266
        https://trac.webkit.org/changeset/236866

2018-10-05  Zach Li  <zachli@apple.com>

        Expose whether WKWebProcessPlugInNodeHandle is a select element to clients
        https://bugs.webkit.org/show_bug.cgi?id=190302
        <rdar://problem/45031469>

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        Introduce a new property `isSelectElement`.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (-[WKWebProcessPlugInNodeHandle isSelectElement]):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::InjectedBundleNodeHandle::isSelectElement const):
        Check whether the node is a select element.
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

2018-10-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] [WK2] Expose some more editing SPI on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190232
        <rdar://problem/44963368>

        Reviewed by Tim Horton.

        Exposes a few additional editing commands as SPI on WKWebView, by defining a new extension on WKWebView that
        also conforms to <UIResponderStandardEditActions>. This patch implements nearly all of the remaining
        unimplemented methods on UIResponderStandardEditActions, and the new extension augments this set of editing
        methods by adding additional editing helpers that don't currently exist on iOS (e.g. toggleStrikeThrough and
        insertUnorderedList). The names of these new methods have been largely been borrowed from their counterparts on
        macOS (see: `NSResponder.h`).

        The new edit actions are added in this patch on iOS are:

        ```
        - (void)alignCenter:(id)sender;
        - (void)alignJustified:(id)sender;
        - (void)alignLeft:(id)sender;
        - (void)alignRight:(id)sender;
        - (void)indent:(id)sender;
        - (void)insertOrderedList:(id)sender;
        - (void)insertUnorderedList:(id)sender;
        - (void)outdent:(id)sender;
        - (void)toggleStrikeThrough:(id)sender;
        - (void)setFont:(UIFont *)font sender:(id)sender;
        - (void)setFontSize:(CGFloat)fontSize sender:(id)sender;
        - (void)setTextColor:(UIColor *)color sender:(id)sender;
        ```

        Tests:  WKWebViewEditActions.ListInsertion
                WKWebViewEditActions.ChangeIndentation
                WKWebViewEditActions.SetAlignment
                WKWebViewEditActions.ToggleStrikeThrough
                WKWebViewEditActions.ChangeFontSize
                WKWebViewEditActions.SetTextColor
                WKWebViewEditActions.SetFontFamily

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]):

        Update this to handle the new editing actions. For now, we simply treat all of the new edit actions in the same
        way as we currently treat bold, italic and underline: that is, they are enabled only when the user is in a
        richly contenteditable element.

        (-[WKWebView setFont:sender:]):
        (-[WKWebView setFontSize:sender:]):

        Construct and send a set of FontChanges.

        (-[WKWebView setTextColor:sender:]):

        Invoke "ForeColor" with the serialized color representation. This allows us to handle `rgba()` color values,
        which hex format would not permit.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add the new SPI.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::changeFontAttributes):
        (WebKit::WebPageProxy::changeFont):

        Pull logic for applying font and font attribute style changes out of macOS-specific code, and into
        platform-agnostic code in WebPage and WebPageProxy.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:

        Add the new supported editing commands as supported actions in WKWebView. The only new editing commands that
        aren't present in this list are -setFont:sender:, -setColor:sender:, and -setFontSize:sender: which are manually
        handled in places where the `FOR_EACH_WKCONTENTVIEW_ACTION` macro is otherwise used. In a followup, we could
        consider augmenting `FOR_EACH_WKCONTENTVIEW_ACTION` to handle actions with multiple arguments.

        * UIProcess/ios/WKContentViewInteraction.mm:

        Define a new helper macro here to define boilerplate implementations of the -…ForWebView edit command
        implementations that turn around and invoke `_page->executeEditCommand` with no additional arguments, and an
        edit command name matching that of the WebCore edit command.

        (-[WKContentView toggleStrikeThroughForWebView:]):
        (-[WKContentView increaseSizeForWebView:]):
        (-[WKContentView decreaseSizeForWebView:]):
        (-[WKContentView setFontForWebView:sender:]):
        (-[WKContentView setFontSizeForWebView:sender:]):
        (-[WKContentView setTextColorForWebView:sender:]):
        (-[WKContentView canPerformActionForWebView:sender:]):

        Add …ForWebView plumbing for the new editing actions, so they turn around and call into WKContentView by
        default, but behavior may be overridden in WKWebView.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::changeFontAttributes): Deleted.
        (WebKit::WebPageProxy::changeFont): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::changeFontAttributes):
        (WebKit::WebPage::changeFont):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::changeFontAttributes): Deleted.
        (WebKit::WebPage::changeFont): Deleted.

2018-10-04  Jer Noble  <jer.noble@apple.com>

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
        (-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-10-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add SPI to expose typing attributes at the current selection on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190119
        <rdar://problem/44767062>

        Reviewed by Tim Horton.

        Add support for new WebKit2 SPI to notify the UI delegate about font attributes when the editor state changes
        (e.g. due to selection changes, or executing an edit command). See below for more detail.

        Test: FontAttributes.FontAttributesAfterChangingSelection

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add a new optional `FontAttributes` member to EditorState's post-layout data. FontAttributes are computed and
        sent over IPC only if the UI delegate implements the new delegate hook which requires information about font
        attributes.

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

        Add a new flag for the UI process to let a new web page know whether it should additionally compute font
        attributes when computing editor state.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::needsFontAttributes const):
        (API::UIClient::didChangeFontAttributes):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didChangeEditorState]):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didChangeFontAttributes):

        Call out to the UI delegate with a font attribute dictionary, created via FontAttributes on EditorState's
        post-layout data.

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

        Update whether or not the UI process needs to know about font attributes. The UI process only requires font
        attribute information if the UI delegate implements `-_webView:didChangeFontAttributes:`.

        (WebKit::WebPageProxy::setNeedsFontAttributes):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::editorStateChanged):

        Update the cached font attributes in the UI process when receiving a new editor state update.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::editorState const):
        (WebKit::WebPage::setNeedsFontAttributes):

        Add a new IPC hook to update whether or not the page should additionally compute font attributes. In the case
        where the UI delegate changes from something that does not require font attributes to one that does, we
        additionally schedule an editor state update.

        (WebKit::WebPage::updateFontAttributesAfterEditorStateChange):

        Private helper function to plumb FontAttributes to the UI client after an editor state change.

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

2018-10-04  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):

2018-10-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236730.

        This caused a consistent crash in test http/tests/media/media-
        stream/get-display-media-prompt.html.

        Reverted changeset:

        "[MediaStream] RealtimeMediaSource should be able to vend
        hashed IDs"
        https://bugs.webkit.org/show_bug.cgi?id=190142
        https://trac.webkit.org/changeset/236730

2018-10-04  Brian Burg  <bburg@apple.com>

        Web Automation: clear pending callbacks when the session terminates
        https://bugs.webkit.org/show_bug.cgi?id=190259
        <rdar://problem/44958352>

        Reviewed by Joseph Pecoraro.

        WebAutomationSession::terminate() can be called at any time to nuke the session.
        However, it's possible that the session is in the midst of simulating keyboard/mouse
        events. While in that state, there are some CompletionHandler objects waiting
        for key/mouse events to be flushed. We need to empty out callback maps with
        CompletionHandler instances so that they do not assert because they were never called.

        I was able to test this manually by running a test that erroneously hangs
        while waiting for keyboard input. While the test was hung, I killed the NetworkProcess
        manually to trigger WebAutomationSession::terminate(). From there, I saw that the
        Perform Actions REST API call gets cancelled with the appropriate error code.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::terminate):

2018-10-04  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Move time out control from WebProcess to UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=189642
        <rdar://problem/44476765>

        Reviewed by Chris Dumez.

        Besides adding a time out timer in the AuthenticatorManager, this patch also adds a new
        option in MockWebAuthenticationConfiguration to turn on silent failure which is the
        default policy of treating authenticators' error as suggested by spec.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::makeCredential):
        (WebKit::AuthenticatorManager::getAssertion):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        (WebKit::AuthenticatorManager::requestTimeOutTimer):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-10-04  Yuhan Wu  <yuhan_wu@apple.com>

        runtime flag and IDL for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=190018

        Reviewed by Youenn Fablet and Chris Dumez.

        * Shared/WebPreferences.yaml:

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

        Tried to fix non-Cocoa, ENABLE(ATTACHMENT_ELEMENT) builds after r236822.

        * UIProcess/PageClient.h:

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

        [Cocoa] Let clients specify an NSFileWrapper subclassed to be used for _WKAttachment
        https://bugs.webkit.org/show_bug.cgi?id=190270

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]): Copy new _attachmentFileWrapperClass ivar.
        (-[WKWebViewConfiguration _attachmentFileWrapperClass]): Added this getter.
        (-[WKWebViewConfiguration _setAttachmentFileWrapperClass:]): Added this setter, which raises
          an exception if the argument is not an NSFileWrapper subclass.

        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Declared new property.

        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance): Added. Allocates an instance of
          the class specified in the configuration, or NSFileWrapper if no custom class is specified.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::platformRegisterAttachment): Use PageClient::allocFileWrapperInstance
          instead of allocating an NSFileWrapper instance.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::allocFileWrapperInstance): Defined new function. The default
          implementation returns nil.

2018-10-03  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-03  Zamiul Haque  <zhaque@apple.com>

        Search does not cancel after number of matching terms exceed set max limit
        https://bugs.webkit.org/show_bug.cgi?id=190020
        <rdar://problem/39585214>

        Reviewed by Andy Estes.

        When searching a PDF document on MobileSafari, the maximum number of matching
        terms are limited to a set constant. Beyond this limit, a PDF document should not
        be searched, since the UI will not be updated correspondingly. To this effect,
        a new SPI was made to cancel a search when the maximum limit of matching terms
        is reached. This is done without clearing the highlighting for the all the terms
        that were found under the limit. This bug was a result of not having implemented 
        the new SPI in WKPDFView.

        This will be tested in a follow-up patch, after re-enabling WKPDFView tests
        on iOS 12.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView pdfHostViewController:findStringUpdate:done:]):

2018-10-03  Brian Burg  <bburg@apple.com>

        [Cocoa] REGRESSION: web content process paused in debugger is considered to be unresponsive if WebKit client is sandboxed
        https://bugs.webkit.org/show_bug.cgi?id=190256
        <rdar://problem/44957921>

        Reviewed by Alexey Proskuryakov.

        Instead of giving up when the client is sandboxed, check whether it has the
        exception that's necessary to get process information. If it is possible,
        proceed to check whether the web content process has a debugger attached.

        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::platformIsBeingDebugged const):
        Check 'process-info-pidinfo' to see if the sysctl call would be allowed.

2018-10-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Enable MSE by default
        https://bugs.webkit.org/show_bug.cgi?id=190243

        Reviewed by Xabier Rodriguez-Calvar.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init):

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

        Deprecate WKConnection
        https://bugs.webkit.org/show_bug.cgi?id=190147

        Reviewed by Andy Estes.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * UIProcess/API/Cocoa/WKConnection.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (didReceiveMessage):
        (didClose):
        * UIProcess/API/Cocoa/WKConnectionInternal.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:

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

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

        Reviewed by Simon Fraser.

        Implement the UI-side process for triggering a GPU mux.

        * Platform/Logging.h: Add a WebGL logging channel.

        * SourcesCocoa.txt: Add the new files: WebSwitchingGPUClient and HighPerformanceGPUManager.

        * UIProcess/Cocoa/WebProcessProxyCocoa.mm: UI process calls that use HighPerformanceGPUManager
        to keep track of whether or not this process needs the high-performance GPU.
        (WebKit::WebProcessProxy::requestHighPerformanceGPU):
        (WebKit::WebProcessProxy::releaseHighPerformanceGPU):

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::~WebProcessProxy): Make sure to unregister with the HighPerformanceGPUManager
        as the process disappears without manually removing itself (e.g. crashes).
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in: New messages.

        * UIProcess/mac/HighPerformanceGPUManager.cpp: New class that copies most of what used
        to live in GraphicsContext3DManager. It creates a CGLPixelFormat object when it sees
        that at least one process needs the high-performance GPU.
        (WebKit::HighPerformanceGPUManager::singleton):
        (WebKit::HighPerformanceGPUManager::addProcessRequiringHighPerformance):
        (WebKit::HighPerformanceGPUManager::removeProcessRequiringHighPerformance):
        (WebKit::HighPerformanceGPUManager::updateState):
        * UIProcess/mac/HighPerformanceGPUManager.h: Added.

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

        * WebProcess/WebCoreSupport/mac/WebSwitchingGPUClient.cpp: Implementation of the SwitchingGPUClient for
        WebCore, which sends messages to the UI process.
        (WebKit::WebSwitchingGPUClient::singleton):
        (WebKit::WebSwitchingGPUClient::requestHighPerformanceGPU):
        (WebKit::WebSwitchingGPUClient::releaseHighPerformanceGPU):
        * WebProcess/WebCoreSupport/mac/WebSwitchingGPUClient.h: Added.

        * WebProcess/cocoa/WebProcessCocoa.mm: Register the GPUClient.
        (WebKit::WebProcess::platformInitializeProcess):

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

        Fix a potential crash in NetworkProcess::deleteWebsiteDataForOrigins
        https://bugs.webkit.org/show_bug.cgi?id=190220

        Reviewed by Chris Dumez.

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

2018-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit2] Format > Bold and Format > Italic don't toggle between bold and italic style
        https://bugs.webkit.org/show_bug.cgi?id=179787
        <rdar://problem/35593389>

        Reviewed by Tim Horton.

        Fixes the bug by relaxing our policy in WebViewImpl::updateFontManagerIfNeeded. Instead of updating only when
        the font panel is visible, update when either the font panel is visible, or the selection is in a richly
        editable area. In the latter case, an up-to-date NSFontManager state is needed in order for certain font
        formatting menu items, such as bold and italic, to correctly toggle state.

        Test: FontManagerTests.ToggleBoldAndItalicWithMenuItems

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver observeValueForKeyPath:ofObject:change:context:]):
        (WebKit::WebViewImpl::selectionDidChange):
        (WebKit::WebViewImpl::updateFontManagerIfNeeded):

        Rename updateFontPanelIfNeeded to updateFontManagerIfNeeded, to reflect the new behavior.

        (WebKit::WebViewImpl::changeFontAttributesFromSender):
        (WebKit::WebViewImpl::changeFontFromFontManager):
        (WebKit::WebViewImpl::updateFontPanelIfNeeded): Deleted.

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

        Remove ParsedURLString
        https://bugs.webkit.org/show_bug.cgi?id=190154

        Reviewed by Chris Dumez.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::streamWillSendRequest):
        (WebKit::PluginControllerProxy::streamDidReceiveResponse):
        (WebKit::PluginControllerProxy::manualStreamDidReceiveResponse):
        * Shared/API/APIUserContentURLPattern.h:
        (API::UserContentURLPattern::matchesURL const):
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::handleRequest):
        (WebKit::RemoteInspectorProtocolHandler::targetListChanged):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::openURL):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addProcessToOriginCacheSet):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::createShareMenuItem):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::addUserScript):
        (WebKit::InjectedBundle::addUserStyleSheet):
        (WebKit::InjectedBundle::removeUserScript):
        (WebKit::InjectedBundle::removeUserStyleSheet):
        * WebProcess/Plugins/Plugin.cpp:
        (WebKit::Plugin::Parameters::decode):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::url):
        (WebKit::WebPlatformStrategies::readURLFromPasteboard):

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

        Remove CSS Animation Triggers
        https://bugs.webkit.org/show_bug.cgi?id=190175
        <rdar://problem/44925626>

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-10-02  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r236662): Fix -Wformat warnings in CacheStorageEngineCaches.cpp
        https://bugs.webkit.org/show_bug.cgi?id=190205

        Reviewed by Chris Dumez.

        Passing enums to %d is not kosher, at least not according to GCC's -Wformat. Avoid it.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):

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

        Unreviewed, rolling out r236624 and r236671.
        https://bugs.webkit.org/show_bug.cgi?id=190207

        The change in r236624 introduced crashes on the bots
        (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236624

        "Unify implementation in VideoFullscreenInterfaceAVKit"
        https://bugs.webkit.org/show_bug.cgi?id=190091
        https://trac.webkit.org/changeset/236671

2018-10-02  Antti Koivisto  <antti@apple.com>

        WebPageProxy::reattachToWebProcess cleanups
        https://bugs.webkit.org/show_bug.cgi?id=189881

        Reviewed by Chris Dumez.

        Change the factoring to separate swap and crash code paths into different functions.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):

        Separate function for the swap case.

        (WebKit::WebPageProxy::finishAttachingToWebProcess):

        Factor the common parts here.

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-10-02  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Theming of authentication dialog breaks with themes other than Adwaita
        https://bugs.webkit.org/show_bug.cgi?id=190117

        Reviewed by Michael Catanzaro.

        Adds the missing GTK_STYLE_CLASS_BACKGROUND to the WebKitWebViewDialog
        widget, which was missing for GTK+ 3.20 or newer, and set the widget
        as app-paintable to avoid the base class paint method to add an opaque
        background.

        Thanks to Benjamin Otte for the guidance to debug the theming issues.

        * UIProcess/API/gtk/WebKitWebViewDialog.cpp:
        (webkitWebViewDialogDraw): Remove the style context save/restore, it
        is unneeded because the style classes are set at widget construction
        time and not changed ever after.
        (webkitWebViewDialogConstructed): Mark the widget as app-paintable to
        avoid the base widget paint operation to fill the whole background,
        because the dialog widget paints the translucent overlay itself; and
        also add the missing GTK_STYLE_CLASS_BACKGROUND class at construction
        when building against GTK+ 3.20 or newer.

2018-10-02  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraints>::encode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Implement a way for the UI process to request typing attributes at the current selection
        https://bugs.webkit.org/show_bug.cgi?id=189983
        <rdar://problem/44648705>

        Reviewed by Ryosuke Niwa.

        Implements `-[WKWebView typingAttributesWithCompletionHandler:]`, which asynchronously retrieves an NSDictionary
        containing the typing attributes at the start of the current selection. This is a new asynchronous text input
        client hook on macOS that is needed in order to support NSInspectorBar on WKWebView.

        At a high level, this patch builds on top of refactoring done in r236445 to make it possible to send typing
        attributes from the web process to the UI process, and then adds plumbing in the WebKit2 client layer to surface
        typing attributes to WKWebView on macOS.

        Tests:  FontManagerTests.TypingAttributesAfterSubscriptAndSuperscript
                FontManagerTests.ChangeTypingAttributesWithInspectorBar
                FontManagerTests.ChangeAttributesWithFontEffectsBox

        * Platform/spi/mac/AppKitSPI.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FontAttributes>::encode):
        (IPC::ArgumentCoder<FontAttributes>::decode):

        Implement IPC coding support for FontAttributes.

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

        Add the ability to encode and decode UIFont. This allows Cocoa platforms to send `FontAttributes.font` over IPC
        with a single call to IPC::encode/IPC::decode.

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

        Add plumbing to WebViewImpl.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::selectionDidChange):

        Update the NSInspectorBar on selection change, but only if it is present and visible, and WKWebView is currently
        first responder.

        (WebKit::WebViewImpl::typingAttributesWithCompletionHandler):

        Call into WebPageProxy to retrieve FontAttributes from the web process, and invoke the callback with an
        NSDictionary constructed from the retrieved FontAttributes.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
        (WebKit::WebPageProxy::fontAttributesCallback):

        Add plumbing to retrieve FontAttributes from the web process at the current selection. Additionally, cache the
        font attributes to avoid doing extra work during subsequent requests.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::cachedFontAttributesAtSelectionStart const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::editorStateChanged):

        Invalidate cached font attributes.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestFontAttributesAtSelectionStart):

        Use the currently focused frame's Editor to compute FontAttributes at the current selection, and send the
        computed FontAttributes back to the UI process.

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

2018-10-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: remove analyzer manager
        https://bugs.webkit.org/show_bug.cgi?id=190162

        Reviewed by Joseph Pecoraro.

        * InspectorGResources.cmake:
        Remove eslint.

2018-09-30  Ryosuke Niwa  <rniwa@webkit.org>

        Add a new variant of serializePreservingVisualAppearance which takes VisibleSelection
        https://bugs.webkit.org/show_bug.cgi?id=190108

        Reviewed by Wenson Hsieh.

        Adopt the new variant which directly takes VisibleSelection.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-10-01  Andy Estes  <aestes@apple.com>

        [watchOS] Adopt NSURLSessionCompanionProxyPreference
        https://bugs.webkit.org/show_bug.cgi?id=190177
        <rdar://problem/43402114>

        Reviewed by Wenson Hsieh.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

2018-10-01  Chris Dumez  <cdumez@apple.com>

        [Mac] The UIProcess should listen to memory pressure signals
        https://bugs.webkit.org/show_bug.cgi?id=190166

        Reviewed by Simon Fraser.

        The UIProcess should listen to memory pressure signals on Mac in order to free memory, similarly to what we already
        do on iOS. The memory pressure handler currently discards view snapshots and prewarmed processes.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.h: Renamed from Source/WebKit/UIProcess/ios/WebMemoryPressureHandlerIOS.h.
        * UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.mm: Renamed from Source/WebKit/UIProcess/ios/WebMemoryPressureHandlerIOS.mm.
        (WebKit::installMemoryPressureHandler):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize):
        * WebKit.xcodeproj/project.pbxproj:

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

        Fix Internal iOS Build after r236690
        https://bugs.webkit.org/show_bug.cgi?id=190171

        Reviewed by Alex Christensen.

        * Platform/ExtraPrivateSymbolsForTAPI.h:

2018-10-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add SPI to customize the input accessory view when focusing an element
        https://bugs.webkit.org/show_bug.cgi?id=190152
        <rdar://problem/42754975>

        Reviewed by Dan Bernstein.

        Adds SPI on WKFormInputSession to customize the input accessory view, alongside the input view. See below for
        more details.

        Test: KeyboardInputTests.CustomInputViewAndInputAccessoryView

        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFormInputSession customInputAccessoryView]):
        (-[WKFormInputSession setCustomInputAccessoryView:]):

        Reload input views when the custom input accessory view changes.

        (-[WKContentView requiresAccessoryView]):

        If a custom input accessory view is specified, return YES.

        (-[WKContentView inputAccessoryView]):

        Return the custom input accessory view if present, and fall back to the default web form accessory view.

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

        Remove StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=189975

        Reviewed by Geoffrey Garen.

        * CMakeLists.txt:
        * Configurations/Storage-OSX-sandbox.entitlements: Removed.
        * Configurations/StorageService.xcconfig: Removed.
        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * Shared/ProcessExecutablePath.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp: Removed.
        * Shared/Storage/StorageProcessCreationParameters.h: Removed.
        * Shared/glib/ProcessExecutablePathGLib.cpp:
        (WebKit::executablePathOfStorageProcess): Deleted.
        * Sources.txt:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * StorageProcess/EntryPoint/mac/XPCService/StorageService/Info.plist: Removed.
        * StorageProcess/EntryPoint/mac/XPCService/StorageServiceEntryPoint.mm: Removed.
        * StorageProcess/EntryPoint/unix/StorageProcessMain.cpp: Removed.
        * StorageProcess/EntryPoint/win/StorageProcessMain.cpp: Removed.
        * StorageProcess/StorageProcess.cpp: Removed.
        * StorageProcess/StorageProcess.h: Removed.
        * StorageProcess/StorageProcess.messages.in: Removed.
        * StorageProcess/StorageToWebProcessConnection.cpp: Removed.
        * StorageProcess/StorageToWebProcessConnection.h: Removed.
        * StorageProcess/StorageToWebProcessConnection.messages.in: Removed.
        * StorageProcess/glib/StorageProcessMainGLib.cpp: Removed.
        * StorageProcess/ios/StorageProcessIOS.mm: Removed.
        * StorageProcess/mac/StorageProcessMac.mm: Removed.
        * StorageProcess/mac/com.apple.WebKit.Storage.sb.in: Removed.
        * StorageProcess/unix/StorageProcessMainUnix.h: Removed.
        * StorageProcess/win/StorageProcessMainWin.cpp: Removed.
        * StorageProcess/win/StorageProcessMainWin.h: Removed.
        * UIProcess/API/C/WKContext.cpp:
        (WKContextTerminateStorageProcess): Deleted.
        (WKContextGetDatabaseProcessIdentifier): Deleted.
        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateStorageProcess]): Deleted.
        (-[WKProcessPool _storageProcessIdentifier]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::processName):
        * UIProcess/Storage/StorageProcessProxy.cpp: Removed.
        * UIProcess/Storage/StorageProcessProxy.h: Removed.
        * UIProcess/Storage/StorageProcessProxy.messages.in: Removed.
        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::storageProcessDidCrash): Deleted.
        * UIProcess/WebContextClient.h:
        * UIProcess/WebContextSupplement.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendMemoryPressureEvent):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore): Deleted.
        (WebKit::WebProcessPool::getStorageProcessConnection): Deleted.
        (WebKit::WebProcessPool::storageProcessCrashed): Deleted.
        (WebKit::WebProcessPool::storageProcessIdentifier): Deleted.
        (WebKit::WebProcessPool::terminateStorageProcessForTesting): Deleted.
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToStorageProcess): Deleted.
        (WebKit::WebProcessPool::sendToStorageProcessRelaunchingIfNecessary): Deleted.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::storageProcessParameters): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp: Removed.
        * WebProcess/Storage/WebToStorageProcessConnection.h: Removed.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed): Deleted.
        (WebKit::WebProcess::ensureWebToStorageProcessConnection): Deleted.
        * WebProcess/WebProcess.h:
        * webkitglib-symbols.map:

2018-10-01  David Quesada  <david_quesada@apple.com>

        Add missing Objective-C versions of downloads SPI
        https://bugs.webkit.org/show_bug.cgi?id=190149
        rdar://problem/44915592

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _downloadURLRequest:]):
        (-[WKProcessPool _resumeDownloadFromData:path:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload resumeData]):
        * UIProcess/API/Cocoa/_WKDownloadInternal.h:
        * UIProcess/Cocoa/DownloadClient.mm:
            Move the DownloadProxy's WrapperTraits out of DownloadClient, and into the internal
            header so it can be used from other classes (i.e. WKProcessPool here).

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

        Fix internal build after r236665
        https://bugs.webkit.org/show_bug.cgi?id=189850

        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-10-01  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import a JS CBOR coder
        https://bugs.webkit.org/show_bug.cgi?id=189877
        <rdar://problem/44701124>

        Reviewed by Chris Dumez.

        Update MockWebAuthenticationConfiguration to have userCertificateBase64 and intermediateCACertificateBase64
        as Local's memeber such that tests can pass those certificates to MockLocalConnection instead of letting it
        holds some static ones.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-10-01  Chris Dumez  <cdumez@apple.com>

        Regression(r236512): http/tests/navigation/keyboard-events-during-provisional-navigation.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190052

        Reviewed by Ryosuke Niwa.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendMessage):
        * Platform/IPC/Connection.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostMessageIgnoringFullySynchronousMode):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::postMessageIgnoringFullySynchronousMode):
        * WebProcess/WebPage/WebPage.h:

2018-10-01  Daniel Bates  <dabates@apple.com>

        [iOS] Special keys are misidentified in DOM keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=189974

        Reviewed by Wenson Hsieh.

        Take the key code of WebEvent to be the key code for the new WebKeyboardEvent verbatim
        now that we normalize the character strings of the WebEvent to account for the special
        UIKit input strings.

        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):

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

        Fix an internal build after r236665
        https://bugs.webkit.org/show_bug.cgi?id=189850

        * WebKit.xcodeproj/project.pbxproj:
        Make WKNSURLAuthenticationChallenge.h a private header.

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

        URL should not use TextEncoding internally
        https://bugs.webkit.org/show_bug.cgi?id=190111

        Reviewed by Andy Estes.

        * UIProcess/WebInspectorProxy.cpp:

2018-10-01  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):

2018-10-01  Daniel Bates  <dabates@apple.com>

        [iOS] Wrong key event may be sent to UIKit
        https://bugs.webkit.org/show_bug.cgi?id=189992

        Reviewed by Simon Fraser.

        Retain a clone of a received UIEvent if it is for a hardware key event so as to ensure that we
        notify the UIKit keyboard code of the correct keyboard event.

        Currently the UIProcess retains the UIEvent associated with a keyboard event so as to defer
        notifying the UIKit keyboard code (via -_handleKeyUIEvent) about a received keyboard event until
        after the WebProcess has processed the raw key event. If this UIEvent is for a hardware keyboard
        event then it is not sufficient to retain it to preserve its value because UIKit uses a singleton
        UIEvent for all hardware keyboard events ;=> its value will be clobbered as each hardware keyboard
        event is received. Instead we need to explicitly clone a UIEvent for a hardware key event before
        retaining it.

        * Platform/spi/ios/UIKitSPI.h: Forward declare SPI.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]): Clone the UIEvent if it is for a hardware key event.

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

        Deprecate ObjC SPI in Deprecated Xcode group
        https://bugs.webkit.org/show_bug.cgi?id=189850

        Reviewed by Andy Estes.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/mac/ObjCObjectGraph.mm:
        (WebKit::typeFromObject):
        (WebKit::ObjCObjectGraph::encode):
        (WebKit::ObjCObjectGraph::decode):
        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (didStartProvisionalNavigation):
        (didReceiveServerRedirectForProvisionalNavigation):
        (didFailProvisionalNavigation):
        (didCommitNavigation):
        (didFinishNavigation):
        (didFailNavigation):
        (canAuthenticateAgainstProtectionSpace):
        (didReceiveAuthenticationChallenge):
        (processDidCrash):
        (setUpPagePolicyClient):
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
        * UIProcess/API/Cocoa/WKBrowsingContextGroupInternal.h:
        * UIProcess/API/Cocoa/WKBrowsingContextHistoryDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h:
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender cancelAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender useCredential:forAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender performDefaultHandlingForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender rejectProtectionSpaceAndContinueWithChallenge:]):
        * UIProcess/API/Cocoa/WKNavigationData.h:
        * UIProcess/API/Cocoa/WKNavigationDataInternal.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didCreateConnection):
        (getInjectedBundleInitializationUserData):
        (didNavigateWithNavigationData):
        (didPerformClientRedirect):
        (didPerformServerRedirect):
        (didUpdateHistoryTitle):
        * UIProcess/API/Cocoa/WKTypeRefWrapper.h:
        * UIProcess/API/Cocoa/WKView.h:
        (WK_CLASS_DEPRECATED_WITH_REPLACEMENT):
        * UIProcess/API/Cocoa/_WKThumbnailView.h:
        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::transformHandlesToObjects):
        (WebKit::WebProcessProxy::transformObjectsToHandles):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Gamepad/mac/UIGamepadProviderMac.mm:
        (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput):
        * UIProcess/ios/WKContentView.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::transformHandlesToObjects):
        (WebKit::WebProcess::transformObjectsToHandles):

2018-10-01  Youenn Fablet  <youenn@apple.com>

        [macOS Sierra] Layout Test http/wpt/cache-storage/cache-put-keys.https.any.worker.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=184204

        Reviewed by Chris Dumez.

        NetworkCache::Storage by default limits the length to read to 1500 milliseconds.
        This is good for the HTTP cache since networking might be faster.
        It does not work for DOM cache which needs to get these resources even if it takes a long time.

        Since this is disabled by a Mode::Testing option, use it for DOMCache after renaming it to Mode::AvoidRandomness.

        Add a bunch of release logging to help debugging error cases.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        (WebKit::CacheStorage::Caches::readRecord):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::open):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::dispatchReadOperation):
        (WebKit::NetworkCache::Storage::shrinkIfNeeded):
        * NetworkProcess/cache/NetworkCacheStorage.h:

2018-10-01  Olivier Blin  <olivier.blin@softathome.com>

        [WPE] Remove WebKit2InspectorGResourceBundle.xml
        https://bugs.webkit.org/show_bug.cgi?id=190132

        Reviewed by Michael Catanzaro.

        * UIProcess/API/wpe/WebKit2InspectorGResourceBundle.xml: Removed.
        This is unused since legacy INSPECTOR_SERVER implementation has
        been removed in r217924.

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up RealtimeMediaSource settings change handling
        https://bugs.webkit.org/show_bug.cgi?id=189998
        <rdar://problem/44797884>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setSettings):

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use display-specific capture factories
        https://bugs.webkit.org/show_bug.cgi?id=190043
        <rdar://problem/44834412>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-09-29  Commit Queue  <commit-queue@webkit.org>

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

        Caused various eventSender tests, including fast/css/pseudo-
        active-style-sharing*, to fail (Requested by smfr on #webkit).

        Reverted changeset:

        "Regression(r236512): http/tests/navigation/keyboard-events-
        during-provisional-navigation.html is flaky"
        https://bugs.webkit.org/show_bug.cgi?id=190052
        https://trac.webkit.org/changeset/236631

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

        [PSON] Deal with the drawing area potentially being null in WebFrameLoaderClient::transitionToCommittedForNewPage()
        https://bugs.webkit.org/show_bug.cgi?id=190084
        <rdar://problem/44844561>

        Reviewed by Antti Koivisto.

        Deal with the drawing area potentially being null in WebFrameLoaderClient::transitionToCommittedForNewPage(), as a
        result of calling WebPage::tearDownDrawingAreaForSuspend().

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

2018-09-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        No DOM API to instantiate an attachment for an img element
        https://bugs.webkit.org/show_bug.cgi?id=189934
        <rdar://problem/44743222>

        Reviewed by Ryosuke Niwa.

        Makes some adjustments to support using _WKAttachment's file wrapper to change the contents of any image element
        hosting the attachment in its shadow root. To do this, we add some plumbing to allow the UI process to update an
        attachment element's enclosing image with data from its file wrapper.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::isEmpty const):
        (API::Attachment::enclosingImageData const):

        Helper method that creates a SharedBuffer representing image data for the attachment. Only returns a non-null
        value for attachment elements that are enclosed within an image.

        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::enclosingImageData const):
        (API::Attachment::isEmpty const):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _attachmentForIdentifier:]):

        Add new SPI to request a _WKAttachment for a given unique identifier. Currently, this is only used for testing.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::platformRegisterAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateAttachmentAttributes):
        (WebKit::WebPageProxy::registerAttachmentIdentifier):
        (WebKit::WebPageProxy::didInsertAttachmentWithIdentifier):

        Plumb whether or not the attachment is enclosed by an image from the web process to the UI process.

        (WebKit::WebPageProxy::didRemoveAttachmentWithIdentifier):
        (WebKit::WebPageProxy::didInsertAttachment): Deleted.
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachmentIdentifier):
        (WebKit::WebEditorClient::didInsertAttachmentWithIdentifier):

        Update attachment attributes after inserting an attachment. This ensures that an attachment that was created and
        later inserted via script into the document will be synced with state in the UI process, if the client has
        changed the contents of the attachment.

        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateAttachmentAttributes):

        Plumb attachment data from the UI process to the web process.

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

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

        Regression(r236512): http/tests/navigation/keyboard-events-during-provisional-navigation.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190052

        Reviewed by Ryosuke Niwa.

        Introduce a new IPC::SendOption indicating that the IPC should always be sent asynchronously,
        even if the connection is in fully synchronous mode. This is used by WebKitTestRunner for
        all text outputting (e.g. console.log) is asynchronous, and thus in order.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendMessage):
        * Platform/IPC/Connection.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostMessageIgnoringFullySynchronousMode):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::postMessageIgnoringFullySynchronousMode):
        * WebProcess/WebPage/WebPage.h:

2018-09-28  John Wilander  <wilander@apple.com>

        Skip debug assertion in ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain()
        https://bugs.webkit.org/show_bug.cgi?id=190097
        <rdar://problem/44877080>

        Reviewed by Chris Dumez.

        The change in https://bugs.webkit.org/show_bug.cgi?id=190055 causes a
        re-classification that may trigger a debug assertion in
        ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain().
        We should skip the assertion for statistics model version 14 to avoid
        this.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain const):

2018-09-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: crash in InspectorNetworkAgent::didReceiveResponse when loading denied x-frame resources
        https://bugs.webkit.org/show_bug.cgi?id=190046

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        Send the sanitized `ResourceResponse` with the message so WebInspector is able to access it.

        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        * WebProcess/Network/WebResourceLoader.messages.in:
        (WebKit::WebResourceLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):

2018-09-28  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Polish WebAuthN auto-test environment
        https://bugs.webkit.org/show_bug.cgi?id=189283
        <rdar://problem/44117828>

        Reviewed by Chris Dumez.

        This patch changes MockWebAuthenticationConfiguration.local to optional such that tests can express
        absence of local authenticators.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        (WebKit::MockLocalConnection::getUserConsent const):
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.cpp:
        (WebKit::MockLocalService::platformStartDiscovery const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Adopt those Ref and WeakPtr changes made in WebCore.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::addClient):
        (WebKit::PlaybackSessionModelContext::removeClient):
        (WebKit::PlaybackSessionModelContext::durationChanged):
        (WebKit::PlaybackSessionModelContext::currentTimeChanged):
        (WebKit::PlaybackSessionModelContext::bufferedTimeChanged):
        (WebKit::PlaybackSessionModelContext::rateChanged):
        (WebKit::PlaybackSessionModelContext::seekableRangesChanged):
        (WebKit::PlaybackSessionModelContext::canPlayFastReverseChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::externalPlaybackChanged):
        (WebKit::PlaybackSessionModelContext::wirelessVideoPlaybackDisabledChanged):
        (WebKit::PlaybackSessionModelContext::mutedChanged):
        (WebKit::PlaybackSessionModelContext::volumeChanged):
        (WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
        (WebKit::PlaybackSessionManagerProxy::invalidate):
        (WebKit::PlaybackSessionManagerProxy::createModelAndInterface):
        (WebKit::PlaybackSessionManagerProxy::removeClientForContext):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::create):
        (WebKit::VideoFullscreenModelContext::VideoFullscreenModelContext):
        (WebKit::VideoFullscreenModelContext::addClient):
        (WebKit::VideoFullscreenModelContext::removeClient):
        (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
        (WebKit::VideoFullscreenManagerProxy::invalidate):
        (WebKit::VideoFullscreenManagerProxy::createModelAndInterface):
        (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
        (WebKit::VideoFullscreenModelContext::~VideoFullscreenModelContext): Deleted.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext):
        (WebKit::PlaybackSessionManager::~PlaybackSessionManager):
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        (WebKit::PlaybackSessionManager::removeContext):
        (WebKit::PlaybackSessionInterfaceContext::~PlaybackSessionInterfaceContext): Deleted.
        * WebProcess/cocoa/VideoFullscreenManager.h:
        (WebKit::VideoFullscreenInterfaceContext::create):
        (WebKit::VideoFullscreenInterfaceContext::createWeakPtr):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenInterfaceContext::VideoFullscreenInterfaceContext):
        (WebKit::VideoFullscreenManager::~VideoFullscreenManager):
        (WebKit::VideoFullscreenManager::createModelAndInterface):
        (WebKit::VideoFullscreenManager::removeContext):

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

        Drop support for cross-origin-window-policy header
        https://bugs.webkit.org/show_bug.cgi?id=190081

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        * UIProcess/API/C/WKPreferencesRef.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::frameBecameRemote):

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

        Do not do automatic process prewarming while under memory pressure
        https://bugs.webkit.org/show_bug.cgi?id=190082
        <rdar://problem/39771424>

        Reviewed by Geoffrey Garen.

        Do not do automatic process prewarming while under memory pressure and
        also terminate any prewarmed process when receiving a memory warning.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        (WebKit::WebProcessPool::handleMemoryPressureWarning):
        * UIProcess/WebProcessPool.h:
        * UIProcess/ios/WebMemoryPressureHandlerIOS.mm:
        (WebKit::installMemoryPressureHandler):

2018-09-28  Daniel Bates  <dabates@apple.com>

        [iOS] Allow programmatic focus when hardware keyboard is attached
        https://bugs.webkit.org/show_bug.cgi?id=190017
        <rdar://problem/42270463>

        Reviewed by Wenson Hsieh.

        Make the experience of using iOS with a hardware keyboard more desktop-like by allowing
        programmatic focusing of editable elements.

        * Platform/spi/ios/UIKitSPI.h: Forward declare SPI.
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        (WebKit::isInHardwareKeyboardMode): Returns whether we are in hardware keyboard mode. In DumpRenderTree
        and WebKitTestRunner this function always returns false to keep test results deterministic.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Allow starting an input session if we are in hardware keyboard mode.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const): Send the full editor state if we are in hardware
        keyboard mode regardless of whether layout has been performed so that UIProcess can update UI,
        including the position of the caret, immediately.

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Rename createMarkup to serializePreservingVisualAppearance
        https://bugs.webkit.org/show_bug.cgi?id=190086

        Reviewed by Wenson Hsieh.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-09-28  Commit Queue  <commit-queue@webkit.org>

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

        caused three API test timeouts (Requested by jernoble on
        #webkit).

        Reverted changeset:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236605

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Adopt those Ref and WeakPtr changes made in WebCore.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::addClient):
        (WebKit::PlaybackSessionModelContext::removeClient):
        (WebKit::PlaybackSessionModelContext::durationChanged):
        (WebKit::PlaybackSessionModelContext::currentTimeChanged):
        (WebKit::PlaybackSessionModelContext::bufferedTimeChanged):
        (WebKit::PlaybackSessionModelContext::rateChanged):
        (WebKit::PlaybackSessionModelContext::seekableRangesChanged):
        (WebKit::PlaybackSessionModelContext::canPlayFastReverseChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::externalPlaybackChanged):
        (WebKit::PlaybackSessionModelContext::wirelessVideoPlaybackDisabledChanged):
        (WebKit::PlaybackSessionModelContext::mutedChanged):
        (WebKit::PlaybackSessionModelContext::volumeChanged):
        (WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
        (WebKit::PlaybackSessionManagerProxy::invalidate):
        (WebKit::PlaybackSessionManagerProxy::createModelAndInterface):
        (WebKit::PlaybackSessionManagerProxy::removeClientForContext):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::create):
        (WebKit::VideoFullscreenModelContext::VideoFullscreenModelContext):
        (WebKit::VideoFullscreenModelContext::addClient):
        (WebKit::VideoFullscreenModelContext::removeClient):
        (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
        (WebKit::VideoFullscreenManagerProxy::invalidate):
        (WebKit::VideoFullscreenManagerProxy::createModelAndInterface):
        (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
        (WebKit::VideoFullscreenModelContext::~VideoFullscreenModelContext): Deleted.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext):
        (WebKit::PlaybackSessionManager::~PlaybackSessionManager):
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        (WebKit::PlaybackSessionManager::removeContext):
        (WebKit::PlaybackSessionInterfaceContext::~PlaybackSessionInterfaceContext): Deleted.
        * WebProcess/cocoa/VideoFullscreenManager.h:
        (WebKit::VideoFullscreenInterfaceContext::create):
        (WebKit::VideoFullscreenInterfaceContext::createWeakPtr):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenInterfaceContext::VideoFullscreenInterfaceContext):
        (WebKit::VideoFullscreenManager::~VideoFullscreenManager):
        (WebKit::VideoFullscreenManager::createModelAndInterface):
        (WebKit::VideoFullscreenManager::removeContext):

2018-09-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] error C2027: use of undefined type 'WTF::EnumTraits<E>' while compiling AuthenticationChallengeProxy.cpp
        https://bugs.webkit.org/show_bug.cgi?id=190071

        Unreviewed build fix for WinCairo port.

        AuthenticationChallengeDisposition was not defined in this file.

        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp: Include "AuthenticationChallengeDisposition.h".

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Use enum class in createMarkup arguments
        https://bugs.webkit.org/show_bug.cgi?id=190028

        Reviewed by Wenson Hsieh.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Non-redirected top frame navigation should not get captured in statistics
        https://bugs.webkit.org/show_bug.cgi?id=190055
        <rdar://problem/44843460>

        Reviewed by Chris Dumez.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
            Bumped the statisticsModelVersion to 14 to be able to
            correct legacy statistics.
        (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
            Now skips capture if it's the main frame.

2018-09-27  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Allow access to VoiceServices features needed for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=190019
        <rdar://problem/43621111>

        Reviewed by Chris Fleizach.

        Revise the sandbox to allow access to relevant WebSpeech features.

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

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

        Fix IOSMAC build
        https://bugs.webkit.org/show_bug.cgi?id=190021

        Reviewed by Alex Christensen.

        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove temporary compatibility fix for auto-dismiss popups
        https://bugs.webkit.org/show_bug.cgi?id=189980
        <rdar://problem/44780645>

        Reviewed by Alex Christensen.

        The change in https://bugs.webkit.org/show_bug.cgi?id=183620 was a temporary
        compatibility fix as explained in:
        https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/. We should
        remove it.

        These changes remove the parameter isTriggeredByUserGesture since it's no longer needed.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):

2018-09-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236557.

        Really roll out r236557 this time because it breaks internal
        builds.

        Reverted changeset:

        "Add VP8 support to WebRTC"
        https://bugs.webkit.org/show_bug.cgi?id=189976
        https://trac.webkit.org/changeset/236557

2018-09-27  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

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

        The WebContent process should not process incoming IPC while waiting for a sync IPC reply
        https://bugs.webkit.org/show_bug.cgi?id=184183
        <rdar://problem/36800576>

        Reviewed by Ryosuke Niwa.

        In recent years, we have experienced re-entrancy bugs/crashes in WebCore due to the WebContent process
        processing unrelated incoming synchronous IPC when waiting for a reply to one of its synchronous IPC
        to another process. In order to deal with this, we introduced a DoNotProcessIncomingMessagesWhenWaitingForSyncReply
        IPC::SendOption which we used on sendSync() calls where we knew re-entering would be unsafe. However,
        it turns out to be needed for a lot of the WebProcess's sync IPC and it is error-prone. In order to
        address the issue, we've decided to update the WebContent process behavior so that it processes all its
        IPC in order (not matter if synchronous or not) and thus so that we never dispatch unrelated synchronous
        IPC while waiting for a synchronous IPC reply, expect in cases where it would cause a deadlock.

        As a result, this patch also drops support for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply
        IPC::SendOption which is no longer needed and has some code complexity.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendSyncMessage):
        (IPC::Connection::waitForSyncReply):
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendSync):
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::WebProcessConnection):
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::StorageToWebProcessConnection):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::connectionWillOpen):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::postSynchronousMessage):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
        (WebKit::WebLoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):
        (WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::destroy):
        (WebKit::PluginProxy::supportsSnapshotting const):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::populatePluginCache):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::rootViewToScreen):
        * WebProcess/WebProcess.cpp:
        (WebKit::getNetworkProcessConnection):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-09-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-09-26  James Savage  <james.savage@apple.com>

        Allow override of viewport configuration.
        https://bugs.webkit.org/show_bug.cgi?id=188772.
        <rdar://problem/43538892>.

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setShouldIgnoreMetaViewport:]):
        (-[WKPreferences _shouldIgnoreMetaViewport]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::viewportPropertiesDidChange): If we are ignoring the
        <meta> viewport, short circuit calling setViewportArguments() and do not
        do any updates.
        (WebKit::WebPage::didCommitLoad): Ditto.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::resetViewportDefaultConfiguration): Select the default
        configuration based on UIProcess setting.

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

        Regression(r236512): WKWebViewCandidateTests.SoftSpaceReplacementAfterCandidateInsertionWithoutReplacement API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=190007

        Reviewed by Alex Christensen.

        Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption from EditorStateChanged IPC calls to restore
        pre-r236512 behavior. Before r236512, this option had no effect on IPC from the WebContent to the UIProcess
        because the m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage flag was set
        on that IPC::Connection. However, after r236512, m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
        is no longer set on the connection, and the DispatchMessageEvenWhenWaitingForSyncReply SendOption was
        causing this message to get processed out of order with regards to other async IPC, thus causing the
        API test failure.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::sendEditorStateUpdate):
        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        Fix UAF after r236463
        https://bugs.webkit.org/show_bug.cgi?id=190011

        Reviewed by Chris Dumez.

        I had removed an early return in NetworkResourceLoader::continueDidReceiveResponse.
        Reading the (probably) null m_responseCompletionHandler was reading after the object had been destroyed.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Selection should work across shadow boundary when initiated by a mouse drag
        https://bugs.webkit.org/show_bug.cgi?id=151380
        <rdar://problem/24363872>

        Reviewed by Antti Koivisto.

        Added SelectionAcrossShadowBoundariesEnabled as an internal debug feature,
        and moved CSSCustomPropertiesAndValuesEnabled to where other experimental features are located.

        * Shared/WebPreferences.yaml:

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

        Unreviewed, apply post-landing review comments after r236512.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):

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

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        https://bugs.webkit.org/show_bug.cgi?id=189927

        Reviewed by Geoffrey Garen.

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
        incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
        in order to avoid bugs caused by re-entering WebCore at unsafe times.

        The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
        a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
        DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
        IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
        the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
        about:blank and fragment navigations.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::createWithCoreMainFrame):
        (WebKit::WebFrame::createSubframe):
        Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption when sending the
        DidCreateMainFrame / DidCreateSubframe IPC. Previously, this SendOption has
        no effect because the IPC::Connection would have the
        m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
        flag set to true. However, now that we stop setting this flag on the IPC
        connection from the WebProcess to the UIProcess, it would lead to those
        IPC messages getting processed out of order with regards to the
        DecidePolicyForNavigationAsync asynchronous IPC. DidCreateMainFrame would
        sometimes get processed *after* the DecidePolicyForNavigationAsync IPC
        and we would not know about the frameID yet.

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

2018-09-26  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on iOS
        https://bugs.webkit.org/show_bug.cgi?id=189695
        <rdar://problem/44551146>

        Reviewed by Simon Fraser.

        Freeze the layers on UI process side during process swap.

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

        Shared work of _processWillSwap and _processDidExit.

        (-[WKWebView _processWillSwap]):
        (-[WKWebView _processDidExit]):

        Split into two functions. Don't reset scroll position and similar when doing navigation swap.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::detachRemoteLayerTreeHost):

        Add to way to detach RemoteLayerTreeHost from the drawing area. Inert RemoteLayerTreeHost will host
        the frozen layers.

        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilAnyUpdate):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::prepareForAppSuspension):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hasVisibleContent const):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::layerWithIDForTesting const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::animationDidStart):
        (WebKit::RemoteLayerTreeHost::animationDidEnd):
        (WebKit::RemoteLayerTreeHost::detachFromDrawingArea):

        Clear the DrawingArea backpointer.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::resetState):

        Detach and save the current RemoteLayerTreeHost on navigation swap.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::processWillSwap):

        Avoid reseting the scroll position.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

        Drop the frozen layers after setting the new root layer.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

        For completeness do this also on Mac (where remote layers are currently not used).

2018-09-25  Ryosuke Niwa  <rniwa@webkit.org>

        Make frame flattening an internal debug feature
        https://bugs.webkit.org/show_bug.cgi?id=189984

        Reviewed by Simon Fraser.

        Made frame flattening a runtime switchable from internal debug menu.

        To avoid having to enumerate three distinct values in the settings, made it a boolean flag in WKPreference.
        That's what's exposd as an API anyway.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.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/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2018-09-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add Mac window capture source
        https://bugs.webkit.org/show_bug.cgi?id=189958
        <rdar://problem/44767616>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::beginMonitoringCaptureDevices): Sync with webcore prefs before listening
        to device changes so we listen on the correct devices.

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

        Unreviewed, rolling out r236471 and r236480.

        Seems to be causing some flaky crashes

        Reverted changesets:

        "UIProcess should process incoming sync IPC from WebProcess
        when waiting for a sync IPC reply from it"
        https://bugs.webkit.org/show_bug.cgi?id=189927
        https://trac.webkit.org/changeset/236471

        "Revert some of the changes in r236471"
        https://bugs.webkit.org/show_bug.cgi?id=189973
        https://trac.webkit.org/changeset/236480

2018-09-25  Conrad Shultz  <conrad_shultz@apple.com>

        Enable customization of the file upload panel
        https://bugs.webkit.org/show_bug.cgi?id=189970

        Reviewed by Wenson Hsieh.

        With this change, platform implementations can override, or implement in a category,
        +[WKContentView _fileUploadPanelClass] as needed.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showRunOpenPanel:resultListener:]):

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

        Unreviewed, rolling out r236420 and r236458.

        This change is not fully correct

        Reverted changesets:

        "Do not do early processing of incoming sync IPC unless we're
        waiting for a sync IPC reply"
        https://bugs.webkit.org/show_bug.cgi?id=186941
        https://trac.webkit.org/changeset/236420

        "Unreviewed, update bug number of http/tests/misc/blob-
        size.html crash on Windows"
        https://trac.webkit.org/changeset/236458

2018-09-25  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a quick fix after r236481.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
        Add an early return, so we don't end up with setting MockWebAuthenticationConfiguration twice.

2018-09-25  John Wilander  <wilander@apple.com>

        Change from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
        https://bugs.webkit.org/show_bug.cgi?id=189959
        <rdar://problem/44767642>

        Reviewed by Chris Dumez.

        We no longer make use of CFNetwork's cookie partitioning so we should
        change the compile-time flag to something that makes sense. This should
        also make it easier/cleaner for other ports.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::networkProcessDidCrash):
        * 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:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2018-09-25  Philippe Normand  <pnormand@igalia.com>

        [WPE] Export jsc_ symbols
        https://bugs.webkit.org/show_bug.cgi?id=189964

        Reviewed by Michael Catanzaro.

        * webkitglib-symbols.map: Keep jsc_* symbols as visible so they
        can be used by applications depending on WPE.

2018-09-25  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279
        <rdar://problem/44116792>

        Reviewed by Chris Dumez.

        This patch introduces AuthenticatorManager which is the central of WebAuthentication that 1) handles
        web requests, 2) discovers authenticators, 3) manages authetnicators and 4) in the future interacts with UI.
        The lifetime of the AuthenticatorManager is managed by WebsiteDataStore such that it is almost a singleton
        per UI Process.

        1) Requests come from WebAuthenticatorCoordinatorProxy and then cached in AuthenticatorManager which will
        then distribute requests whenever a new authenticator is discovered.

        2) An ABC AuthenticatorTransportService is provided as an interface for AuthenticatorManager to invoke
        startDiscovery. Actual work will be done in corresponding derived classes, say, LocalService. LocalService
        is the one that discover attached platform authenticators, for example, TouchID or FaceID.

        Eache service is unique per AuthetnicatorManager, which means we will have at most 4 services, Local, USB,
        NFC, and BLE. The latter three will be implemented soon. Also, AuthenticatorManager serves as an observer to
        *Service, so the latter can inform the former whenever an authenticator is added or removed.

        When a new authenticator is discovered, the corresponding service will create an Authetnicator object that
        binds to the physical authenticator device through a *Connection object. There is no ABC for connection for
        now as I forsee every *Connection will be quite different. The *Connection object is the one that send/receive
        messages from the physicla device. So far, a LocalConnection is provided even though normally local authenticators
        are attached. This class is provided solely for separating UI and network traffic from LocalAuthenticator's
        request handling process. So we can override them in a mock test environment. I will talk about this in the
        next section.

        3) An ABC Authenticator is provided as an interface for AuthenticatorManager to distribute requests on. Requests
        will then be handled by the derived classes, say, LocalAuthenticator. Each authenticator object is a FSM that
        works asynchronously.

        For LocalAuthenticator, it has 4 states for MakeCredential: Init => RequestReceived => UserConsented => Attested => End,
        and 3 states for GetAssertion: Init => RequestReceived => UserConsented => End. In the transit from RequestReceived to
        UserConsented, it will invoke LocalConnection to talk to LocalAuthentication.framework that prompt users for TouchID
        or FaceID. And then the transit from UserConsented => Attested, it will invoke LocalConnection to talk to
        DeviceIdentity.framework that does Apple attestation. Most of the work are from the original LocalAuthenticator
        implementation, and this patch converts it to a FSM and simplify the callback and threading model.

        When a respond is ready, each authenticator will notify their observer which is the AuthenticatorManager.
        AuthenticatorManager will only reply to Web Process whenever there is a valid respond or a terminating error. Otherwise,
        the request will time out. I will explore the time out mechanism in a more detailed manner in Bug 189642.

        The above is a briefing of the AuthetnicatorManager architecture in functional. The asynchronous model is explained here:
        1) Since most discovery and request handling processes are asynchronous, I enforced them to be executed asyncrhonous in
        the interface of the ABC.
        2) There is no dedicated secondary threads here. However, underlying framework might decide to perform works on a dedicated
        thread and then execute the provided callback. Whenever such situation happens, the policy here is to wrap the actual callback
        into a callback that will post the actual callback back to the main thread and pass the wrapping callback to the APIs. Hence,
        weak pointers in the actual callback are guaranteed to work.
        3) Callbacks are used only if it is one way, and they are CompletionHandlers.
        4) Potential multi ways asynchronous operations are encapsulated in regarding Observer interfaces.

        Finally, let me explain how the mock test works:
        1) Mock testing is done in WebKitTestRunner instead of Internals because a considerable large portion of work is in UIProcess
        instead of WebProcess, says, the AuthenticatorManager.
        2) The basic idea is to override functionality of *Connection classes and then make them thin such that we can get the best
        possible coverage in auto tests.
        3) In order to enable layout tests to configure the Mock*Connection classes, a MockWebAuthenticationConfiguration struct is
        provided. A corresponding JS dictionary will be created by each test and passed from the TestRunner to the connection object.
        4) To bridge the above tunnel, a MockAuthenticatorManager is constructed. It is instrumented to return every error.
        5) Also, Mock*Service classes are made to mock the discovery process as well.
        6) Noted, every mock overrided methods are made thin.

        * CMakeLists.txt:
        * Configurations/WebKit.xcconfig:
        * Platform/spi/Cocoa/DeviceIdentitySPI.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * SourcesCocoa.txt:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/WebAuthentication/Authenticator.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::Authenticator::handleRequest):
        (WebKit::Authenticator::receiveRespond const):
        * UIProcess/WebAuthentication/Authenticator.h: Renamed from Source/WebCore/Modules/webauthn/cocoa/LocalAuthenticator.h.
        (WebKit::Authenticator::setObserver):
        (WebKit::Authenticator::observer const):
        (WebKit::Authenticator::requestData const):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp: Added.
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::makeCredential):
        (WebKit::AuthenticatorManager::getAssertion):
        (WebKit::AuthenticatorManager::clearState):
        (WebKit::AuthenticatorManager::authenticatorAdded):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::createService const):
        (WebKit::AuthenticatorManager::respondReceivedInternal):
        (WebKit::AuthenticatorManager::startDiscovery):
        * UIProcess/WebAuthentication/AuthenticatorManager.h: Added.
        (WebKit::AuthenticatorManager::pendingCompletionHandler):
        * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::AuthenticatorTransportService::create):
        (WebKit::AuthenticatorTransportService::createMock):
        (WebKit::AuthenticatorTransportService::AuthenticatorTransportService):
        (WebKit::AuthenticatorTransportService::startDiscovery const):
        * UIProcess/WebAuthentication/AuthenticatorTransportService.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::AuthenticatorTransportService::observer const):
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: Added.
        (WebKit::LocalAuthenticatorInternal::buildAuthData):
        (WebKit::LocalAuthenticatorInternal::transportsContain):
        (WebKit::LocalAuthenticatorInternal::produceHashSet):
        (WebKit::LocalAuthenticatorInternal::toVector):
        (WebKit::LocalAuthenticator::LocalAuthenticator):
        (WebKit::LocalAuthenticator::makeCredential):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (WebKit::LocalAuthenticator::getAssertion):
        (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: Added.
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Cocoa/LocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm: Renamed from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::LocalService::LocalService):
        (WebKit::LocalService::isAvailable):
        (WebKit::LocalService::startDiscoveryInternal const):
        (WebKit::LocalService::platformStartDiscovery const):
        (WebKit::LocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::MockAuthenticatorManager::MockAuthenticatorManager):
        (WebKit::MockAuthenticatorManager::createService const):
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: Added.
        (WebKit::MockLocalConnection::MockLocalConnection):
        (WebKit::MockLocalConnection::getUserConsent const):
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::MockLocalService::MockLocalService):
        (WebKit::MockLocalService::platformStartDiscovery const):
        (WebKit::MockLocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/WebAuthenticationRequestData.h: Renamed from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
        (WebKit::WebAuthenticatorCoordinatorProxy::WebAuthenticatorCoordinatorProxy):
        (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
        (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
        (WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailable):
        (WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailableReply): Deleted.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::authenticatorManager):
        * WebKit.xcodeproj/project.pbxproj:

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

        Revert some of the changes in r236471
        https://bugs.webkit.org/show_bug.cgi?id=189973

        Reviewed by Alex Christensen.

        Revert some of the changes in r236471 as they should not be needed. In particular,
        it should not be possible for the DecidePolicyForNavigationActionSync IPC to get
        processed *before* the DidCreateMainFrame / DidCreateSubframe ones because those
        use IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply. They are thus
        processed early when necessary, the same way as synchronous IPC messages.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::createWithCoreMainFrame):
        (WebKit::WebFrame::createSubframe):

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

        Move Service Worker Management from Storage Process to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189422

        Reviewed by Youenn Fablet.

        After r236035, this is another piece to move functionality of storage process to network process. When 
        we enable Service Workers, network process instead of storage process will be launched. 
        This patch will not change the behavior of Service Worker.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::unregisterSWConnections):
        (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didReceiveMessage):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::connectionToContextProcessFromIPCConnection):
        (WebKit::NetworkProcess::connectionToContextProcessWasClosed):
        (WebKit::NetworkProcess::needsServerToContextConnectionForOrigin const):
        (WebKit::NetworkProcess::swServerForSession):
        (WebKit::NetworkProcess::swOriginStoreForSession):
        (WebKit::NetworkProcess::existingSWOriginStoreForSession const):
        (WebKit::NetworkProcess::serverToContextConnectionForOrigin):
        (WebKit::NetworkProcess::createServerToContextConnection):
        (WebKit::NetworkProcess::didFailFetch):
        (WebKit::NetworkProcess::didNotHandleFetch):
        (WebKit::NetworkProcess::didReceiveFetchResponse):
        (WebKit::NetworkProcess::didReceiveFetchData):
        (WebKit::NetworkProcess::didReceiveFetchFormData):
        (WebKit::NetworkProcess::didFinishFetch):
        (WebKit::NetworkProcess::postMessageToServiceWorkerClient):
        (WebKit::NetworkProcess::postMessageToServiceWorker):
        (WebKit::NetworkProcess::registerSWServerConnection):
        (WebKit::NetworkProcess::unregisterSWServerConnection):
        (WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):
        (WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay):
        (WebKit::NetworkProcess::addServiceWorkerSession):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/ServiceWorker/WebSWOriginStore.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.cpp.
        (WebKit::WebSWOriginStore::WebSWOriginStore):
        (WebKit::WebSWOriginStore::addToStore):
        (WebKit::WebSWOriginStore::removeFromStore):
        (WebKit::WebSWOriginStore::clearStore):
        (WebKit::WebSWOriginStore::importComplete):
        (WebKit::WebSWOriginStore::registerSWServerConnection):
        (WebKit::WebSWOriginStore::unregisterSWServerConnection):
        (WebKit::WebSWOriginStore::sendStoreHandle):
        (WebKit::WebSWOriginStore::didInvalidateSharedMemory):
        * NetworkProcess/ServiceWorker/WebSWOriginStore.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.h.
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp.
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::rejectJobInClient):
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        (WebKit::WebSWServerConnection::updateRegistrationStateInClient):
        (WebKit::WebSWServerConnection::fireUpdateFoundEvent):
        (WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):
        (WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):
        (WebKit::WebSWServerConnection::notifyClientsOfControllerChange):
        (WebKit::WebSWServerConnection::updateWorkerStateInClient):
        (WebKit::WebSWServerConnection::cancelFetch):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorker):
        (WebKit::WebSWServerConnection::scheduleJobInServer):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didReceiveFetchFormData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::didFailFetch):
        (WebKit::WebSWServerConnection::didNotHandleFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        (WebKit::WebSWServerConnection::matchRegistration):
        (WebKit::WebSWServerConnection::registrationReady):
        (WebKit::WebSWServerConnection::getRegistrations):
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
        (WebKit::WebSWServerConnection::sendToContextProcess):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h.
        (WebKit::WebSWServerConnection::ipcConnection const):
        (WebKit::WebSWServerConnection::sessionID const):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in.
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp.
        (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderDestinationID):
        (WebKit::WebSWServerToContextConnection::connectionClosed):
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        (WebKit::WebSWServerToContextConnection::fireInstallEvent):
        (WebKit::WebSWServerToContextConnection::fireActivateEvent):
        (WebKit::WebSWServerToContextConnection::terminateWorker):
        (WebKit::WebSWServerToContextConnection::syncTerminateWorker):
        (WebKit::WebSWServerToContextConnection::findClientByIdentifierCompleted):
        (WebKit::WebSWServerToContextConnection::matchAllCompleted):
        (WebKit::WebSWServerToContextConnection::claimCompleted):
        (WebKit::WebSWServerToContextConnection::didFinishSkipWaiting):
        (WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded):
        (WebKit::WebSWServerToContextConnection::terminate):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h.
        (WebKit::WebSWServerToContextConnection::create):
        (WebKit::WebSWServerToContextConnection::ipcConnection const):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in.
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        (): Deleted.
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didReceiveMessage):
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::destroySession):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::connectionToContextProcessFromIPCConnection): Deleted.
        (WebKit::StorageProcess::connectionToContextProcessWasClosed): Deleted.
        (WebKit::StorageProcess::needsServerToContextConnectionForOrigin const): Deleted.
        (WebKit::StorageProcess::swServerForSession): Deleted.
        (WebKit::StorageProcess::swOriginStoreForSession): Deleted.
        (WebKit::StorageProcess::existingSWOriginStoreForSession const): Deleted.
        (WebKit::StorageProcess::serverToContextConnectionForOrigin): Deleted.
        (WebKit::StorageProcess::createServerToContextConnection): Deleted.
        (WebKit::StorageProcess::didFailFetch): Deleted.
        (WebKit::StorageProcess::didNotHandleFetch): Deleted.
        (WebKit::StorageProcess::didReceiveFetchResponse): Deleted.
        (WebKit::StorageProcess::didReceiveFetchData): Deleted.
        (WebKit::StorageProcess::didReceiveFetchFormData): Deleted.
        (WebKit::StorageProcess::didFinishFetch): Deleted.
        (WebKit::StorageProcess::postMessageToServiceWorkerClient): Deleted.
        (WebKit::StorageProcess::postMessageToServiceWorker): Deleted.
        (WebKit::StorageProcess::registerSWServerConnection): Deleted.
        (WebKit::StorageProcess::unregisterSWServerConnection): Deleted.
        (WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded): Deleted.
        (WebKit::StorageProcess::disableServiceWorkerProcessTerminationDelay): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
        (): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::StorageToWebProcessConnection::unregisterSWConnections): Deleted.
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * StorageProcess/ios/StorageProcessIOS.mm:
        (WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess): Deleted.
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::networkProcessCrashed):
        (WebKit::WebProcessPool::getNetworkProcessConnection):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):
        (WebKit::WebProcessPool::postMessageToServiceWorkerClient):
        (WebKit::WebProcessPool::postMessageToServiceWorker):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getNetworkProcessConnection):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didReceiveSyncMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingServiceWorkerConnectionForSession):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::startFetch):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        (WebKit::WebSWContextManagerConnection::didFinishActivation):
        (WebKit::WebSWContextManagerConnection::setServiceWorkerHasPendingEvents):
        (WebKit::WebSWContextManagerConnection::skipWaiting):
        (WebKit::WebSWContextManagerConnection::setScriptResource):
        (WebKit::WebSWContextManagerConnection::workerTerminated):
        (WebKit::WebSWContextManagerConnection::findClientByIdentifier):
        (WebKit::WebSWContextManagerConnection::matchAll):
        (WebKit::WebSWContextManagerConnection::claim):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didNotHandle):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::handleFetch):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didReceiveSyncMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingServiceWorkerConnectionForSession): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):
        (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess): Deleted.
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::existingNetworkProcessConnection):
        (WebKit::WebProcess::existingWebToStorageProcessConnection): Deleted.
        * WebProcess/WebProcess.messages.in:

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

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        https://bugs.webkit.org/show_bug.cgi?id=189927

        Reviewed by Alex Christensen.

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
        incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
        in order to avoid bugs caused by re-entering WebCore at unsafe times.

        The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
        a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
        DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
        IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
        the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
        about:blank and fragment navigations.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection):

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

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer
        https://bugs.webkit.org/show_bug.cgi?id=189851
        <rdar://problem/44696263>

        Reviewed by Alex Christensen.

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer:
        - NetworkProcessProxy::m_processPool
        - StorageProcessProxy::m_processPool

        Those data members are C++ references because it is expected that the WebProcessPool owns the NetworkProcessProxy and
        StorageProcessProxy. However, since NetworkProcessProxy / StorageProcessProxy are refcounted, it has happened that code
        extends the lifetime of those past their process pool, leading to stale prrocess pool usage. The fix for these crashes
        so far as been to ref the WebProcessPool instead of the NetworkProcessProxy / StorageProcessProxy. However, it is very
        tempting for people to simply ref the NetworkProcessProxy / StorageProcessProxy given that they are refcounted.
        For this reason, this patch updates NetworkProcessProxy / StorageProcessProxy so that they are no longer RefCounted
        and so that the WebProcessPool truly owns them via std::unique_ptr<>.

        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::create): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        (WebKit::NetworkProcessProxy::throttler): Deleted.
        (WebKit::NetworkProcessProxy::processPool): Deleted.
        * UIProcess/Plugins/PluginProcessProxy.h:
        (WebKit::PluginProcessProxy::pluginProcessAttributes const): Deleted.
        (WebKit::PluginProcessProxy::pluginProcessToken const): Deleted.
        (WebKit::PluginProcessProxy::isValid const): Deleted.
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::create): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:

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

        NetworkLoad::didReceiveResponse should pass its completion handler to its client
        https://bugs.webkit.org/show_bug.cgi?id=188701

        Reviewed by Michael Catanzaro.

        Right now we have a confusing enum ShouldContinueDidReceiveResponse and a complicated flow
        that involves many objects and implicitly using NetworkLoad's destructor as part of the
        loading flow.  This makes the responsibilities of the objects clear.

        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::didReceiveResponse):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::~NetworkLoad):
        (WebKit::NetworkLoad::convertTaskToDownload):
        (WebKit::NetworkLoad::didReceiveResponse):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        (WebKit::NetworkLoad::continueDidReceiveResponse): Deleted.
        (WebKit::NetworkLoad::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::~NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::didReceiveResponse):
        (WebKit::PingLoad::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::didReceiveResponse):
        * NetworkProcess/PreconnectTask.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
        (WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Build fix.
        https://bugs.webkit.org/show_bug.cgi?id=189929

        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Prepare to replace WKBundleFileHandleCreateWithPath with a version that takes a WKBundlePageRef
        https://bugs.webkit.org/show_bug.cgi?id=189929

        Reviewed by Andy Estes.

        This will be needed for rdar://problem/24576194

        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.cpp:
        (WKBundleFileHandleCreateWithPathForPage):
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Begin deprecating C API
        https://bugs.webkit.org/show_bug.cgi?id=189810

        Reviewed by Andy Estes.

        * Shared/API/c/WKDeprecated.h: Added.
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed, rolling out r236368.

        Caused WebKit.NetworkProcessCrashWithPendingConnection API
        test to crash (Bug 189926)

        Reverted changeset:

        "Extending the lifetime of a NetworkProcessProxy /
        StorageProcessProxy may cause it to have a stale
        WebProcessPool pointer"
        https://bugs.webkit.org/show_bug.cgi?id=189851
        https://trac.webkit.org/changeset/236368

2018-09-21  Simon Fraser  <simon.fraser@apple.com>

        Remove the old "AcceleratedCompositingForOverflowScroll" code
        https://bugs.webkit.org/show_bug.cgi?id=189870

        Reviewed by Zalan Bujtas.

        The "AcceleratedCompositingForOverflowScroll" code was added to allow overflow:scroll to use
        composited scrolling if an overflow:scroll could be made a stacking context without affecting
        z-order. We need overflow:scroll to be accelerated always, so a different approach is needed.
        Remove this old code (unused by any platform?) to make working on new code easier.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetAcceleratedCompositingForOverflowScrollEnabled): Deleted.
        (WKPreferencesGetAcceleratedCompositingForOverflowScrollEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

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

        Do not do early processing of incoming sync IPC unless we're waiting for a sync IPC reply
        https://bugs.webkit.org/show_bug.cgi?id=186941

        Reviewed by Alex Christensen.

        The comment was claiming we were processing incoming sync messages while waiting for a
        sync IPC reply to prevent deadlocks. However, the code was failing to check if we were
        waiting for a sync IPC reply. As a result, incoming sync IPC messages would get processed
        early no matter what, jumping the line. This was the source of the flakiness in the blob
        tests since the IPC to register the blob in the network process was async and the follow-up
        IPC to ask the network process for the blob size was sync. The sync message to get the blob
        size would jump the line and get processed before the async message to register the blob.
        As a result, the network process would not know about the blob yet and return size 0. Of
        course, this could happen if the network process was sending sync IPC at the time. However,
        the network process never sends any sync IPC and therefore, should never process incoming
        IPC messages out of order.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::processIncomingMessage):

2018-09-24  Daniel Bates  <dabates@apple.com>

        [iOS] Key code is 0 for many hardware keyboard keys
        https://bugs.webkit.org/show_bug.cgi?id=189604

        Reviewed by Wenson Hsieh.

        For a hardware keyboard-generated event (an event with a non-nill event._hidEvent) pass
        the key code for the event. Otherwise, do what we do now and pass 0 as the event is likely
        a software keyboard-generated event.

        * Platform/spi/ios/UIKitSPI.h: Add some more SPI.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]):

2018-09-24  Brian Burg  <bburg@apple.com>

        Web Inspector: topContentInset is not accounted for when inspecting a WKWebView and docked to side
        https://bugs.webkit.org/show_bug.cgi?id=189859

        Reviewed by Joseph Pecoraro.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        Add special cases for inspecting a WKWebView. We already special-case for WKView.

2018-09-24  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Compositing indicators are not working
        https://bugs.webkit.org/show_bug.cgi?id=189915

        Reviewed by Žan Doberšek.

        Pass the debugBorder and repaintCount parameters to the TextureMapperLayer when required.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::updateSceneState):

2018-09-21  Dean Jackson  <dino@apple.com>

        Add PointerEvent, plus feature flag, plus Web Platform Tests
        https://bugs.webkit.org/show_bug.cgi?id=189867
        <rdar://problem/44697384>

        Reviewed by Simon Fraser.

        Add PointerEvents as an experimental feature.

        * Shared/WebPreferences.yaml:

2018-09-21  Brian Burg  <bburg@apple.com>

        Web Inspector: dock buttons disappear if Web Inspector goes fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=189865
        <rdar://problem/42600534>

        Reviewed by Matt Baker.

        When a fullscreen Safari tab has a docked Inspector, and the "detach" button
        is clicked, Inspector goes into its own fullscreen window. In that window,
        there are no buttons for docking to side or bottom.

        It turns out that we always send setDockingUnavailable(true) if the inspector
        window is fullscreen. This eventually causes the inspector to reflect that
        by hiding the docking-related buttons.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCanAttach):
        This early exit does not seem to serve any purpose, so remove it.

2018-09-21  Chris Dumez  <cdumez@apple.com>

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer
        https://bugs.webkit.org/show_bug.cgi?id=189851

        Reviewed by Alex Christensen.

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer:
        - NetworkProcessProxy::m_processPool
        - StorageProcessProxy::m_processPool

        Those data members are C++ references because it is expected that the WebProcessPool owns the NetworkProcessProxy and
        StorageProcessProxy. However, since NetworkProcessProxy / StorageProcessProxy are refcounted, it has happened that code
        extends the lifetime of those past their process pool, leading to stale prrocess pool usage. The fix for these crashes
        so far as been to ref the WebProcessPool instead of the NetworkProcessProxy / StorageProcessProxy. However, given how
        error-prone this is, this patch updates NetworkProcessProxy / StorageProcessProxy so that they forward their refcounting
        to the WebProcessPool.

        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::ref):
        (WebKit::NetworkProcessProxy::deref):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::create): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::ref):
        (WebKit::StorageProcessProxy::deref):
        (WebKit::StorageProcessProxy::create): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:

2018-09-21  Alex Christensen  <achristensen@webkit.org>

        Use a Variant for FormDataElement
        https://bugs.webkit.org/show_bug.cgi?id=189777

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        * NetworkProcess/NetworkResourceLoader.cpp:
        * Shared/SessionState.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toHTTPBody):

2018-09-21  Alex Christensen  <achristensen@webkit.org>

        Simply authentication code even more!
        https://bugs.webkit.org/show_bug.cgi?id=189719

        Reviewed by Andy Estes.

        Just when you thought it couldn't get simpler and more elegant, it can!

        * NetworkProcess/Downloads/Download.cpp:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/PingLoad.cpp:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * Shared/Authentication/AuthenticationChallengeDisposition.h: Added.
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::completeAuthenticationChallenge):
        (WebKit::AuthenticationManager::useCredentialForChallenge): Deleted.
        (WebKit::AuthenticationManager::useCredentialForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::continueWithoutCredentialForChallenge): Deleted.
        (WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::cancelChallenge): Deleted.
        (WebKit::AuthenticationManager::cancelSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::performDefaultHandling): Deleted.
        (WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinue): Deleted.
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge): Deleted.
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection):
        * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
        (WKAuthenticationDecisionListenerUseCredential):
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        * UIProcess/API/glib/WebKitAuthenticationRequest.cpp:
        (webkit_authentication_request_authenticate):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        * UIProcess/Authentication/AuthenticationDecisionListener.cpp:
        (WebKit::AuthenticationDecisionListener::AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::~AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::useCredential):
        (WebKit::AuthenticationDecisionListener::cancel):
        (WebKit::AuthenticationDecisionListener::performDefaultHandling):
        (WebKit::AuthenticationDecisionListener::rejectProtectionSpaceAndContinue):
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        (WebKit::AuthenticationDecisionListener::create):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * WebKit.xcodeproj/project.pbxproj:

2018-09-21  Chris Dumez  <cdumez@apple.com>

        Regression(Mojave): Resuming a WK2 download crashes
        https://bugs.webkit.org/show_bug.cgi?id=189838
        <rdar://problem/44618538>

        Reviewed by Alex Christensen.

        Update our workaround to tweak the download resume data to include the actual download path so that
        it works on macOS Mojave and up. Unfortunately, the resume data internal representation has changed,
        causing our previous workaround to fail.

        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):

2018-09-21  Youenn Fablet  <youenn@apple.com>

        Whitelist two additional plugins
        https://bugs.webkit.org/show_bug.cgi?id=189832
        <rdar://problem/44628127>

        Reviewed by Brent Fulgham.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed):

2018-09-21  Woodrow Wang  <woodrow_wang@apple.com>

        Clear persistent storage between tests for resourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=189684
        <rdar://problem/44540099>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

        Remove function only called in testing for resetting statistics to consistent
        state. 

        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebsiteDataStore::removeAllStorageAccessHandler):

2018-09-20  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236289.

        Caused 8 TestWebKitAPI.ContentFiltering test failures.

        Reverted changeset:

        "InjectedBundle parameters often need initialization function
        called before unarchiving"
        https://bugs.webkit.org/show_bug.cgi?id=189709
        https://trac.webkit.org/changeset/236289

2018-09-20  Youenn Fablet  <youenn@apple.com>

        Allow additional plug-ins to run unsandboxed
        https://bugs.webkit.org/show_bug.cgi?id=189791
        <rdar://problem/44628127>

        Reviewed by Brent Fulgham.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed):

2018-09-20  Brent Fulgham  <bfulgham@apple.com>

        InjectedBundle parameters often need initialization function called before unarchiving
        https://bugs.webkit.org/show_bug.cgi?id=189709
        <rdar://problem/44573653>

        Reviewed by Chris Dumez.

        Handle the case where the InjectedBundle parameters do not successfully decode because they contain
        an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
        after the bundle initialiation function runs, which gives the embedding program the opportunity to
        register additional classes that are safe for serialization.
        
        Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
        This new method returns 'true' if the serialization was successful, otherwise it returns false.

        Revise 'initialize' to call this new method and check the return value. If it fails, try decoding the
        bundle parameters after the bundle's initialization function is called.

        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Use the new method.
        (WebKit::InjectedBundle::decodeBundleParameters): Added.
        (WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
        'classesForCoder' method to unarchive the passed bundle parameters, rather than the
        NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
        NSDictionary object may itself hold other kinds of objects.

2018-09-20  Jer Noble  <jer.noble@apple.com>

        Enable Modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=189794

        Reviewed by Jon Lee.

        * Shared/WebPreferences.yaml:

2018-09-20  Thibault Saunier  <tsaunier@igalia.com>

        [GTK][WPE] Make sure MediaDeviceEnabled and PeerConnectionEnabled are always synced with enable-media-stream
        https://bugs.webkit.org/show_bug.cgi?id=188704

        By default m_isMediaDevicesEnabled and m_isScreenCaptureEnabled are false but
        m_isMediaStreamEnabled is true meaning that in the WPE minibrowser getUserMedia
        was disabled even if we explicitly set `"enable-media-stream", TRUE`.

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):

2018-09-20  Justin Michaud  <justin_michaud@apple.com>

        Implement CSS Custom Properties and Values Skeleton
        https://bugs.webkit.org/show_bug.cgi?id=189694

        Reviewed by Simon Fraser.

        Add feature flag for CSS custom properties and values api

        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-09-19  Dean Jackson  <dino@apple.com>

        Temporarily move fullscreen back to experimental features
        https://bugs.webkit.org/show_bug.cgi?id=189770
        <rdar://problem/44619282>

        Revert this change now that there is a commit to cherry-pick.

        * Shared/WebPreferences.yaml:

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

        Unreviewed crash fix after r236226.

        We need to protect |this| in WebProcessProxy::requestTermination().

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::requestTermination):

2018-09-20  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=189663
        <rdar://problem/44184955>

        Reviewed by Geoff Garen and Chris Dumez.

        We need to keep the layer tree of the previous page alive and visible until we have something
        to render on the new page. With PSON on Mac this means that we should keep displaying the
        layer tree from the previus process.

        This patch moves the management of 'attaching' the drawing area (Mac only concept) from web process
        to UI process. This is when we parent the layer tree to the view root layer. It also ensures that
        the layer tree is not deleted too early on process swap and that it still eventually gets deleted.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::attachInWebProcess):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::messageNamesToIgnoreWhileSuspended):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):

        We no longer tear down drawing area (layer tree) for suspended pages automatically. Send an explicit
        message for it.

        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCompletePageTransition):

        Attach the drawing area if appropriate.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Call PageClien::processWillSwap instead of processDidExit when appropriate.

        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        This is called when we have switched to the new layer tree.
        Tear down the drawing area in the previus process.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::processWillSwap):

        On iOS this just call processDidExit for now.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::processWillSwap):
        (WebKit::PageClientImpl::processDidExit):

        Add processWillSwap separately from processDidExit. They are currently the same
        except processWillSwap doesn't clear the root layer.

        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::attachInWebProcess):

        Send a message to the web process to attach the drawing area.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attach):
        (WebKit::DrawingArea::attachDrawingArea): Deleted.

        Rename to be less redundant.

        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::WebPage::setLayerTreeStateIsFrozen):

        Layer tree is always frozen in a suspended process (if it exists).

        (WebKit::WebPage::didReceivePolicyDecision):

        Suspend immediately when receiving policy decision to avoid flash on 'about:blank' loading.

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):

        Notify UI process of transition completion.

        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::TiledCoreAnimationDrawingArea::attach):
        (WebKit::TiledCoreAnimationDrawingArea::attachDrawingArea): Deleted.

2018-09-20  Tomas Popela  <tpopela@redhat.com>

        [GTK] Always prints in portrait when landscape is requested
        https://bugs.webkit.org/show_bug.cgi?id=189543

        Reviewed by Michael Catanzaro.

        We have to change the surface size based on the requested orientation.
        Otherwise only portrait will be printed as it's hardcoded.

        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:

2018-09-19  Dean Jackson  <dino@grorg.org>

        Temporarily move fullscreen back to experimental features
        https://bugs.webkit.org/show_bug.cgi?id=189770
        <rdar://problem/44619282>

        Reviewed by Simon Fraser.

        Make fullscreen an experimental feature again.

        * Shared/WebPreferences.yaml:

2018-09-19  Dawei Fenton  <realdawei@apple.com>

        Unreviewed, rolling out r236229.

        caused API timouts on mac and ios

        Reverted changeset:

        "Clear persistent storage between tests for
        resourceLoadStatistics"
        https://bugs.webkit.org/show_bug.cgi?id=189684
        https://trac.webkit.org/changeset/236229

2018-09-19  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(236154) C API clients not using WKPageSetPageNavigationClient couldn't complete HTTPS requests
        https://bugs.webkit.org/show_bug.cgi?id=189771

        Reviewed by Tim Horton.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didReceiveAuthenticationChallenge):
        Perform default behavior if there's an authentication challenge but we're using the default navigation client.
        I wish we had infrastructure to test this but WebKitTestRunner uses WKPageSetNavigationClient
        and we don't have the ability to do networking from API tests.  This is a growing problem I intend to solve.

2018-09-19  Woodrow Wang  <woodrow_wang@apple.com>

        Clear persistent storage between tests for resourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=189684
        <rdar://problem/44540099>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

        Remove function only called in testing for resetting statistics to consistent
        state. 
        
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.

2018-09-19  Chris Dumez  <cdumez@apple.com>

        Crash under WebPageProxy::decidePolicyForNavigationAction()
        https://bugs.webkit.org/show_bug.cgi?id=189763
        <rdar://problem/44597111>

        Reviewed by Alex Christensen.

        Update WebNavigationState::navigation() / WebNavigationState::takeNavigation()
        to return a pointer instead of a reference as we have evidence that they can
        return null. I kept the debug assertions to try and catch the cases where we
        return null but at least we stop crashing in release builds.

        * UIProcess/WebNavigationState.cpp:
        (WebKit::WebNavigationState::navigation):
        (WebKit::WebNavigationState::takeNavigation):
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):

2018-09-19  Chris Dumez  <cdumez@apple.com>

        Crash under WebProcessProxy::suspendedPageWasDestroyed(WebKit::SuspendedPageProxy&)
        https://bugs.webkit.org/show_bug.cgi?id=189721
        <rdar://problem/44359788>

        Reviewed by Geoffrey Garen.

        Fix crash when destroying a SuspendedPageProxy whose WebProcessProxy was already
        destroyed.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::process const):
        Update SuspendedPageProxy::m_process to be a RefPtr<> instead of a raw pointer, similarly
        to what we do in WebPageProxy. Relying on the WebProcessProxy to not get destroyed is
        risky as this crash demonstrates.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::requestTermination):
        When a WebProcessProxy is terminated (by client or WebKit due to memory / cpu usage), call
        webProcessDidClose() on all SuspendedPages, similarly to what we do in case of a crash in
        processDidTerminateOrFailedToLaunch(). Failing to do so means that the SuspendedPageProxy
        may still have a pointer to this WebProcessProxy, even though WebProcessProxy::shutDown()
        has been called (which may destroy the WebProcessProxy).

2018-09-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add optional cap on partitioned cache max age
        https://bugs.webkit.org/show_bug.cgi?id=189711
        <rdar://problem/39246837>

        Reviewed by Antti Koivisto and Chris Dumez.

        These changes add the capability to set a max age cap for prevalent resources
        and consults it when retrieving cache entries. If an entry is capped and found
        to be too old, it will not be used but instead removed from the cache.

        This functionality is off by default because no cap is set by default.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources):
            Infrastructure for testing.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
            Now sends in the session ID in the retrieve call.
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::hasReachedPrevalentResourceAgeCap):
            Static convenience function.
        (WebKit::NetworkCache::makeUseDecision):
            Now receives an optional maxAge parameter and checks
            hasReachedPrevalentResourceAgeCap() first.
        (WebKit::NetworkCache::Cache::retrieve):
            Now takes a session ID.
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
            Added UseDecision::NoDueToPrevalentResourceAgeCap which causes a
            return of WebCore::DiagnosticLoggingKeys::otherKey().
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsCacheMaxAgeCap):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
            Infrastructure for testing.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
            Now supports a user default ResourceLoadStatisticsCacheMaxAgeCap.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::removeAllStorageAccess):
        (WebKit::NetworkProcessProxy::getAllStorageAccessEntries):
        (WebKit::NetworkProcessProxy::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::didSetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::didResetCacheMaxAgeCapForPrevalentResources):
        (WebKit::nextRequestStorageAccessContextId): Deleted.
            Deleted this to make all code use the generic generateCallbackID().
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
            Used to transfer the setting from the UI process to the network process. 
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setCacheMaxAgeCap):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-09-18  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Allow WebContent process to check the "Protocol Characteristics" of files to which it has access
        https://bugs.webkit.org/show_bug.cgi?id=189712
        <rdar://problem/44386429>

        Reviewed by Alex Christensen.

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

2018-09-18  Chris Dumez  <cdumez@apple.com>

        [iOS] Crash under WebPageProxy::navigationGestureSnapshotWasRemoved()
        https://bugs.webkit.org/show_bug.cgi?id=189714
        <rdar://problem/32839498>

        Reviewed by Tim Horton.

        The ViewGestureController::removeSwipeSnapshot() implementation for iOS calls
        navigationGestureSnapshotWasRemoved() on m_webPageProxyForBackForwardListForCurrentSwipe.
        m_webPageProxyForBackForwardListForCurrentSwipe can differ from m_webPageProxy, and
        is a RefPtr<>. This means that this WebPageProxy's WKWebView might have been deallocated,
        in which case we'll crash when trying to use the pageClient in
        WebPageProxy::navigationGestureSnapshotWasRemoved(). To address the issue, we now return
        early in WebPageProxy::navigationGestureSnapshotWasRemoved() if m_isClosed is true,
        after resetting m_isShowingNavigationGestureSnapshot to false but *before* trying to use
        the pageClient. When a WKWebView is deallocated, it calls WebPageProxy::close(), which
        sets m_isClosed to true.

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

2018-09-18  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Limit capturing extra metrics for Web Inspector when not required.
        https://bugs.webkit.org/show_bug.cgi?id=189520

        Reviewed by Alex Christensen.

        Respect the value of NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics() to reduce the process
        time when they are not needed.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::createCurlRequest):

2018-09-18  Alex Christensen  <achristensen@webkit.org>

        Make WebPageProxy always have a API::NavigationClient instead of always having a API::LoaderClient and API::PolicyClient
        https://bugs.webkit.org/show_bug.cgi?id=189012

        Reviewed by Andy Estes.

        When WebKit2 was being developed, we initially made the C API WKPageSetPagePolicyClient and WKPageSetPageLoaderClient.
        When we released WKWebView, it was using WKNavigationDelegate, equivalent to WKPageSetPageNavigationClient.
        To support one or the other, we would use the navigation client if it was present, but if not we would fall back to the
        loader or policy client.  Since the loader and policy clients are now being minimally supported only until legacy
        software migrates to the navigation client, we are adding new functionality to the navigation client.
        Making the navigation client the default and using the loader or policy client only if they are present supports
        the legacy software and makes us have fewer forgotten null checks when adding new functionality to the navigation client.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::createNavigationClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setNavigationClient):
        (WebKit::WebPageProxy::setLoaderClient):
        (WebKit::WebPageProxy::setPolicyClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::contentRuleListNotification):
        (WebKit::WebPageProxy::webGLPolicyForURL):
        (WebKit::WebPageProxy::resolveWebGLPolicyForURL):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::navigationGestureDidBegin):
        (WebKit::WebPageProxy::navigationGestureWillEnd):
        (WebKit::WebPageProxy::navigationGestureDidEnd):
        (WebKit::WebPageProxy::navigationGestureSnapshotWasRemoved):
        * UIProcess/WebPageProxy.h:

2018-09-18  Alex Christensen  <achristensen@webkit.org>

        Clean up AuthenticationChallengeProxy
        https://bugs.webkit.org/show_bug.cgi?id=189668

        Reviewed by Youenn Fablet.

        At its core, it's a CompletionHandler with some information.
        Make it more elegant and simple with no change in behavior and reduce the complexity of this security-sensitive object.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionAuthChallengeDisposition):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * UIProcess/API/C/WKAuthenticationChallenge.cpp:
        (WKAuthenticationChallengeGetDecisionListener):
        (WKAuthenticationChallengeGetProtectionSpace):
        (WKAuthenticationChallengeGetProposedCredential):
        (WKAuthenticationChallengeGetPreviousFailureCount):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender cancelAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender useCredential:forAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender performDefaultHandlingForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender rejectProtectionSpaceAndContinueWithChallenge:]):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        (WebKit::AuthenticationChallengeProxy::~AuthenticationChallengeProxy): Deleted.
        (WebKit::AuthenticationChallengeProxy::useCredential): Deleted.
        (WebKit::AuthenticationChallengeProxy::cancel): Deleted.
        (WebKit::AuthenticationChallengeProxy::performDefaultHandling): Deleted.
        (WebKit::AuthenticationChallengeProxy::rejectProtectionSpaceAndContinue): Deleted.
        (WebKit::AuthenticationChallengeProxy::proposedCredential const): Deleted.
        (WebKit::AuthenticationChallengeProxy::protectionSpace const): Deleted.
        (WebKit::AuthenticationChallengeProxy::setSecKeyProxyStore): Deleted.
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        (WebKit::AuthenticationChallengeProxy::create):
        (WebKit::AuthenticationChallengeProxy::listener const):
        (WebKit::AuthenticationChallengeProxy::previousFailureCount const): Deleted.
        * UIProcess/Authentication/AuthenticationDecisionListener.cpp:
        (WebKit::AuthenticationDecisionListener::AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::~AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::useCredential):
        (WebKit::AuthenticationDecisionListener::cancel):
        (WebKit::AuthenticationDecisionListener::performDefaultHandling):
        (WebKit::AuthenticationDecisionListener::rejectProtectionSpaceAndContinue):
        (WebKit::AuthenticationDecisionListener::detachChallenge): Deleted.
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        (WebKit::AuthenticationDecisionListener::create):
        * UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm:
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc):
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc const): Deleted.
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::secKeyProxyStore):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        * UIProcess/WebPageProxy.h:

2018-09-18  Ben Richards  <benton_richards@apple.com>

        Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header
        https://bugs.webkit.org/show_bug.cgi?id=188601

        Reviewed by Dan Bernstein.

        Added a script to the process entitlements build phase of the WebContent service that copies resource
        files to WebKit.framework/PrivateHeaders/CustomWebContentResources. These resource files are to
        be used by clients who would like to make a custom WebContent service.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/API/Cocoa/WKWebProcess.h: Drive-by fix to make this header compileable alone.

2018-09-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236138.

        Caused API test and layout test failures on iOS.

        Reverted changeset:

        "REGRESSION (PSON): White or Black flash occurs when process
        swapping on navigation on Mac"
        https://bugs.webkit.org/show_bug.cgi?id=189663
        https://trac.webkit.org/changeset/236138

2018-09-18  Eric Carlson  <eric.carlson@apple.com>

        Always log when granting/revoking capture sandbox extensions
        https://bugs.webkit.org/show_bug.cgi?id=189701
        <rdar://problem/44564029>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream): Always log.
        (WebKit::UserMediaProcessManager::endedCaptureSession): Ditto.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions): Ditto.
        (WebKit::UserMediaPermissionRequestManager::revokeUserMediaDeviceSandboxExtensions): Ditto.

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

        Enable Unified Plan by default
        https://bugs.webkit.org/show_bug.cgi?id=189675

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-09-18  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=189663
        <rdar://problem/44184955>

        Reviewed by Geoff Garen.

        We need to keep the layer tree of the previous page alive and visible until we have something
        to render on the new page. With PSON on Mac this means that we should keep displaying the
        layer tree from the previus process.

        This patch moves the management of 'attaching' the drawing area (Mac only concept) from web process
        to UI process. This is when we parent the layer tree to the view root layer. It also ensures that
        the layer tree is not deleted too early on process swap and that it still eventually gets deleted.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::attachInWebProcess):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::messageNamesToIgnoreWhileSuspended):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):

        We no longer tear down drawing area (layer tree) for suspended pages automatically. Send an explicit
        message for it.

        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):

        Only call didRelaunchProcess when process actually relaunched (not navigation process launch) to
        match not calling processDidExit in resetStateAfterProcessExited.

        (WebKit::WebPageProxy::didCompletePageTransition):

        Attach the drawing area if appropriate.

        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

        Send suspend message to WebPage immediately instead waiting for the runloop callback. This is needed so we
        can avoid flashing the initial empty document load when the new Page object is created.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Don't call processDidExit when suspending, not exiting the process (this function needs a new name or rafactoring).
        This avoids clearing the drawing area and flashing to black.

        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        This is called when we have switched to the new layer tree.
        Tear down the drawing area in the previus process.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::attachInWebProcess):

        Send a message to the web process to attach the drawing area.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attach):
        (WebKit::DrawingArea::attachDrawingArea): Deleted.

        Rename to be less redundant.

        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::WebPage::setLayerTreeStateIsFrozen):

        Layer tree is always frozen in a suspended process (if it exists).

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):

        Notify UI process of transition completion.

        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::TiledCoreAnimationDrawingArea::attach):
        (WebKit::TiledCoreAnimationDrawingArea::attachDrawingArea): Deleted.

2018-09-18  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Implement mouse event modifiers
        https://bugs.webkit.org/show_bug.cgi?id=189697

        Reviewed by Carlos Garcia Campos.

        Only "CapsLocks" is missing, as WPE doesn't support that modifier.
        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::modifiersForEventModifiers):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::modifiersForEvent): Deleted.

2018-09-17  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed build fix after r236101.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        Correct a BinarySemaphore::wait() call which now accepts no arguments.

2018-09-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use Semaphore and BinarySemaphore instead of dispatch_semaphore_t
        https://bugs.webkit.org/show_bug.cgi?id=185339

        Reviewed by Mark Lam.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::SyncMessageState::wait):
        * Shared/mac/SecItemShim.cpp:
        (WebKit::sendSecItemRequest):
        Use BinarySemaphore.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously):
        * UIProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::applicationWillTerminate):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (appLinkForURL):
        Use BinarySemaphore to wait for async completion handler. We also fix memory leak
        since the old code does not call dispatch_release for the used semaphore.

2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Many modern media control tests leak documents in testing
        https://bugs.webkit.org/show_bug.cgi?id=189437

        Reviewed by Darin Adler.

        In order to accurately detect leaks in media controls tests which use lots of
        SVGImages, we have to:
        - Fire a zero-delay timer after the postTask, in order for ImagesLoader's m_derefElementTimer
          to clear references to elements.
        - Have releaseCriticalMemory() call CachedResourceLoader's garbageCollectDocumentResources()
          to drop the last handle to the CachedResource for an SVGImage.
        - Call WKBundleReleaseMemory() after the GC and timer, since we need garbageCollectDocumentResources()
          to run again after that timer has fired.
        
        This should fix most of the spurious leak reports involving SVGImage documents.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCallAfterTasksAndTimers):
        (WKBundlePagePostTask): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:

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

        Try to fix Apple internal builds with the iOS 12.0 SDK.

        * Configurations/WebKit.xcconfig: Disable framework header postprocessing for iOS 12.0.

2018-09-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236092 because it breaks internal builds. Also,  remove stray '+' character from ChangeLog file.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-08-17  Ben Richards  <benton_richards@apple.com>

        Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header
        https://bugs.webkit.org/show_bug.cgi?id=188601

        Reviewed by Dan Bernstein.

        Added a script to the process entitlements build phase of the WebContent service that copies resource
        files to WebKit.framework/PrivateHeaders/CustomWebContentResources. These resource files are to
        be used by clients who would like to make a custom WebContent service.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:


2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Add more Fullscreen logging
        https://bugs.webkit.org/show_bug.cgi?id=189656

        Reviewed by Jer Noble.

        Add some fullscreen logging so I can tell whether WebFullScreenManager ever releases
        the fullscreen element.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::WebFullScreenManager):
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):
        (WebKit::WebFullScreenManager::setPIPStandbyElement):
        (WebKit::WebFullScreenManager::enterFullScreenForElement):
        (WebKit::WebFullScreenManager::exitFullScreenForElement):
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        (WebKit::WebFullScreenManager::didExitFullScreen):
        (WebKit::WebFullScreenManager::close):
        * WebProcess/FullScreen/WebFullScreenManager.h:

2018-09-17  Tim Horton  <timothy_horton@apple.com>

        Swipe snapshot can get stuck if swiping is disabled while it is visible
        https://bugs.webkit.org/show_bug.cgi?id=189667
        <rdar://problem/40367780>

        Reviewed by Simon Fraser.

        If navigation gestures are disabled while a swipe snapshot is visible,
        WKWebView will tear down the ViewGestureController, which means that
        the SnapshotRemovalTracker will no longer be around to ever remove
        the snapshot.

        It's currently very hard to write a test for this because we have
        yet to come up with a good mechanism for testing swiping on iOS.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView setAllowsBackForwardNavigationGestures:]):
        Instead of tearing down the ViewGestureController when navigation
        gestures are disabled, just set a bit on it that disables gestures.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::canSwipeInDirection const):
        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::setSwipeGestureEnabled):
        (WebKit::ViewGestureController::isSwipeGestureEnabled):
        Add a bit to ViewGestureController that makes starting new gestures
        always fail, but allows e.g. snapshots from existing swipes to continue
        their usual behavior.

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

        Expose WKWebProcess.h as a private header
        https://bugs.webkit.org/show_bug.cgi?id=189636

        * WebKit.xcodeproj/project.pbxproj:

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

        Expose XPCServiceMain in a WebProcess header rather than WKProcessPool
        https://bugs.webkit.org/show_bug.cgi?id=189636

        Reviewed by Dan Bernstein.

        Fix a few build failures along the way.

        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::windowAndViewFramesChanged):
        (WebKit::PluginControllerProxy::updateLayerHostingContext):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::replacedNSWorkspace_launchApplicationAtURL_options_configuration_error):
        (WebKit::PluginProcess::platformInitializeProcess):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        (main):
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (+[WKProcessPool _webContentProcessXPCMain]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/API: Added.
        * WebProcess/API/Cocoa: Added.
        * WebProcess/API/Cocoa/WKWebProcess.cpp: Added.
        (WKWebProcessMain):
        * WebProcess/API/Cocoa/WKWebProcess.h: Added.
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject convertScreenPointToRootView:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

2018-09-17  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Respond with requested authentication scheme for authentication challenge.
        https://bugs.webkit.org/show_bug.cgi?id=189318

        Reviewed by Alex Christensen.

        Curl port depends on libcurl's authentication handling by enabling CURLAUTH_ANY. With this
        mode, the round-trip communication between the client and the server is handled by libcurl
        internally. That's okay for many cases. But when initial request has a credentials
        (i.e. XMLHttpRequest), there's no valid chance to store credential to the storage because
        the returned response is not 401.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
        (WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
        (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
        (WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
        (WebKit::NetworkDataTaskCurl::restartWithCredential):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-17  Woodrow Wang  <woodrow_wang@apple.com>

        Clear pending resource load statistics' writes after tests
        https://bugs.webkit.org/show_bug.cgi?id=189632
        <rdar://problem/44469275>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):

2018-09-17  Chris Dumez  <cdumez@apple.com>

        PSON: window.open() with 'noopener' should only process-swap cross-site, not cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=189602
        <rdar://problem/44430549>

        Reviewed by Geoff Garen.

        The following fixes were made to our process swap on navigation logic:
        - Browsing contexts opened via window.open() with 'noopener' option now only same if
          they are cross-site, instead of doing a stricter cross-origin check.
        - Support process swapping when opening a new window via <a target="_blank" rel="noopener">
          that is cross-site.

        In order to support this, the following changes were made:
        - Stop passing a 'isCrossOriginWindowOpenNavigation' flag to the UIProcess when navigating because:
          - This is specific to window.open() and does not apply to other windows opened by DOM
          - This forces the origin check to happens on WebContent process side instead of relying on the
            one in WebProcessPool in the UIProcess
        - Pass the origin of the requester to the UIProcess when navigating, so that the WebProcessPool
          can use the requester's host for the cross-site check for the initial navigation in a new window
          created by DOM.
        - Add 2 flags to WebPageProxy which indicate if the page was created by the DOM and if any provisional
          loads have been committed. The WebProcessPool uses theses flags to recognize initial loads in
          new windows created by the DOM, so that it uses the requester's origin for the cross-site check.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setRequesterOrigin):
        (API::Navigation::requesterOrigin const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::setOpenedByDOM):
        (WebKit::WebPageProxy::openedByDOM const):
        (WebKit::WebPageProxy::hasCommittedAnyProvisionalLoads const):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::shouldUseSameProcessBasedOnURLs):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-09-17  Alexey Proskuryakov  <ap@apple.com>

        Revert https://trac.webkit.org/r235910, because the new test times out.
        Crash under PlatformPopupMenuData::encode when interacting with a select menu that has variable fonts
        https://bugs.webkit.org/show_bug.cgi?id=188008

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):

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

        Refactoring related to Safe Browsing
        https://bugs.webkit.org/show_bug.cgi?id=189631

        Reviewed by Tim Horton.

        Make SafeBrowsingResult RefCounted.
        Move logic from an unnamed lambda to WebPageProxy::receivedNavigationPolicyDecision.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): Deleted.
        (WebKit::WebPageProxy::addPlatformLoadParameters): Deleted.
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
        (WebKit::WebPageProxy::startDrag): Deleted.
        (WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
        (WebKit::WebPageProxy::setDragCaretRect): Deleted.
        (WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
        (WebKit::WebPageProxy::platformCloneAttachment): Deleted.
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::create):
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:

2018-09-17  Darin Adler  <darin@apple.com>

        Use OpaqueJSString rather than JSRetainPtr inside WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189652

        Reviewed by Saam Barati.

        * Shared/API/c/WKString.cpp: Removed unneeded include of JSStringRef.h.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp: Removed unneeded
        include of JSRetainPtr.
        (WebKit::toJSString): Deleted.
        (WebKit::toJSValue): Use OpaqueJSString::create.
        (WebKit::callPropertyFunction): Ditto.
        (WebKit::evaluate): Use adoptRef.
        (WebKit::evaluateJavaScriptCallback): Ditto.
        (WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
        Use OpaqueJSString::create.
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use
        String rather than JSStringRef.

        * WebProcess/Plugins/PDF/PDFPlugin.mm: Removed unneeded includes.
        (WebKit::PDFPlugin::runScriptsInPDFDocument): Use OpaqueJSString::create.

2018-09-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix incorrect WPE build fix made in r236009

        This isn't the right place to add the typedef. I failed to notice that the WebKitWebView
        type is not actually used anywhere in this header. Actually, the problematic function is no
        longer declared or used anywhere and was just missed when WebKitScriptDialog was refactored,
        so remove it.

        * UIProcess/API/wpe/WebKitScriptDialog.h:
        * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp:
        (webkitScriptDialogRun): Deleted.

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

        Move IndexedDB to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189415
        <rdar://problem/44396973>

        Reviewed by Chris Dumez.

        We are going to eliminate storage process and move its functionality to network process. 
        The reasons why we want to do this:
        1. Lower resource usage of having an additional process for storage operations, especially
        memory. Single storage process takes about 5MB memory on macOS.
        2. Reduce latency of Service Workers. After enabling Service Workers, we've seen
        regression in app launch. The launch time of storage process is partly attributed to this:
        Service Workers delay page loading until receiving response from storage process.
        3. We choose network process because UI process may have broader access in file system
        that we don't want the storage operations to have.

        This patch is the first piece towards the goal. It mainly moves indexedDB from storage process
        to corresponding components of network process. Moving of Service Worker and stopping to 
        launch storage process will be done in following patches.

        We expect to see the higher cpu and memory usage of network process as it is taking more work,
        but the overall gain in memory and latency after we completely remove storage process should be 
        positive.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        (WebKit::WebIDBConnectionToClient::connectionToClient):
        (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
        (WebKit::WebIDBConnectionToClient::didOpenDatabase):
        (WebKit::WebIDBConnectionToClient::didAbortTransaction):
        (WebKit::WebIDBConnectionToClient::didCommitTransaction):
        (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
        (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
        (WebKit::WebIDBConnectionToClient::didRenameObjectStore):
        (WebKit::WebIDBConnectionToClient::didClearObjectStore):
        (WebKit::WebIDBConnectionToClient::didCreateIndex):
        (WebKit::WebIDBConnectionToClient::didDeleteIndex):
        (WebKit::WebIDBConnectionToClient::didRenameIndex):
        (WebKit::WebIDBConnectionToClient::didPutOrAdd):
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        (WebKit::WebIDBConnectionToClient::didGetRecord):
        (WebKit::WebIDBConnectionToClient::didGetAllRecords):
        (WebKit::WebIDBConnectionToClient::didGetCount):
        (WebKit::WebIDBConnectionToClient::didDeleteRecord):
        (WebKit::WebIDBConnectionToClient::didOpenCursor):
        (WebKit::WebIDBConnectionToClient::didIterateCursor):
        (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::didStartTransaction):
        (WebKit::WebIDBConnectionToClient::didCloseFromServer):
        (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebKit::WebIDBConnectionToClient::didGetAllDatabaseNames):
        (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):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.h.
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):

        Code moved from StorageToWebProcessConnection::didReceiveMessage.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        Network process receives and stores sandbox extension of temporary files for later indexedDB
        use.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::generateIDBConnectionToServerIdentifier):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::ensurePathExists):
        (WebKit::NetworkProcess::postStorageTask):
        (WebKit::NetworkProcess::performNextStorageTask):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile):
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        (WebKit::NetworkProcess::addIndexedDatabaseSession):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):

        Instead of asking UI process to grant sandbox extension to storage process, now network 
        process just asks for sandbox extension fot itself.

        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions):
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::idbServer): Deleted.
        (WebKit::StorageProcess::grantSandboxExtensionsForBlobs): Deleted.
        (WebKit::StorageProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::StorageProcess::accessToTemporaryFileComplete): Deleted.
        (WebKit::StorageProcess::indexedDatabaseOrigins): Deleted.
        (WebKit::StorageProcess::getSandboxExtensionsForBlobFiles): Deleted.
        (WebKit::StorageProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::queue): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::generateIDBConnectionToServerIdentifier): Deleted.
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer): Deleted.
        (WebKit::StorageToWebProcessConnection::removeIDBConnectionToServer): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getSandboxExtensionsForBlobFiles): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingIDBConnectionToServerForIdentifier const):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingIDBConnectionToServerForIdentifier): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):

2018-09-08  Darin Adler  <darin@apple.com>

        Streamline JSRetainPtr, fix leaks of JSString and JSGlobalContext
        https://bugs.webkit.org/show_bug.cgi?id=189455

        Reviewed by Keith Miller.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::toJSString): Use adopt function instead of adopt construuctor.
        (WebKit::evaluate): Ditto.
        (WebKit::evaluateJavaScriptCallback): Ditto.
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Ditto.

2018-09-14  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236020.

        This caused an api failure on High Sierra

        Reverted changeset:

        "Refactoring related to Safe Browsing"
        https://bugs.webkit.org/show_bug.cgi?id=189631
        https://trac.webkit.org/changeset/236020

2018-09-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Bug fix on some inaccurate values in NetworkLoadMetrics.
        https://bugs.webkit.org/show_bug.cgi?id=189530

        Reviewed by Alex Christensen.

        Curl port uses the start time libcurl provided. But there's a lug between main thread and Curl thread.
        Record the start time of request instead of libcurl's start timing and use it to measure the metrics.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
        (WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
        (WebKit::NetworkDataTaskCurl::restartWithCredential):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-14  Alex Christensen  <achristensen@webkit.org>

        Refactoring related to Safe Browsing
        https://bugs.webkit.org/show_bug.cgi?id=189631

        Reviewed by Tim Horton.

        Make SafeBrowsingResult RefCounted.
        Move logic from an unnamed lambda to WebPageProxy::receivedNavigationPolicyDecision.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): Deleted.
        (WebKit::WebPageProxy::addPlatformLoadParameters): Deleted.
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
        (WebKit::WebPageProxy::startDrag): Deleted.
        (WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
        (WebKit::WebPageProxy::setDragCaretRect): Deleted.
        (WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
        (WebKit::WebPageProxy::platformCloneAttachment): Deleted.
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::create):
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:

2018-09-14  Geoffrey Garen  <ggaren@apple.com>

        Clarify the configuration used by WKUIDelegate's createWebViewWithConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=189634

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKUIDelegate.h:

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.

        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        Added some helper functions to null out a RefPtr<GraphicsLayer> after removing from the tree,
        clearing the client. GraphicsLayer.m_client becomes a pointer, so it can be set to point to a singleton
        empty client when a GraphicsLayer gets detached from its owner. More explicit layer unparenting,
        and removed some unnecessary parent checks, and redundant unparenting.
        
        Other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::~WebInspectorClient):
        (WebKit::WebInspectorClient::showPaintRect):
        (WebKit::WebInspectorClient::animationEndedForLayer):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::createGraphicsLayer):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::updateRootLayers):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2018-09-14  Eric Carlson  <eric.carlson@apple.com>

        Support arbitrary video resolution in getUserMedia API
        https://bugs.webkit.org/show_bug.cgi?id=178109
        <rdar://problem/35083128>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:

2018-09-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl][WebKit] Bug fix for continuously retrying with empty credentials.
        https://bugs.webkit.org/show_bug.cgi?id=189601

        Reviewed by Alex Christensen.

        Added stop condition for empty credentials passed by client.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
        (WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse):
        (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
        (WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-14  Jer Noble  <jer.noble@apple.com>

        Turn SourceBufferChangeTypeEnabled on by default
        https://bugs.webkit.org/show_bug.cgi?id=189527

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

2018-09-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, speculative WPE build fix after r236004
        https://bugs.webkit.org/show_bug.cgi?id=189545

        * UIProcess/API/wpe/WebKitScriptDialog.h:

2018-09-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Make script dialogs modal to the current web view only
        https://bugs.webkit.org/show_bug.cgi?id=189545

        Reviewed by Michael Catanzaro.

        Change the default implementation of script dialogs to use an embedded window, like the HTTP auth dialog,
        instead of a GtkMessageDialog. This patch adds a base class WebKitWebViewDialog shared by
        WebKitAuthenticationDialog and the new WebKitScriptDialogImpl.

        * SourcesGTK.txt: Add new files to compilation.
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h:
        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        (webkitAuthenticationDialogInitialize): Do not use a frame and use a better styled title.
        (webkit_authentication_dialog_class_init): Remove implementation of vfuncs that are now implemented by the
        parent.
        * UIProcess/API/gtk/WebKitAuthenticationDialog.h:
        * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp:
        (webkitScriptDialogAccept): Use WebKitScriptDialogImpl API.
        (webkitScriptDialogDismiss): Ditto.
        (webkitScriptDialogSetUserInput): Ditto.
        * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: Added.
        (webkitScriptDialogImplClose):
        (webkitScriptDialogImplKeyPressEvent):
        (webkitScriptDialogImplMap):
        (webkitScriptDialogImplConstructed):
        (webkitScriptDialogImplDispose):
        (webkit_script_dialog_impl_class_init):
        (webkitScriptDialogImplAddButton):
        (webkitScriptDialogImplNew):
        (webkitScriptDialogImplCancel):
        (webkitScriptDialogImplConfirm):
        (webkitScriptDialogImplSetEntryText):
        * UIProcess/API/gtk/WebKitScriptDialogImpl.h: Added.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewChildIsInternalWidget): Rename authenticationDialog as just dialog.
        (webkitWebViewBaseAddDialog): Ditto.
        (webkitWebViewBaseContainerRemove): Ditto.
        (webkitWebViewBaseContainerForall): Ditto.
        (webkitWebViewBaseConstructed): Ditto.
        (webkitWebViewBaseSizeAllocate): Ditto.
        (webkitWebViewBaseKeyPressEvent): Ditto.
        (webkitWebViewBaseHandleMouseEvent): Ditto.
        (webkitWebViewBaseButtonPressEvent): Ditto.
        (webkitWebViewBaseButtonReleaseEvent): Ditto.
        (webkitWebViewBaseHandleWheelEvent): Ditto.
        (webkitWebViewBaseScrollEvent): Ditto.
        (webkitWebViewBaseMotionNotifyEvent): Ditto.
        (webkitWebViewBaseCrossingNotifyEvent): Ditto.
        (webkitWebViewBaseTouchEvent): Ditto.
        (webkitWebViewBaseFocus): Ditto.
        (webkitWebViewBaseDestroy): Ditto.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/WebKitWebViewDialog.cpp: Added.
        (webkitWebViewDialogDraw):
        (webkitWebViewDialogSizeAllocate):
        (webkitWebViewDialogConstructed):
        (webkit_web_view_dialog_class_init):
        * UIProcess/API/gtk/WebKitWebViewDialog.h: Added.
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewAuthenticate):
        (webkitWebViewScriptDialog):

2018-09-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235954.

        Breaks the watchOS build.

        Reverted changeset:

        "Move IndexedDB to Network Process"
        https://bugs.webkit.org/show_bug.cgi?id=189415
        https://trac.webkit.org/changeset/235954

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): setting window.opener to null allows process swapping in cases that are not web-compatible
        https://bugs.webkit.org/show_bug.cgi?id=189590
        <rdar://problem/44422725>

        Reviewed by Geoffrey Garen.

        If script calls window.open() without 'noopener' and the newly navigated window gets navigated cross-site,
        we are currently unable to process-swap because the opener has a WindowProxy handle to this new Window and
        may interact with it (which we currently do not support cross-process). We were dealing with this by not
        process-swapping if window.opener is not null. This works most of the time but is not sufficient because the
        opener may get nulled out, while the opener still has a valid WindowProxy handle to its openee.

        Therefore, we now also check for a flag indicating if the frame was opened via window.open() without
        'nooopener'. We still need to check if the browsing context has an opener for browsing context created
        via <a target="_blank"> for example (the opener does not have a handle to the new window but the openee
        has access to its opener).

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::openedViaWindowOpenWithOpener const):
        (API::Navigation::setOpenedViaWindowOpenWithOpener):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-09-13  Dean Jackson  <dino@grorg.org>

        Generate warnings for Preferences files
        https://bugs.webkit.org/show_bug.cgi?id=189573

        Reviewed by Sam Weinig.

        Generate the "DO NOT EDIT" warnings, rather than have
        them in the template (which was confusing).

        While here, simplify some of the templating generation code
        to avoid duplication.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:

2018-09-13  Keith Rollin  <krollin@apple.com>

        WebPageProxy::reportPageLoadResult can crash on some code paths
        https://bugs.webkit.org/show_bug.cgi?id=189568

        Reviewed by Chris Dumez.

        WebPageProxy::reportPageLoadResult (which is called from
        WebPageProxy::didFinishLoadForFrame) can sometimes crash when
        accessing m_pageLoadStart (a std::optional) in its unloaded state.
        Normally, m_pageLoadStart is initialized in
        WebPageProxy::didStartProvisionalLoadForFrame, which one would expect
        would be called before WebPageProxy::didFinishLoadForFrame. But that
        turns out to not always be the case. It's not apparent under what
        conditions didStartProvisionalLoadForFrame will not be called, but
        it's happening in the wild, leading to crashes now that std::optional
        asserts in release builds on bad accesses (see
        https://bugs.webkit.org/show_bug.cgi?id=189568).

        Fix this by checking m_pageLoadState on entry to reportPageLoadResult.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::reportPageLoadResult):

2018-09-13  Chris Dumez  <cdumez@apple.com>

        ProcessSwap.BackWithoutSuspendedPage API test hits assertion under WebPageProxy::didCreateMainFrame()
        https://bugs.webkit.org/show_bug.cgi?id=189599

        Reviewed by Geoffrey Garen.

        The code in WebPageProxy::reattachToWebProcess() was re-initializing m_mainFrame unconditionally in case
        of a HistoryNavigation. The reason we need to initialize m_mainFrame in reattachToWebProcess() is if the
        process we're reattaching to already has a WebPage (with a main frame), in which case
        WebPageProxy::didCreateMainFrame() would not get called to initialize WebPageProxy::m_mainFrame.

        The process we're reattaching to can be in such a state only if it comes from a SuspendedPageProxy (we
        detached the WebProcessProxy from the WebPageProxy but kept the WebPage in the "suspended" WebProcess).
        It is true that we're only reattaching to a SuspendedPageProxy's process in the event of history
        navigations. However, it is not true that all history navigations will use a SuspendedPageProxy's process.
        For example, no SuspendedPageProxy may be available for the history navigation because the history
        was restored to a new view from disk, or because the WebBackForwardListItem no longer has a
        SuspendedPageProxy (we currently only keep a single SuspendedPageProxy for the last HistoryItem).

        Therefore, unconditionally initializating m_mainFrame in reattachToWebProcess() for history navigations
        is incorrect and we should instead check if we're reattaching to a SuspendedPage's process.

        Change is covered by ProcessSwap.BackWithoutSuspendedPage API test which is no longer crashes and
        existing Back/Forward PSON API tests which are still passing.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Add release logging to help debug PSON issues
        https://bugs.webkit.org/show_bug.cgi?id=189562

        Reviewed by Ryosuke Niwa.

        Add release logging to help debug issues related to process swap on navigation.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Add null check for drawing area in WebPage::didCompletePageTransition() after r235867
        https://bugs.webkit.org/show_bug.cgi?id=189587

        Reviewed by Geoffrey Garen.

        Add null check for drawing area in WebPage::didCompletePageTransition() after r235867
        as this is causing crashes on the bots.

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

2018-09-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235953.

        Caused layout test crashes under GuardMalloc.

        Reverted changeset:

        "Make GraphicsLayers ref-counted, so their tree can persist
        when disconnected from RenderLayerBackings"
        https://bugs.webkit.org/show_bug.cgi?id=189521
        https://trac.webkit.org/changeset/235953

2018-09-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Allow to run script dialogs asynchronously in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189544

        Reviewed by Michael Catanzaro.

        Script dialogs are sync in the WebProcess, but we don't need to block the UI process while they are running. Our
        current API doesn't allow it, because it always expects the dialog to be closed in the signal handler. API
        changes are backwards compatible.

        * UIProcess/API/glib/WebKitScriptDialog.cpp:
        (webkitScriptDialogCreate): Added to heap allocate a WebKitScriptDialog.
        (webkitScriptDialogIsRunning): Common implementation here, a script dialog is considered to be running if it has
        a competion handler pending.
        (webkit_script_dialog_ref): WebKitScriptDialog is now refcounted.
        (webkit_script_dialog_unref): Ditto.
        (webkit_script_dialog_close): New method to notify that we are done with the dialog.
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h:
        (_WebKitScriptDialog::_WebKitScriptDialog): Use a single constructor and keep the completion handler.
        * UIProcess/API/glib/WebKitUIClient.cpp: Do not call the completion handler, pass it to the web view.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewDispose): Close the current script dialog if there's any.
        (webkit_web_view_class_init): Document how to handle dialogs asynchronously.
        (webkitWebViewRunJavaScriptAlert): Do not stack allocate the WebKitScriptDialog, create it with
        webkitScriptDialogCreate() passing the completion handler.
        (webkitWebViewRunJavaScriptConfirm): Ditto.
        (webkitWebViewRunJavaScriptPrompt): Ditto.
        (webkitWebViewRunJavaScriptBeforeUnloadConfirm): Ditto.
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitScriptDialog.h:
        * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp:
        (scriptDialogResponseCallback): Hnadle the response callback.
        (webkitScriptDialogRun): Do not use gtk_dialog_run(), connect to response signal and show the dialogs instead.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp:

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

        Update availability annotations to match the macOS and iOS SDKs in the Xcode 10 GM seed
        https://bugs.webkit.org/show_bug.cgi?id=189561

        Reviewed by Tim Horton.

        Changed WK_MAC_TBA and WK_IOS_TBA to 10.14 and 12.0, respectively, in all declarations that
        appear in the GM seed SDKs.

        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAutomationDelegate.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/API/Cocoa/_WKInputDelegate.h:
        * UIProcess/API/Cocoa/_WKLinkIconParameters.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:

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

        [Cocoa] Complete support for Paste as Quotation
        https://bugs.webkit.org/show_bug.cgi?id=189504

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]): Handle _pasteAsQuotation:. It’s not included
          in FOR_EACH_WKCONTENTVIEW_ACTION, because it’s declared and implemented in the WKPrivate
          category. If we add more actions in the category, it could make sense to fold them into
          a new FOR_EACH_PRIVATE_WKCONTENTVIEW_ACTION.
        (-[WKWebView targetForAction:withSender:]): Handle _pasteAsQuotation:.
        (-[WKWebView _pasteAsQuotation:]): Send to the WebViewImpl or the WKContentView.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Declared a new _pasteAsQuotation: action.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::selectorExceptionMap): Added a custom mapping from the new selector to the
          PasteAsQuotation command.

        * UIProcess/ios/WKContentViewInteraction.h: Declare methods for the new action.
        * UIProcess/ios/WKContentViewInteraction.mm:
          Forward _pasteAsQuotation: to the WKWebView so that clients get a chance to override its
          behavior.
        (-[WKContentView _pasteAsQuotationForWebView:]): Send the command to the page.

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

        Move IndexedDB to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189415

        Reviewed by Geoffrey Garen.

        We are going to eliminate storage process and move its functionality to network process. 
        The reasons why we want to do this:
        1. Lower resource usage of having an additional process for storage operations, especially
        memory. Single storage process takes about 5MB memory on macOS.
        2. Reduce latency of Service Workers. After enabling Service Workers, we've seen
        regression in app launch. The launch time of storage process is partly attributed to this:
        Service Workers delay page loading until receiving response from storage process.
        3. We choose network process because UI process may have broader access in file system
        that we don't want the storage operations to have.

        This patch is the first piece towards the goal. It mainly moves indexedDB from storage process
        to corresponding components of network process. Moving of Service Worker and stopping to 
        launch storage process will be done in following patches.

        We expect to see the higher cpu and memory usage of network process as it is taking more work,
        but the overall gain in memory and latency after we completely remove storage process should be 
        positive.


        * CMakeLists.txt:
        * DerivedSources.make:

        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        (WebKit::WebIDBConnectionToClient::connectionToClient):
        (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
        (WebKit::WebIDBConnectionToClient::didOpenDatabase):
        (WebKit::WebIDBConnectionToClient::didAbortTransaction):
        (WebKit::WebIDBConnectionToClient::didCommitTransaction):
        (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
        (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
        (WebKit::WebIDBConnectionToClient::didRenameObjectStore):
        (WebKit::WebIDBConnectionToClient::didClearObjectStore):
        (WebKit::WebIDBConnectionToClient::didCreateIndex):
        (WebKit::WebIDBConnectionToClient::didDeleteIndex):
        (WebKit::WebIDBConnectionToClient::didRenameIndex):
        (WebKit::WebIDBConnectionToClient::didPutOrAdd):
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        (WebKit::WebIDBConnectionToClient::didGetRecord):
        (WebKit::WebIDBConnectionToClient::didGetAllRecords):
        (WebKit::WebIDBConnectionToClient::didGetCount):
        (WebKit::WebIDBConnectionToClient::didDeleteRecord):
        (WebKit::WebIDBConnectionToClient::didOpenCursor):
        (WebKit::WebIDBConnectionToClient::didIterateCursor):
        (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::didStartTransaction):
        (WebKit::WebIDBConnectionToClient::didCloseFromServer):
        (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebKit::WebIDBConnectionToClient::didGetAllDatabaseNames):
        (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):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.h.
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):

        Code moved from StorageToWebProcessConnection::didReceiveMessage.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        Network process receives and stores sandbox extension of temporary files for later indexedDB
        use.

        (WebKit::generateIDBConnectionToServerIdentifier):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::ensurePathExists):
        (WebKit::NetworkProcess::postStorageTask):
        (WebKit::NetworkProcess::performNextStorageTask):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile):
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        (WebKit::NetworkProcess::addIndexedDatabaseSession):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):

        Instead of asking UI process to grant sandbox extension to storage process, now network 
        process just asks for sandbox extension fot itself.

        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions):
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::queue):
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::idbServer): Deleted.
        (WebKit::StorageProcess::grantSandboxExtensionsForBlobs): Deleted.
        (WebKit::StorageProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::StorageProcess::accessToTemporaryFileComplete): Deleted.
        (WebKit::StorageProcess::indexedDatabaseOrigins): Deleted.
        (WebKit::StorageProcess::getSandboxExtensionsForBlobFiles): Deleted.
        (WebKit::StorageProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::queue): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::generateIDBConnectionToServerIdentifier): Deleted.
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer): Deleted.
        (WebKit::StorageToWebProcessConnection::removeIDBConnectionToServer): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getSandboxExtensionsForBlobFiles): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingIDBConnectionToServerForIdentifier):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):

        Code moved from WebToStorageProcessConnection::didReceiveMessage.

        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingIDBConnectionToServerForIdentifier): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.

        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        All the other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::~WebInspectorClient):
        (WebKit::WebInspectorClient::showPaintRect):
        (WebKit::WebInspectorClient::animationEndedForLayer):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::createGraphicsLayer):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::updateRootLayers):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2018-09-12  Chris Dumez  <cdumez@apple.com>

        PSON: No process swap on back navigation after URL bar navigation
        https://bugs.webkit.org/show_bug.cgi?id=189557
        <rdar://problem/44353108>

        Reviewed by Alex Christensen.

        Our logic in WebProcessPool::processForNavigationInternal() was wrongly using
        WebBackForwardList::currentItem() as source item of the navigation, instead of
        using Navigation::fromItem(). In case of back navigation, by the time
        processForNavigation() is called, the WebBackForwardList's currentItem has already
        been updated to be the target item, via a Sync IPC from the WebProcess. As a result,
        the source and target items would be the same in the following check:
        ` if (currentItem->itemID().processIdentifier == backForwardListItem->itemID().processIdentifier)`

        This would cause us to reuse the same process incorrectly. Our existing API test coverage
        did not catch this because our target HistoryItem usually has a SuspendedPage and we decide
        to use the SuspendedPage's process a few lines above in WebProcessPool::processForNavigationInternal().

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

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

        Make IPC::SharedBufferDataReference a type that decodes into but does not inherit from IPC::DataReference
        https://bugs.webkit.org/show_bug.cgi?id=189519

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::bufferingTimerFired):
        (WebKit::NetworkResourceLoader::sendBuffer):
        * Platform/IPC/DataReference.cpp:
        (IPC::SharedBufferDataReference::encode const): Deleted.
        * Platform/IPC/DataReference.h:
        (IPC::SharedBufferDataReference::SharedBufferDataReference): Deleted.
        * Platform/IPC/HandleMessage.h:
        * Platform/IPC/SharedBufferDataReference.h: Added.
        (IPC::SharedBufferDataReference::SharedBufferDataReference):
        (IPC::SharedBufferDataReference::encode const):
        * Scripts/webkit/messages.py:
        * Shared/API/APIData.h:
        * StorageProcess/StorageProcess.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::didReceiveData):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache):
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachmentIdentifier):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getContentsAsMHTMLData):
        (WebKit::WebPage::getSelectionAsWebArchiveData):
        (WebKit::WebPage::getMainResourceDataOfFrame):
        (WebKit::WebPage::getResourceDataFromFrame):
        (WebKit::WebPage::getWebArchiveOfFrame):
        (WebKit::WebPage::drawPagesToPDF):
        * WebProcess/WebPage/WebPage.messages.in:

2018-09-11  Dean Jackson  <dino@apple.com>

        Header parsing for experimental and internal debug features
        https://bugs.webkit.org/show_bug.cgi?id=189486
        <rdar://problem/44320618>

        Reviewed by Tim Horton.

        Provide key-based (string) access to experimental and internal features.

        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetExperimentalFeatureForKey):
        (WKPreferencesResetAllInternalDebugFeatures):
        (WKPreferencesSetInternalDebugFeatureForKey):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebPreferences.h:

2018-09-10  Matt Rajca  <mrajca@apple.com>

        Expose a few WebPlaybackControlsManager-driven PIP APIs to clients
        https://bugs.webkit.org/show_bug.cgi?id=189478
        <rdar://problem/44312650>

        Reviewed by Eric Carlson.

        This patch exposes APIs necessary to toggle PIP and query its status from clients of WKWebView.
        The existing PIP test has been updated to use the new APIs instead of simulating mouse clicks.
        I also increased the size of the video element in the test page so it gets picked up by the
        main content heuristics.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateMediaPlaybackControlsManager]): Create a media playback controls manager if necessary.
        (-[WKWebView _isPictureInPictureActive]): Return true if the "active" media element is in PIP.
        (-[WKWebView _togglePictureInPicture]): Toggle PIP on the "active" media element.
        (-[WKWebView _canTogglePictureInPicture]): Renamed from...
        (-[WKWebView _canTogglePictureInPictureForTesting]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::isPictureInPictureActive): Return true if the "active" media element is in PIP.
        (WebKit::WebViewImpl::togglePictureInPicture): Toggle PIP on the "active" media element.
        (WebKit::WebViewImpl::updateMediaPlaybackControlsManager): Let clients create a playback
         controls manager even when there is no Touch Bar present.
        (WebKit::WebViewImpl::updateMediaTouchBar): Extract some code into a helper method.
        (WebKit::WebViewImpl::canTogglePictureInPicture): Renamed from...
        (WebKit::WebViewImpl::canTogglePictureInPictureForTesting):

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

        [Win][Clang] error: non-constant-expression cannot be narrowed from type 'int' to 'SHORT'
        https://bugs.webkit.org/show_bug.cgi?id=189542

        Reviewed by Alex Christensen.

        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage): Narrowed initialWindowWidth and initialWindowHeight by using static_cast.

2018-09-12  Chris Dumez  <cdumez@apple.com>

        Clean up SuspendedPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=189517

        Reviewed by Alex Christensen.

        Clean up SuspendedPageProxy:
        1. SuspendedPageProxy does not need to be RefCounted. It is even dangerous given that WebPageProxy
           owns the SuspendedPageProxy and SuspendedPageProxy has a WebPageProxy& data member. We definitely
           do not want it to outlive its WebPageProxy.
        2. The SuspendedPageProxy destructor does not need to be virtual.
        3. Have WebBackForwardListItem keep a WeakPtr<SuspendedPageProxy> instead of a SuspendedPageProxy*.
           This is safer and avoid having to explicitly clear the pointer.
        4. m_finishedSuspending data member does not need a getter and is only needed if !LOG_DISABLED.

        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::suspendedPage const):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::webProcessDidClose):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::process const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maybeCreateSuspendedPage):
        (WebKit::WebPageProxy::reattachToWebProcess):
        * UIProcess/WebPageProxy.h:

2018-09-12  Guillaume Emont  <guijemont@igalia.com>

        Add IGNORE_WARNING_.* macros
        https://bugs.webkit.org/show_bug.cgi?id=188996

        Reviewed by Michael Catanzaro.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::statelessCookieStorage):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformSyncAllCookies):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::beginModal):
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::tryLoad):
        * Shared/ios/ChildProcessIOS.mm:
        (WebKit::ChildProcess::initializeSandbox):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::compileAndApplySandboxSlowCase):
        * Shared/mac/ColorSpaceData.mm:
        (WebKit::ColorSpaceData::decode):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::sandboxExtensionForType):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _web_superAccessibilityAttributeValue:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewRunAsModal):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _web_superAccessibilityAttributeValue:]):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
        (-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKTextListTouchBarViewController initWithWebViewImpl:]):
        (WebKit::WebViewImpl::updateWindowAndViewFrames):
        (WebKit::WebViewImpl::sendDragEndToPage):
        (WebKit::WebViewImpl::startDrag):
        (WebKit::WebViewImpl::characterIndexForPoint):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::getPluginProcessSerialNumber):
        (WebKit::PluginProcessProxy::makePluginProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::makeUIProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::exitFullscreen):
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/ios/WKLegacyPDFView.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        (-[WKPDFPageNumberIndicator _makeRoundedCorners]):
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _presentPopoverWithContentViewController:animated:]):
        * UIProcess/ios/forms/WKFormColorControl.mm:
        (-[WKColorPopover initWithView:]):
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKDateTimePopover initWithView:datePickerMode:]):
        * UIProcess/ios/forms/WKFormPopover.h:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover initWithView:hasGroups:]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController enterFullScreen:]):
        (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
        (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
        (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]):
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView _setAutodisplay:]):
        (-[WKPrintingView _drawPDFDocument:page:atPoint:]):
        (-[WKPrintingView _drawPreview:]):
        (-[WKPrintingView drawRect:]):
        * UIProcess/mac/WKTextInputWindowController.mm:
        (-[WKTextInputPanel _interpretKeyEvent:usingLegacyCocoaTextInput:string:]):
        (-[WKTextInputPanel _hasMarkedText]):
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::initializeEventRecord):
        (WebKit::NetscapePlugin::sendComplexTextInput):
        (WebKit::makeCGLPresentLayerOpaque):
        (WebKit::NetscapePlugin::nullEventTimerFired):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]):
        (-[WKPDFLayerControllerDelegate writeItemsToPasteboard:withTypes:]):
        (WebKit::PDFPlugin::handleEditingCommand):
        (WebKit::PDFPlugin::setActiveAnnotation):
        (WebKit:: const):
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
        (WebKit::PDFPluginTextAnnotation::createAnnotationElement):
        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertImageToBitmap):
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::drawPDFPage):

2018-09-11  Olivia Barnett  <obarnett@apple.com>

        Implement the Web Share API for mac
        https://bugs.webkit.org/show_bug.cgi?id=189443

        Reviewed by Tim Horton.

        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView shareSheetDidDismiss:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView shareSheetDidDismiss:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showShareSheet):
        (WebKit::WebViewImpl::shareSheetDidDismiss):
        Implemented function for WKShareSheetDelegate.

        * UIProcess/Cocoa/WKShareSheet.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet initWithView:initWithView:]):
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet _cancel]):
        (-[WKShareSheet dismiss]):
        (-[WKShareSheet _dismissDisplayAnimated:]):
        (-[WKShareSheet invokeShareSheetWithResolution:]):
        (-[WKShareSheet initWithView:]): Deleted.
        Added mac platform checks and share sheet functionality.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showShareSheet):
        Allows macos to invoke the system share sheet.

2018-09-07  Dean Jackson  <dino@apple.com>

        Add and expose Internal features from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189442
        <rdar://problem/44243404>

        Reviewed by Simon Fraser.

        Experimental features have become a mess. People are using them for
        anything that they want to be easily toggled from a host app (e.g.
        Safari), which means the user-facing menu has become large and
        confusing.

        Introduce the idea of Internal features, that will be exposed in a way
        that end-users are not expected to ever see (unless they really want
        to).

        * CMakeLists.txt: Add new files.
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

        * DerivedSources.make: Add new generated files.
        * Scripts/GeneratePreferences.rb: Generate the preferences stuff for Internal Debug features.
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb: Added.

        * Shared/API/APIObject.h: New API object for InternalDebugFeature.
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):

        * Shared/WebPreferences.yaml: Change some of the existing experimental features to "internal".

        * UIProcess/API/APIInternalDebugFeature.cpp: New API type - just like APIExperimentalFeature.
        (API::InternalDebugFeature::create):
        (API::InternalDebugFeature::InternalDebugFeature):
        (API::InternalDebugFeature::~InternalDebugFeature):
        * UIProcess/API/APIInternalDebugFeature.h:
        * UIProcess/API/C/WKAPICast.h:

        * UIProcess/API/Cocoa/WKPreferences.mm: Change the naming of the experimental feature API so that it
        won't clash with internal debug features. We can remove the old API once Safari has adopted.
        (+[WKPreferences _internalDebugFeatures]):
        (-[WKPreferences _isEnabledForInternalDebugFeature:]):
        (-[WKPreferences _setEnabled:forInternalDebugFeature:]):
        (-[WKPreferences _isEnabledForFeature:]):
        (-[WKPreferences _setEnabled:forFeature:]):
        (-[WKPreferences _isEnabledForExperimentalFeature:]):
        (-[WKPreferences _setEnabled:forExperimentalFeature:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

        * UIProcess/API/Cocoa/_WKInternalDebugFeature.h: New object - same as _WKExperimentalFeature.
        * UIProcess/API/Cocoa/_WKInternalDebugFeature.mm:
        (-[_WKInternalDebugFeature dealloc]):
        (-[_WKInternalDebugFeature description]):
        (-[_WKInternalDebugFeature name]):
        (-[_WKInternalDebugFeature key]):
        (-[_WKInternalDebugFeature details]):
        (-[_WKInternalDebugFeature defaultValue]):
        (-[_WKInternalDebugFeature isHidden]):
        (-[_WKInternalDebugFeature _apiObject]):
        * UIProcess/API/Cocoa/_WKInternalDebugFeatureInternal.h:

        * UIProcess/WebPreferences.cpp: Add support for Internal Debug features.
        (WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):
        (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):
        * UIProcess/WebPreferences.h:

        * UIProcess/WebProcessPool.cpp: Change a comment now that it is an internal feature.
        (WebKit::WebProcessPool::createWebPage):

2018-09-11  Eric Carlson  <eric.carlson@apple.com>

        WebPage::close should clear UserMediaPermissionRequestManager
        https://bugs.webkit.org/show_bug.cgi?id=189369
        <rdar://problem/44196724>

        Reviewed by Youenn Fablet.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close): Clear m_userMediaPermissionRequestManager.

2018-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] [WK2] Support changing foreground colors via color panel
        https://bugs.webkit.org/show_bug.cgi?id=189382
        <rdar://problem/44227311>

        Reviewed by Ryosuke Niwa.

        Adds support for changing font color in a richly editable element in WebKit2 via NSColorPanel. See below for
        more detail, as well as the WebCore ChangeLog.

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

        Implement this selector; AppKit calls into this when changing font color using NSColorPanel.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::changeFontColorFromSender):

        Creates and populates new FontAttributeChanges, with only the foreground color determined by asking the sender
        object for its -color.

        * WebProcess/WebPage/mac/WebPageMac.mm:

        Use the relevant EditAction for the incoming FontAttributeChanges, instead of always specifying
        EditAction::ChangeAttributes.

        (WebKit::WebPage::changeFontAttributes):

2018-09-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Crash under PlatformPopupMenuData::encode when interacting with a select menu that has variable fonts
        https://bugs.webkit.org/show_bug.cgi?id=188008

        Reviewed by Alex Christensen.

        This patch is a follow-up to https://bugs.webkit.org/show_bug.cgi?id=180307.
        Variable fonts have CFDictionaries with non-string keys. We need to support that in our IPC code.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):

2018-09-11  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] API documentation is unclear about how to modify requests before sending them
        https://bugs.webkit.org/show_bug.cgi?id=189505

        Reviewed by Michael Catanzaro.

        Add notes to the API documentation to make explicit where modification
        of WebKitURIRequest instances affects the request data sent over the
        network.

        * UIProcess/API/glib/WebKitNavigationAction.cpp: Clarify that
        modifications to the associated WebKitURIRequest do not affect the
        actual request. Point to WebKitPage::send-request instead.
        * UIProcess/API/glib/WebKitResponsePolicyDecision.cpp: Ditto.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init): Ditto for the description of the
        WebKitWebView::decide-policy signal. Also fix the syntax of example.
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        (webkit_web_page_class_init): Indicate that modifications to the
        WebKitURIRequest will change the actual network request data.

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, attempt to fix Apple builds after r235903
        https://bugs.webkit.org/show_bug.cgi?id=188872

        If it really needs to be inlined, it will need to move to the header....

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::pageClient const):

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix build after r235903
        https://bugs.webkit.org/show_bug.cgi?id=188872

        This broke all ports except GTK. Need to add a missing header.

        * UIProcess/PageClient.h:

2018-09-11  Pablo Saavedra  <psaavedra@igalia.com>

        Add missing #if ENABLE(VIDEO) WebProcess/FullScreen/WebFullScreenManager.cpp
        https://bugs.webkit.org/show_bug.cgi?id=189506

        Reviewed by Tim Horton.

        m_pipStandbyElement is only defined in
        WebKit/WebProcess/FullScreen/WebFullScreenManager.h
        only when ENABLE(VIDEO) (see
        https://bugs.webkit.org/show_bug.cgi?id=181338)

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::setPIPStandbyElement):

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        WebPageProxy should hold a WeakPtr to its PageClient
        https://bugs.webkit.org/show_bug.cgi?id=188872

        Reviewed by Ryosuke Niwa.

        This ensures the PageClient reference is always valid when used.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::setDragCaretRect):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::PageClientProtector::PageClientProtector):
        (WebKit::PageClientProtector::~PageClientProtector):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::pageClient const):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
        (WebKit::WebPageProxy::setViewNeedsDisplay):
        (WebKit::WebPageProxy::requestScroll):
        (WebKit::WebPageProxy::viewScrollPosition const):
        (WebKit::WebPageProxy::updateActivityState):
        (WebKit::WebPageProxy::activityStateDidChange):
        (WebKit::WebPageProxy::viewDidEnterWindow):
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::layerHostingModeDidChange):
        (WebKit::WebPageProxy::viewSize const):
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::didPerformDragOperation):
        (WebKit::WebPageProxy::processNextQueuedMouseEvent):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::handleTouchEventSynchronously):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::preferencesDidChange):
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::didStartProgress):
        (WebKit::WebPageProxy::didChangeProgress):
        (WebKit::WebPageProxy::didFinishProgress):
        (WebKit::WebPageProxy::didDestroyNavigation):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::frameDidBecomeFrameSet):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        (WebKit::WebPageProxy::closePage):
        (WebKit::WebPageProxy::setWindowFrame):
        (WebKit::WebPageProxy::getWindowFrame):
        (WebKit::WebPageProxy::getWindowFrameWithCallback):
        (WebKit::WebPageProxy::screenToRootView):
        (WebKit::WebPageProxy::rootViewToScreen):
        (WebKit::WebPageProxy::syncRootViewToScreen):
        (WebKit::WebPageProxy::accessibilityScreenToRootView):
        (WebKit::WebPageProxy::rootViewToAccessibilityScreen):
        (WebKit::WebPageProxy::didChangeViewportProperties):
        (WebKit::WebPageProxy::runOpenPanel):
        (WebKit::WebPageProxy::showShareSheet):
        (WebKit::WebPageProxy::handleDownloadRequest):
        (WebKit::WebPageProxy::didChangeContentSize):
        (WebKit::WebPageProxy::showColorPicker):
        (WebKit::WebPageProxy::showDataListSuggestions):
        (WebKit::WebPageProxy::compositionWasCanceled):
        (WebKit::WebPageProxy::registerInsertionUndoGrouping):
        (WebKit::WebPageProxy::canUndoRedo):
        (WebKit::WebPageProxy::executeUndoRedo):
        (WebKit::WebPageProxy::clearAllEditCommands):
        (WebKit::WebPageProxy::setTextIndicator):
        (WebKit::WebPageProxy::clearTextIndicator):
        (WebKit::WebPageProxy::setTextIndicatorAnimationProgress):
        (WebKit::WebPageProxy::showPopupMenu):
        (WebKit::WebPageProxy::showContextMenu):
        (WebKit::WebPageProxy::registerEditCommand):
        (WebKit::WebPageProxy::canUndo):
        (WebKit::WebPageProxy::canRedo):
        (WebKit::WebPageProxy::setToolTip):
        (WebKit::WebPageProxy::setCursor):
        (WebKit::WebPageProxy::setCursorHiddenUntilMouseMoves):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        (WebKit::WebPageProxy::exitAcceleratedCompositingMode):
        (WebKit::WebPageProxy::updateAcceleratedCompositingMode):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::recommendedScrollbarStyleDidChange):
        (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
        (WebKit::WebPageProxy::didFinishLoadingDataForCustomContentProvider):
        (WebKit::WebPageProxy::updateBackingStoreDiscardableState):
        (WebKit::WebPageProxy::showCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanelSoon):
        (WebKit::WebPageProxy::recordAutocorrectionResponse):
        (WebKit::WebPageProxy::useDarkAppearance const):
        (WebKit::WebPageProxy::showDictationAlternativeUI):
        (WebKit::WebPageProxy::removeDictationAlternatives):
        (WebKit::WebPageProxy::dictationAlternatives):
        (WebKit::WebPageProxy::setEditableElementIsFocused):
        (WebKit::WebPageProxy::takeViewSnapshot):
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::navigationGestureDidBegin):
        (WebKit::WebPageProxy::navigationGestureWillEnd):
        (WebKit::WebPageProxy::navigationGestureDidEnd):
        (WebKit::WebPageProxy::willRecordNavigationSnapshot):
        (WebKit::WebPageProxy::navigationGestureSnapshotWasRemoved):
        (WebKit::WebPageProxy::isPlayingMediaDidChange):
        (WebKit::WebPageProxy::videoControlsManagerDidChange):
        (WebKit::WebPageProxy::handleControlledElementIDResponse const):
        (WebKit::WebPageProxy::didPerformImmediateActionHitTest):
        (WebKit::WebPageProxy::immediateActionAnimationControllerForHitTestResult):
        (WebKit::WebPageProxy::didHandleAcceptedCandidate):
        (WebKit::WebPageProxy::addPlaybackTargetPickerClient):
        (WebKit::WebPageProxy::removePlaybackTargetPickerClient):
        (WebKit::WebPageProxy::showPlaybackTargetPicker):
        (WebKit::WebPageProxy::playbackTargetPickerClientStateDidChange):
        (WebKit::WebPageProxy::setMockMediaPlaybackTargetPickerEnabled):
        (WebKit::WebPageProxy::setMockMediaPlaybackTargetPickerState):
        (WebKit::WebPageProxy::didChangeBackgroundColor):
        (WebKit::WebPageProxy::didRestoreScrollPosition):
        (WebKit::WebPageProxy::userInterfaceLayoutDirection):
        (WebKit::WebPageProxy::didInsertAttachment):
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gstreamer/WebPageProxyGStreamer.cpp:
        (WebKit::WebPageProxy::requestInstallMissingMediaPlugins):
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::viewWidget):
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computeCustomFixedPositionRect const):
        (WebKit::WebPageProxy::overflowScrollViewWillStartPanGesture):
        (WebKit::WebPageProxy::overflowScrollViewDidScroll):
        (WebKit::WebPageProxy::overflowScrollWillStartScroll):
        (WebKit::WebPageProxy::overflowScrollDidEndScroll):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::layerTreeCommitComplete):
        (WebKit::WebPageProxy::didReceivePositionInformation):
        (WebKit::WebPageProxy::saveImageToLibrary):
        (WebKit::WebPageProxy::interpretKeyEvent):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::couldNotRestorePageState):
        (WebKit::WebPageProxy::restorePageState):
        (WebKit::WebPageProxy::restorePageCenterAndScale):
        (WebKit::WebPageProxy::didGetTapHighlightGeometries):
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::stopAssistingNode):
        (WebKit::WebPageProxy::showInspectorHighlight):
        (WebKit::WebPageProxy::hideInspectorHighlight):
        (WebKit::WebPageProxy::showInspectorIndication):
        (WebKit::WebPageProxy::hideInspectorIndication):
        (WebKit::WebPageProxy::enableInspectorNodeSearch):
        (WebKit::WebPageProxy::disableInspectorNodeSearch):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        (WebKit::WebPageProxy::showPlaybackTargetPicker):
        (WebKit::WebPageProxy::commitPotentialTapFailed):
        (WebKit::WebPageProxy::didNotHandleTapAsClick):
        (WebKit::WebPageProxy::didCompleteSyntheticClick):
        (WebKit::WebPageProxy::disableDoubleTapGesturesDuringTapIfNecessary):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::showValidationMessage):
        (WebKit::WebPageProxy::didHandleStartDataInteractionRequest):
        (WebKit::WebPageProxy::didHandleAdditionalDragItemsRequest):
        (WebKit::WebPageProxy::didConcludeEditDataInteraction):
        (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):
        (WebKit::WebPageProxy::insertDictatedTextAsync):
        (WebKit::WebPageProxy::setPromisedDataForImage):
        (WebKit::WebPageProxy::didPerformDictionaryLookup):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::makeFirstResponder):
        (WebKit::WebPageProxy::assistiveTechnologyMakeFirstResponder):
        (WebKit::WebPageProxy::colorSpace):
        (WebKit::WebPageProxy::pluginFocusOrWindowFocusChanged):
        (WebKit::WebPageProxy::setPluginComplexTextInputState):
        (WebKit::WebPageProxy::executeSavedCommandBySelector):
        (WebKit::WebPageProxy::intrinsicContentSizeDidChange):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        (WebKit::WebPageProxy::acceleratedCompositingRootLayer const):
        (WebKit::WebPageProxy::showPDFContextMenu):
        (WebKit::WebPageProxy::showTelephoneNumberMenu):
        (WebKit::WebPageProxy::boundsOfLayerInLayerBackedWindowCoordinates const):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::startWindowDrag):
        (WebKit::WebPageProxy::platformWindow):
        (WebKit::WebPageProxy::rootViewToWindow):
        (WebKit::WebPageProxy::showValidationMessage):
        (WebKit::WebPageProxy::inspectorAttachmentView):
        (WebKit::WebPageProxy::remoteObjectRegistry):
        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::viewWidget):
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::viewBackend):

2018-09-11  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): "Swipe back" snapshot is missing when navigating back cross-process
        https://bugs.webkit.org/show_bug.cgi?id=189482
        <rdar://problem/44317222>

        Reviewed by Geoffrey Garen.

        The issue was that when we swap process on navigation, we:
        1. Call processDidTerminate() which calls resetState() and clears the displayed content
        2. Reattach the WebPageProxy to a new WebProcess
        3. Trigger the navigation
        4. Take the navigation snapshot

        When the navigation snapshot occurs at step 4, the view is already blank in the case of
        process swap. To avoid the issue, we take the navigation snapshot earlier, before calling
        processDidTerminate() and we suppress the next navigation snapshot as it would be blank.

        At some point, we will likely want to display the previous' WebProcess content longer,
        until the new WebProcess has something interesting to display. Once this is implemented,
        we'll likely be able to drop the early snapshotting logic.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::recordAutomaticNavigationSnapshot):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::restoreFromSessionState):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::suppressNextAutomaticNavigationSnapshot):

2018-09-11  Woodrow Wang  <woodrow_wang@apple.com>

        Add Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=187773
        <rdar://problem/44155162>

        Reviewed by Brent Fulgham.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

== Rolled over to ChangeLog-2018-09-11 ==