ChangeLog   [plain text]


2018-10-29  Kocsen Chung  <kocsen_chung@apple.com>

        Apply patch. rdar://problem/45363479

    2018-10-29  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-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r237060. rdar://problem/45435468

    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.
    
    Source/WebCore:
    
    Expose Cache Storage API when Service Worker API is exposed.
    This is used for API tests.
    
    * dom/ScriptExecutionContext.h: Make hasServiceWorkerScheme
    available outside SERVICE_WORKER compilation flag since used by DOMWindowCaches.
    * dom/ScriptExecutionContext.cpp: Ditto.
    * Modules/cache/DOMWindowCaches.idl:
    
    Source/WebKit:
    
    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):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
    Add test to ensure that CacheStorage use the default website data store parameters.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237060 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-28  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/45523764

    2018-10-28  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 Alex Christensen.

            * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
            (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
                Sets the _overrideSessionCookieAcceptPolicy property to YES
                If the application is Safari.

2018-10-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r237135. rdar://problem/45562440

    [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.
    
    Source/WebKit:
    
    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.
    
    Tools:
    
    * DumpRenderTree/ios/UIScriptControllerIOS.mm:
    (WTR::UIScriptController::isShowingKeyboard const):
    
    Add a new UIScriptController method that returns whether the keyboard is shown. See `ui-helper.js` for more
    details.
    
    * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
    * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
    (WTR::UIScriptController::isShowingKeyboard const):
    * TestRunnerShared/UIScriptContext/UIScriptController.h:
    * WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
    * WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
    
    Also rename the `isShowingKeyboard` Objective-C property to the more canonical `showingKeyboard`, with
    `isShowingKeyboard` as the getter method.
    
    (-[TestRunnerWKWebView _invokeShowKeyboardCallbackIfNecessary]):
    (-[TestRunnerWKWebView _invokeHideKeyboardCallbackIfNecessary]):
    * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
    (WTR::UIScriptController::isShowingKeyboard const):
    
    LayoutTests:
    
    Add a new layout test to check that the user can make a selection by long pressing after the keyboard is
    dismissed due to changing the focused element.
    
    * editing/selection/ios/select-text-after-changing-focus-expected.txt: Added.
    * editing/selection/ios/select-text-after-changing-focus.html: Added.
    * resources/ui-helper.js:
    
    Also tweak the behavior of `UIHelper.waitForKeyboardToHide()`, so that it resolves immediately if the keyboard
    is not shown. This allows us to ensure that tests which use `UIHelper.waitForKeyboardToHide()` are robust in the
    case where they wait for another action to complete (e.g. a simulated tap) prior to registering a keyboard
    hiding callback.
    
    (window.UIHelper.waitForKeyboardToHide.return.new.Promise):
    (window.UIHelper.waitForKeyboardToHide):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237135 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-24  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236227. rdar://problem/45491949

    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):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236227 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-10-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r237238. rdar://problem/45363879

    [Apple Pay] Increment the API version to 5
    https://bugs.webkit.org/show_bug.cgi?id=190686
    <rdar://problem/45348523>
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    Test: http/tests/ssl/applepay/ApplePaySessionV5.html
    
    * testing/MockPaymentCoordinator.cpp:
    (WebCore::MockPaymentCoordinator::supportsVersion):
    
    Source/WebKit:
    
    * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
    (WebKit::WebPaymentCoordinator::supportsVersion):
    
    LayoutTests:
    
    * http/tests/ssl/applepay/ApplePaySessionV5-expected.txt: Added.
    * http/tests/ssl/applepay/ApplePaySessionV5.html: Added.
    * platform/mac-wk2/TestExpectations:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237238 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236578. rdar://problem/45285613

    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.
    
    Source/WebCore:
    
    Test: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html
    
    * loader/ResourceLoadStatistics.cpp:
    (WebCore::ResourceLoadStatistics::decode):
        Corrects legacy statistics for frames and triggers a re-classification.
    
    Source/WebKit:
    
    * 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.
    
    LayoutTests:
    
    * http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-expected.txt: Added.
    * http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html: Added.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236578 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-10-23  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r235674. rdar://problem/45285711

    Cancelled fullscreen exit gesture leaves bad state for next exit request.
    https://bugs.webkit.org/show_bug.cgi?id=189278
    
    Patch by Jeremy Jones <jeremyj@apple.com> on 2018-09-05
    Reviewed by Jer Noble.
    
    * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
    (-[WKFullScreenWindowController _dismissFullscreenViewController]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235674 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-05  Jeremy Jones  <jeremyj@apple.com>

            Cancelled fullscreen exit gesture leaves bad state for next exit request.
            https://bugs.webkit.org/show_bug.cgi?id=189278

            Reviewed by Jer Noble.

            * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
            (-[WKFullScreenWindowController _dismissFullscreenViewController]):

2018-10-21  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235739. rdar://problem/45445194

    WebKit/Platform/IPC/mac/ConnectionMac.mm:222: _dispatch_bug_kevent_vanished
    https://bugs.webkit.org/show_bug.cgi?id=189314
    <rdar://problem/41248286>
    
    Reviewed by Anders Carlsson.
    
    There is a short period in time when m_isServer is true, after open() has been
    called, but before we've receive the InitializeConnection IPC, where m_receiveSource
    has been initialized but m_isConnected is still false. If platformInvalidate() gets
    called during this period of time, we would fail to cancel / release m_receiveSource
    and we would forcefully deallocate m_receivePort, leading to the libdispatch simulated
    crashes.
    
    To address the issue, platformInvalidate() now properly cancels / releases
    m_receiveSource if present, and only deallocates m_receivePort manually if m_receiveSource
    has not been initialized (i.e. open() has not been called yet).
    
    * Platform/IPC/Connection.h:
    * Platform/IPC/mac/ConnectionMac.mm:
    (IPC::Connection::platformInvalidate):
    (IPC::Connection::clearReceiveSource):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235739 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-06  Chris Dumez  <cdumez@apple.com>

            WebKit/Platform/IPC/mac/ConnectionMac.mm:222: _dispatch_bug_kevent_vanished
            https://bugs.webkit.org/show_bug.cgi?id=189314
            <rdar://problem/41248286>

            Reviewed by Anders Carlsson.

            There is a short period in time when m_isServer is true, after open() has been
            called, but before we've receive the InitializeConnection IPC, where m_receiveSource
            has been initialized but m_isConnected is still false. If platformInvalidate() gets
            called during this period of time, we would fail to cancel / release m_receiveSource
            and we would forcefully deallocate m_receivePort, leading to the libdispatch simulated
            crashes.

            To address the issue, platformInvalidate() now properly cancels / releases
            m_receiveSource if present, and only deallocates m_receivePort manually if m_receiveSource
            has not been initialized (i.e. open() has not been called yet).

            * Platform/IPC/Connection.h:
            * Platform/IPC/mac/ConnectionMac.mm:
            (IPC::Connection::platformInvalidate):
            (IPC::Connection::clearReceiveSource):

2018-10-21  Babak Shafiei  <bshafiei@apple.com>

        Apply patch. rdar://problem/45285649

    2018-10-21  Chris Dumez  <cdumez@apple.com>

            Crash under WebKit: WTF::Function<void ()>::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords(WTF::CompletionHandler<void ()>&&)::$_1>::call()
            https://bugs.webkit.org/show_bug.cgi?id=189098
            <rdar://problem/43179891>

            Reviewed by Youenn Fablet.

            The crash was caused by implicitly using |this| on the main thread by accessing member variables, even though
            |this| gets destroyed on the statistics queue. To address the issue, capture what we need on the statistics
            queue, *before* dispatching to the main thread.

            Also stop capturing |this| in the lambdas to make this less error prone.

            * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
            (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
            (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
            (WebKit::ResourceLoadStatisticsMemoryStore::updateCookiePartitioning):

2018-09-28  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r236571. rdar://problem/44852809

    [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:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236571 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-21  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236322. rdar://problem/44660342

    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):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236322 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236291. rdar://problem/44660342

    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):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236291 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-19  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r235752. rdar://problem/44576797

    Don't pause playback when locking screen if video is being displayed on second screen.
    https://bugs.webkit.org/show_bug.cgi?id=189321
    
    Reviewed by Eric Carlson.
    
    Source/WebCore:
    
    Expand the existing behavior when AirPlaying to an external device to playing to a local
    external screen. Don't pause when the screen locks, and don't stop buffering in that mode either.
    
    Add a KVO-observer to the WebAVPlayerController's playingOnSecondScreen property, and pass
    that observed value on to the media element.
    
    * html/HTMLMediaElement.cpp:
    (WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
    (WebCore::HTMLMediaElement::setPlayingOnSecondScreen):
    (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
    (WebCore::HTMLMediaElement::processingUserGestureForMedia const):
    (WebCore::HTMLMediaElement::mediaState const):
    (WebCore::HTMLMediaElement::purgeBufferedDataIfPossible):
    (WebCore::HTMLMediaElement::shouldOverrideBackgroundLoadingRestriction const):
    (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const): Deleted.
    (WebCore::HTMLMediaElement::canPlayToWirelessPlaybackTarget const): Deleted.
    (WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget const): Deleted.
    * html/HTMLMediaElement.h:
    (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const):
    (WebCore::HTMLMediaElement::isPlayingToExternalTarget const):
    * html/MediaElementSession.cpp:
    (WebCore::MediaElementSession::canPlayToWirelessPlaybackTarget const): Deleted.
    * html/MediaElementSession.h:
    * platform/audio/PlatformMediaSession.h:
    (WebCore::PlatformMediaSessionClient::setWirelessPlaybackTarget):
    (WebCore::PlatformMediaSessionClient::isPlayingOnSecondScreen const):
    (WebCore::PlatformMediaSession::canPlayToWirelessPlaybackTarget const): Deleted.
    (WebCore::PlatformMediaSessionClient::canPlayToWirelessPlaybackTarget const): Deleted.
    * platform/cocoa/PlaybackSessionModel.h:
    * platform/cocoa/PlaybackSessionModelMediaElement.h:
    * platform/cocoa/PlaybackSessionModelMediaElement.mm:
    (WebCore::PlaybackSessionModelMediaElement::setPlayingOnSecondScreen):
    * platform/ios/WebAVPlayerController.mm:
    (-[WebAVPlayerController init]):
    (-[WebAVPlayerController dealloc]):
    (-[WebAVPlayerController observeValueForKeyPath:ofObject:change:context:]):
    * platform/ios/WebVideoFullscreenControllerAVKit.mm:
    (VideoFullscreenControllerContext::setPlayingOnSecondScreen):
    
    Source/WebKit:
    
    Pass the "isPlayingOnSecondScreen" value across the process boundary.
    
    * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
    * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
    (WebKit::PlaybackSessionModelContext::setPlayingOnSecondScreen):
    (WebKit::PlaybackSessionManagerProxy::setPlayingOnSecondScreen):
    * WebProcess/cocoa/PlaybackSessionManager.h:
    * WebProcess/cocoa/PlaybackSessionManager.messages.in:
    * WebProcess/cocoa/PlaybackSessionManager.mm:
    (WebKit::PlaybackSessionManager::setPlayingOnSecondScreen):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235752 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-09-06  Jer Noble  <jer.noble@apple.com>

            Don't pause playback when locking screen if video is being displayed on second screen.
            https://bugs.webkit.org/show_bug.cgi?id=189321

            Reviewed by Eric Carlson.

            Pass the "isPlayingOnSecondScreen" value across the process boundary.

            * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
            * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
            (WebKit::PlaybackSessionModelContext::setPlayingOnSecondScreen):
            (WebKit::PlaybackSessionManagerProxy::setPlayingOnSecondScreen):
            * WebProcess/cocoa/PlaybackSessionManager.h:
            * WebProcess/cocoa/PlaybackSessionManager.messages.in:
            * WebProcess/cocoa/PlaybackSessionManager.mm:
            (WebKit::PlaybackSessionManager::setPlayingOnSecondScreen):

2018-09-19  Kocsen Chung  <kocsen_chung@apple.com>

        Cherry-pick r236086. rdar://problem/44576830

    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.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236086 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    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-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235506. rdar://problem/44169670

    [macOS] Whitelist Network process features for VPN
    https://bugs.webkit.org/show_bug.cgi?id=189023
    <rdar://problem/43310000>
    
    Reviewed by Eric Carlson.
    
    CFNetwork needs access to some VPN preference files to configure networking, and
    need to be allowed to communicate with the VPN process from the Network Process
    sandbox.
    
    * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235506 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            [macOS] Whitelist Network process features for VPN
            https://bugs.webkit.org/show_bug.cgi?id=189023
            <rdar://problem/43310000>

            Reviewed by Eric Carlson.

            CFNetwork needs access to some VPN preference files to configure networking, and
            need to be allowed to communicate with the VPN process from the Network Process
            sandbox.

            * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235569. rdar://problem/44169479

    Storage Access API: Maintain access through same-site navigations
    https://bugs.webkit.org/show_bug.cgi?id=188564
    <rdar://problem/43445160>
    
    Reviewed by Alex Christensen.
    
    Source/WebCore:
    
    Tests: http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html
           http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access.html
    
    * dom/Document.h:
        Removed unused member variable m_hasFrameSpecificStorageAccess.
    * loader/DocumentLoader.cpp:
    (WebCore::DocumentLoader::willSendRequest):
    * loader/FrameLoaderClient.h:
    
    Source/WebKit:
    
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
        Now takes the current URL and the new URL as parameters
        and only clears out storage access if the navigation is
        cross-site, i.e. with differing eTLD+1s.
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
    
    LayoutTests:
    
    * http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame-expected.txt:
    * http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html:
        Added both a same-site and a cross-site navigation to the sub frame to test maintained and cleared access.
    * http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-expected.txt: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access-expected.txt.
    * http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access.html.
    * http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access-expected.txt.
    * http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access.html.
    * http/tests/storageAccess/resources/get-cookies.php:
        Support for the new test scenarios.
    * http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html:
        Support for the new test scenarios.
    * platform/mac-wk2/TestExpectations:
        Marked the new and the renamed tests as [ Pass ].
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235569 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-31  John Wilander  <wilander@apple.com>

            Storage Access API: Maintain access through same-site navigations
            https://bugs.webkit.org/show_bug.cgi?id=188564
            <rdar://problem/43445160>

            Reviewed by Alex Christensen.

            * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
            (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
                Now takes the current URL and the new URL as parameters
                and only clears out storage access if the navigation is
                cross-site, i.e. with differing eTLD+1s.
            * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235251. rdar://problem/44209840

    [Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
    https://bugs.webkit.org/show_bug.cgi?id=188829
    
    Reviewed by Tim Horton.
    
    Source/JavaScriptCore:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebCore:
    
    Test: http/tests/ssl/applepay/ApplePaySessionV4.html
    
    * Configurations/FeatureDefines.xcconfig:
    * testing/MockPaymentCoordinator.cpp:
    (WebCore::MockPaymentCoordinator::supportsVersion):
    
    Source/WebCore/PAL:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Source/WebKit:
    
    * Configurations/FeatureDefines.xcconfig:
    * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
    (WebKit::WebPaymentCoordinator::supportsVersion):
    
    Source/WebKitLegacy/mac:
    
    * Configurations/FeatureDefines.xcconfig:
    
    Tools:
    
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
    
    LayoutTests:
    
    * http/tests/ssl/applepay/ApplePaySession-expected.txt:
    * http/tests/ssl/applepay/ApplePaySession.html:
    * http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
    * http/tests/ssl/applepay/ApplePaySessionV3.html:
    * http/tests/ssl/applepay/ApplePaySessionV4-expected.txt: Added.
    * http/tests/ssl/applepay/ApplePaySessionV4.html: Added.
    * platform/mac-wk2/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235251 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-23  Andy Estes  <aestes@apple.com>

            [Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
            https://bugs.webkit.org/show_bug.cgi?id=188829

            Reviewed by Tim Horton.

            * Configurations/FeatureDefines.xcconfig:
            * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
            (WebKit::WebPaymentCoordinator::supportsVersion):

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235209. rdar://problem/44169451

    The Storage Access API prompt should show the eTLD+1s, not the full host names
    https://bugs.webkit.org/show_bug.cgi?id=188830
    <rdar://problem/43380645>
    
    Reviewed by Brent Fulgham.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::requestStorageAccess):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235209 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-22  John Wilander  <wilander@apple.com>

            The Storage Access API prompt should show the eTLD+1s, not the full host names
            https://bugs.webkit.org/show_bug.cgi?id=188830
            <rdar://problem/43380645>

            Reviewed by Brent Fulgham.

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

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235145. rdar://problem/44169453

    Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
    https://bugs.webkit.org/show_bug.cgi?id=188783
    <rdar://problem/43559215>
    
    Reviewed by Alex Christensen.
    
    * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
    (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
        Now sends the eTLD+1 for the top frame and sub frame.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235145 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-21  John Wilander  <wilander@apple.com>

            Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
            https://bugs.webkit.org/show_bug.cgi?id=188783
            <rdar://problem/43559215>

            Reviewed by Alex Christensen.

            * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
            (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
                Now sends the eTLD+1 for the top frame and sub frame.

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234719. rdar://problem/44169456

    Yet more crashes in MobileSafari under -[WKFormInputSession setSuggestions:]
    https://bugs.webkit.org/show_bug.cgi?id=188427
    <rdar://problem/43064672>
    
    Reviewed by Wenson Hsieh.
    
    Speculatively fix more crashes seen under setSuggestions.
    
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKFormInputSession isValid]):
    (-[WKFormInputSession setSuggestions:]):
    (-[WKFormInputSession invalidate]):
    Belt-and-suspenders fix: use WeakObjCPtr for WKFormInputSession's WKContentView reference.
    
    (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
    Invalidate the WKFormInputSession before replacing it; we theorize that
    there is a path in which we get here without having previously called stopAssistingNode.
    Most of the code is OK with this, but this leaves WKFormInputSession
    with a raw reference to WKContentView which can later become stale.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234719 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-08  Tim Horton  <timothy_horton@apple.com>

            Yet more crashes in MobileSafari under -[WKFormInputSession setSuggestions:]
            https://bugs.webkit.org/show_bug.cgi?id=188427
            <rdar://problem/43064672>

            Reviewed by Wenson Hsieh.

            Speculatively fix more crashes seen under setSuggestions.

            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKFormInputSession isValid]):
            (-[WKFormInputSession setSuggestions:]):
            (-[WKFormInputSession invalidate]):
            Belt-and-suspenders fix: use WeakObjCPtr for WKFormInputSession's WKContentView reference.

            (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
            Invalidate the WKFormInputSession before replacing it; we theorize that
            there is a path in which we get here without having previously called stopAssistingNode.
            Most of the code is OK with this, but this leaves WKFormInputSession
            with a raw reference to WKContentView which can later become stale.

2018-09-06  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234504. rdar://problem/44209851

    [iOS] Keyboard becomes unresponsive after pressing delete while pressing down on a character key with accents
    https://bugs.webkit.org/show_bug.cgi?id=188251
    <rdar://problem/37842108>
    
    Reviewed by Tim Horton.
    
    Source/WebKit:
    
    Fixes a bug in key event handling where invoking -handleKeyWebEvent:withCompletionHandler: from within the
    completion callback of a previous call to -handleKeyWebEvent:withCompletionHandler: would cause the completion
    callback to be cleared out prematurely. In some cases (as described in the title of this bug), UIKit exercises
    this codepath and subsequently hangs due to their completion block never getting invoked by WebKit.
    
    Test: KeyboardInputTests.CanHandleKeyEventInCompletionHandler
    
    * UIProcess/ios/WKContentViewInteraction.h:
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
    (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):
    
    Tools:
    
    Adds a new API test to verify that clients (in this case, UIKit) is allowed to invoke
    -handleKeyWebEvent:withCompletionHandler: within the completion block of a prior invocation.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm: Added.
    (TestWebKitAPI::TEST):
    * TestWebKitAPI/Tests/ios/TestInputDelegate.h: Added.
    
    Pull some logic used to force an input session to start out from an existing API test file
    (WKWebViewAutofillTests) and into a separate helper class that is used by both the existing API tests and the
    new keyboard input test.
    
    * TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:
    (-[AutofillTestView initWithFrame:]):
    (TestWebKitAPI::TEST):
    (-[TestInputDelegate init]): Deleted.
    (-[TestInputDelegate _webView:focusShouldStartInputSession:]): Deleted.
    * TestWebKitAPI/ios/UIKitSPI.h:
    
    Add some UIKit SPI utilized by the new API test.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234504 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-02  Wenson Hsieh  <wenson_hsieh@apple.com>

            [iOS] Keyboard becomes unresponsive after pressing delete while pressing down on a character key with accents
            https://bugs.webkit.org/show_bug.cgi?id=188251
            <rdar://problem/37842108>

            Reviewed by Tim Horton.

            Fixes a bug in key event handling where invoking -handleKeyWebEvent:withCompletionHandler: from within the
            completion callback of a previous call to -handleKeyWebEvent:withCompletionHandler: would cause the completion
            callback to be cleared out prematurely. In some cases (as described in the title of this bug), UIKit exercises
            this codepath and subsequently hangs due to their completion block never getting invoked by WebKit.

            Test: KeyboardInputTests.CanHandleKeyEventInCompletionHandler

            * UIProcess/ios/WKContentViewInteraction.h:
            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
            (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r235133. rdar://problem/44144065

    Increment NetworkCache::Storage::lastStableVersion after r233742
    https://bugs.webkit.org/show_bug.cgi?id=188798
    <rdar://43561761>
    
    Reviewed by Geoffrey Garen.
    
    * NetworkProcess/cache/NetworkCacheStorage.h:
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235133 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Increment NetworkCache::Storage::lastStableVersion after r233742
            https://bugs.webkit.org/show_bug.cgi?id=188798
            <rdar://43561761>

            Reviewed by Geoffrey Garen.

            * NetworkProcess/cache/NetworkCacheStorage.h:

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234908. rdar://problem/44144086

    [WinCairo] Unreviewed build fix after r234896.
    
    * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
    (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234908 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-15  Ross Kirsling  <ross.kirsling@sony.com>

            [WinCairo] Unreviewed build fix after r234896.

            * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
            (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234905. rdar://problem/44144059

    Can't share an app on AppStore to WeChat due to a release assert
    https://bugs.webkit.org/show_bug.cgi?id=188621
    <rdar://problem/43343976>
    
    Reviewed by Geoffrey Garen.
    
    Disable the thread safety check when the app is not linked on or after iOS 12 since this release assert
    is getting hit by third party applications on iOS in UI process.
    
    Source/WebCore:
    
    * platform/Timer.cpp:
    (WebCore::shouldSuppressThreadSafetyCheck): Added a SDK check.
    
    Source/WebKit:
    
    * UIProcess/Cocoa/VersionChecks.h:
    (WebKit::SDKVersion::FirstWithMainThreadReleaseAssertionInWebPageProxy): Added. It's iOS 12 or macOS 10.14 Mojave.
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::isMainThreadOrCheckDisabled): Added. Returns true whether when we're in the main thread or if the app
    is not linked on or after iOS 12 or macOS 10.14 Mojave.
    (WebKit::globalPageMap):
    (WebKit::m_isInPrewarmedPool):
    (WebKit::WebProcessProxy::~WebProcessProxy):
    (WebKit::WebProcessProxy::shutDown):
    (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
    (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData):
    (WebKit::WebProcessProxy::didFinishLaunching):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234905 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-15  Ryosuke Niwa  <rniwa@webkit.org>

            Can't share an app on AppStore to WeChat due to a release assert
            https://bugs.webkit.org/show_bug.cgi?id=188621
            <rdar://problem/43343976>

            Reviewed by Geoffrey Garen.

            Disable the thread safety check when the app is not linked on or after iOS 12 since this release assert
            is getting hit by third party applications on iOS in UI process.

            * UIProcess/Cocoa/VersionChecks.h:
            (WebKit::SDKVersion::FirstWithMainThreadReleaseAssertionInWebPageProxy): Added. It's iOS 12 or macOS 10.14 Mojave.
            * UIProcess/WebProcessProxy.cpp:
            (WebKit::isMainThreadOrCheckDisabled): Added. Returns true whether when we're in the main thread or if the app
            is not linked on or after iOS 12 or macOS 10.14 Mojave.
            (WebKit::globalPageMap):
            (WebKit::m_isInPrewarmedPool):
            (WebKit::WebProcessProxy::~WebProcessProxy):
            (WebKit::WebProcessProxy::shutDown):
            (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
            (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData):
            (WebKit::WebProcessProxy::didFinishLaunching):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234896. rdar://problem/44144086

    NetworkCORSPreflightChecker should proceed in case of ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested even though the WebKit app is not implementing the didReceiveAuthenticationChallenge/didReceiveAuthenticationChallengeInFrame callback
    https://bugs.webkit.org/show_bug.cgi?id=188592
    <rdar://problem/43210331>
    
    Reviewed by Youenn Fablet.
    
    Do a canAuthenticateAgainstProtectionSpace check in NetworkCORSPreflightChecker like we do in NetworkLoad.
    Use CompletionHandlers to make the now 3 different canAuthenticateAgainstProtectionSpace checks look the same from the NetworkProcess.
    
    * NetworkProcess/NetworkCORSPreflightChecker.cpp:
    (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
    * NetworkProcess/NetworkCORSPreflightChecker.h:
    * NetworkProcess/NetworkDataTask.h:
    * NetworkProcess/NetworkLoad.cpp:
    (WebKit::NetworkLoad::didReceiveChallenge):
    * NetworkProcess/NetworkLoad.h:
    * NetworkProcess/NetworkProcess.cpp:
    (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace):
    (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
    * NetworkProcess/NetworkProcess.h:
    * NetworkProcess/NetworkResourceLoader.cpp:
    (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync):
    (WebKit::NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace): Deleted.
    * NetworkProcess/NetworkResourceLoader.h:
    * NetworkProcess/PingLoad.cpp:
    (WebKit::PingLoad::didReceiveChallenge):
    * NetworkProcess/PingLoad.h:
    * NetworkProcess/PreconnectTask.cpp:
    (WebKit::PreconnectTask::canAuthenticateAgainstProtectionSpaceAsync):
    (WebKit::PreconnectTask::continueCanAuthenticateAgainstProtectionSpace): Deleted.
    * NetworkProcess/PreconnectTask.h:
    * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
    * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
    (WebKit::NetworkDataTaskCocoa::didReceiveChallenge):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            NetworkCORSPreflightChecker should proceed in case of ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested even though the WebKit app is not implementing the didReceiveAuthenticationChallenge/didReceiveAuthenticationChallengeInFrame callback
            https://bugs.webkit.org/show_bug.cgi?id=188592
            <rdar://problem/43210331>

            Reviewed by Youenn Fablet.

            Do a canAuthenticateAgainstProtectionSpace check in NetworkCORSPreflightChecker like we do in NetworkLoad.
            Use CompletionHandlers to make the now 3 different canAuthenticateAgainstProtectionSpace checks look the same from the NetworkProcess.

            * NetworkProcess/NetworkCORSPreflightChecker.cpp:
            (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
            * NetworkProcess/NetworkCORSPreflightChecker.h:
            * NetworkProcess/NetworkDataTask.h:
            * NetworkProcess/NetworkLoad.cpp:
            (WebKit::NetworkLoad::didReceiveChallenge):
            * NetworkProcess/NetworkLoad.h:
            * NetworkProcess/NetworkProcess.cpp:
            (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace):
            (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
            * NetworkProcess/NetworkProcess.h:
            * NetworkProcess/NetworkResourceLoader.cpp:
            (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync):
            (WebKit::NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace): Deleted.
            * NetworkProcess/NetworkResourceLoader.h:
            * NetworkProcess/PingLoad.cpp:
            (WebKit::PingLoad::didReceiveChallenge):
            * NetworkProcess/PingLoad.h:
            * NetworkProcess/PreconnectTask.cpp:
            (WebKit::PreconnectTask::canAuthenticateAgainstProtectionSpaceAsync):
            (WebKit::PreconnectTask::continueCanAuthenticateAgainstProtectionSpace): Deleted.
            * NetworkProcess/PreconnectTask.h:
            * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
            * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
            (WebKit::NetworkDataTaskCocoa::didReceiveChallenge):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234873. rdar://problem/44144063

    isValidCSSSelector is unsafe to be called from a non-main thread
    https://bugs.webkit.org/show_bug.cgi?id=188581
    <rdar://problem/40517358>
    
    Reviewed by Sam Weinig.
    
    Source/WebCore:
    
    Parsing and determining whether the css selectors are valid is fast enough to do before
    hopping to the background thread for the slow NFA/DFA operations and writing to disk.
    Doing it on the main thread avoids the thread safety issues in the CSSParser's use of strings.
    
    * contentextensions/ContentExtensionCompiler.cpp:
    (WebCore::ContentExtensions::compileRuleList):
    * contentextensions/ContentExtensionCompiler.h:
    * contentextensions/ContentExtensionParser.cpp:
    (WebCore::ContentExtensions::isValidCSSSelector):
    (WebCore::ContentExtensions::loadEncodedRules):
    (WebCore::ContentExtensions::parseRuleList):
    * contentextensions/ContentExtensionParser.h:
    * contentextensions/ContentExtensionRule.cpp:
    (WebCore::ContentExtensions::Trigger::isolatedCopy const):
    (WebCore::ContentExtensions::Action::isolatedCopy const):
    * contentextensions/ContentExtensionRule.h:
    (WebCore::ContentExtensions::Trigger::isEmpty const):
    (WebCore::ContentExtensions::Trigger::operator== const):
    (WebCore::ContentExtensions::Action::Action):
    (WebCore::ContentExtensions::ContentExtensionRule::isolatedCopy const):
    (WebCore::ContentExtensions::ContentExtensionRule::operator== const):
    (WebCore::ContentExtensions::vectorIsolatedCopy):
    
    Source/WebKit:
    
    * UIProcess/API/APIContentRuleListStore.cpp:
    (API::compiledToFile):
    (API::ContentRuleListStore::lookupContentRuleList):
    (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
    (API::ContentRuleListStore::compileContentRuleList):
    (API::ContentRuleListStore::removeContentRuleList):
    (API::ContentRuleListStore::getContentRuleListSource):
    * UIProcess/API/APIContentRuleListStore.h:
    * UIProcess/API/Cocoa/WKContentRuleListStore.mm:
    
    Source/WTF:
    
    * wtf/Vector.h:
    (WTF::minCapacity>::isolatedCopy):
    
    Tools:
    
    * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
    (TestWebKitAPI::InMemoryCompiledContentExtension::create):
    (TestWebKitAPI::checkCompilerError):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            isValidCSSSelector is unsafe to be called from a non-main thread
            https://bugs.webkit.org/show_bug.cgi?id=188581
            <rdar://problem/40517358>

            Reviewed by Sam Weinig.

            * UIProcess/API/APIContentRuleListStore.cpp:
            (API::compiledToFile):
            (API::ContentRuleListStore::lookupContentRuleList):
            (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
            (API::ContentRuleListStore::compileContentRuleList):
            (API::ContentRuleListStore::removeContentRuleList):
            (API::ContentRuleListStore::getContentRuleListSource):
            * UIProcess/API/APIContentRuleListStore.h:
            * UIProcess/API/Cocoa/WKContentRuleListStore.mm:

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234730. rdar://problem/44144081

    REGRESSION (r232083): WKWebView loses first-party cookies on iOS
    https://bugs.webkit.org/show_bug.cgi?id=188443
    <rdar://problem/42991584>
    
    Patch by Sihui Liu <sihui_liu@apple.com> on 2018-08-09
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    Revert the change to set sharedCookieStorage for iOS as it is breaking Kayak.
    
    * NetworkProcess/NetworkProcess.h:
    * NetworkProcess/NetworkProcessCreationParameters.cpp:
    (WebKit::NetworkProcessCreationParameters::encode const):
    (WebKit::NetworkProcessCreationParameters::decode):
    * NetworkProcess/NetworkProcessCreationParameters.h:
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
    * Shared/WebProcessCreationParameters.cpp:
    (WebKit::WebProcessCreationParameters::encode const):
    (WebKit::WebProcessCreationParameters::decode):
    * Shared/WebProcessCreationParameters.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::platformInitializeWebProcess):
    (WebKit::WebProcessPool::platformInitializeNetworkProcess):
    
    Tools:
    
    Skip WebKit.WKHTTPCookieStoreWithoutProcessPool on iOS.
    
    * TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234730 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            REGRESSION (r232083): WKWebView loses first-party cookies on iOS
            https://bugs.webkit.org/show_bug.cgi?id=188443
            <rdar://problem/42991584>

            Reviewed by Chris Dumez.

            Revert the change to set sharedCookieStorage for iOS as it is breaking Kayak.

            * NetworkProcess/NetworkProcess.h:
            * NetworkProcess/NetworkProcessCreationParameters.cpp:
            (WebKit::NetworkProcessCreationParameters::encode const):
            (WebKit::NetworkProcessCreationParameters::decode):
            * NetworkProcess/NetworkProcessCreationParameters.h:
            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
            (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
            * Shared/WebProcessCreationParameters.cpp:
            (WebKit::WebProcessCreationParameters::encode const):
            (WebKit::WebProcessCreationParameters::decode):
            * Shared/WebProcessCreationParameters.h:
            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
            (WebKit::WebProcessPool::platformInitializeWebProcess):
            (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234652. rdar://problem/43009928

    [macOS] Scrollbars are not visible when using 3rd party mouse
    https://bugs.webkit.org/show_bug.cgi?id=188372
    
    Reviewed by Simon Fraser.
    
    Source/WebCore/PAL:
    
    Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
    with a new recommended scroller style.
    
    * pal/spi/mac/NSScrollerImpSPI.h:
    
    Source/WebKit:
    
    The scrollbars are not visible because they are not updated with the recommended scroller style
    when a 3rd party mouse is used. They still have the overlay style, but the system is
    recommending the legacy style in this case. The UI process is currently notifying the WebProcess
    about changes in the scroller style, but the current style is not set in the WebProcess on
    startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
    the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
    is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
    is called to update all NSScrollerImpPairs with the new recommended style. This method was
    previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
    this method. This has been manually tested by using a 3rd party mouse.
    
    * Shared/WebProcessCreationParameters.cpp:
    (WebKit::WebProcessCreationParameters::encode const):
    (WebKit::WebProcessCreationParameters::decode):
    * Shared/WebProcessCreationParameters.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::platformInitializeWebProcess):
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::platformInitializeWebProcess):
    (WebKit::WebProcess::scrollerStylePreferenceChanged):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234652 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            [macOS] Scrollbars are not visible when using 3rd party mouse
            https://bugs.webkit.org/show_bug.cgi?id=188372

            Reviewed by Simon Fraser.

            The scrollbars are not visible because they are not updated with the recommended scroller style
            when a 3rd party mouse is used. They still have the overlay style, but the system is
            recommending the legacy style in this case. The UI process is currently notifying the WebProcess
            about changes in the scroller style, but the current style is not set in the WebProcess on
            startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
            the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
            is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
            is called to update all NSScrollerImpPairs with the new recommended style. This method was
            previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
            this method. This has been manually tested by using a 3rd party mouse.

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

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234626. rdar://problem/43009898

    Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
    https://bugs.webkit.org/show_bug.cgi?id=188355
    <rdar://problem/42546319>
    
    Reviewed by Alex Christensen.
    
    Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
    use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
    to false. This would call:
    1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust
       evaluation & client certification authentication)
    2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise
    
    However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:
    1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
    2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise
    
    Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
    NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
    we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
    preflight.
    
    This fixes CORS-preflighting on some internal sites.
    
    * NetworkProcess/NetworkCORSPreflightChecker.cpp:
    (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
    * NetworkProcess/NetworkCORSPreflightChecker.h:
    * NetworkProcess/NetworkLoadChecker.cpp:
    (WebKit::NetworkLoadChecker::NetworkLoadChecker):
    (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
    * NetworkProcess/NetworkLoadChecker.h:
    * NetworkProcess/NetworkResourceLoader.cpp:
    * NetworkProcess/PingLoad.cpp:
    (WebKit::PingLoad::PingLoad):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234626 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-06  Chris Dumez  <cdumez@apple.com>

            Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
            https://bugs.webkit.org/show_bug.cgi?id=188355
            <rdar://problem/42546319>

            Reviewed by Alex Christensen.

            Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
            use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
            to false. This would call:
            1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust
               evaluation & client certification authentication)
            2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise

            However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:
            1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
            2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise

            Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
            NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
            we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
            preflight.

            This fixes CORS-preflighting on some internal sites.

            * NetworkProcess/NetworkCORSPreflightChecker.cpp:
            (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
            * NetworkProcess/NetworkCORSPreflightChecker.h:
            * NetworkProcess/NetworkLoadChecker.cpp:
            (WebKit::NetworkLoadChecker::NetworkLoadChecker):
            (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
            * NetworkProcess/NetworkLoadChecker.h:
            * NetworkProcess/NetworkResourceLoader.cpp:
            * NetworkProcess/PingLoad.cpp:
            (WebKit::PingLoad::PingLoad):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234611. rdar://problem/43009906

    Fix IPC::Connection leak in StorageManager
    https://bugs.webkit.org/show_bug.cgi?id=188321
    <rdar://problem/42748485>
    
    Reviewed by Alex Christensen.
    
    When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
    gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
    pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
    then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
    StorageArea. We do this so that:
    1. The StorageArea stays alive so that it can be reused later on for the same security origin, on
       the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
    2. Removing the StorageMapID as a listener from the StorageArea is important because
       StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair
       with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).
    
    As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
    check if there is already an existing StorageArea for the given IPC::Connection that is transient
    and is for the same security origin. In this case, we could avoid constructing a new StorageArea
    and we would:
    1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using
       same same StorageArea as value.
    2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.
    
    Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
    (connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
    was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
    from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).
    
    This would cause leaks in the following case:
    1. We construct a StorageArea for (connection1, storageMapId1)
    2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea
       since it has the same SecurityOrigin.
    3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection
       and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1
       on WebContent process side.
    4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find
       it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1
       as a listener of the StorageArea which still exists.
    -> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID>
       with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.
    
    This code should really be refactored to be less leak prone but I have kept the patch minimal for now
    to facilitate cherry-picking.
    
    Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
    opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
    IPC::Connection for this WebContent process would stay alive.
    
    * UIProcess/WebStorage/StorageManager.cpp:
    (WebKit::StorageManager::StorageArea::hasListener const):
    (WebKit::StorageManager::createTransientLocalStorageMap):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234611 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-06  Chris Dumez  <cdumez@apple.com>

            Fix IPC::Connection leak in StorageManager
            https://bugs.webkit.org/show_bug.cgi?id=188321
            <rdar://problem/42748485>

            Reviewed by Alex Christensen.

            When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
            gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
            pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
            then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
            StorageArea. We do this so that:
            1. The StorageArea stays alive so that it can be reused later on for the same security origin, on
               the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
            2. Removing the StorageMapID as a listener from the StorageArea is important because
               StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair
               with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).

            As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
            check if there is already an existing StorageArea for the given IPC::Connection that is transient
            and is for the same security origin. In this case, we could avoid constructing a new StorageArea
            and we would:
            1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using
               same same StorageArea as value.
            2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.

            Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
            (connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
            was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
            from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).

            This would cause leaks in the following case:
            1. We construct a StorageArea for (connection1, storageMapId1)
            2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea
               since it has the same SecurityOrigin.
            3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection
               and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1
               on WebContent process side.
            4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find
               it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1
               as a listener of the StorageArea which still exists.
            -> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID>
               with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.

            This code should really be refactored to be less leak prone but I have kept the patch minimal for now
            to facilitate cherry-picking.

            Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
            opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
            IPC::Connection for this WebContent process would stay alive.

            * UIProcess/WebStorage/StorageManager.cpp:
            (WebKit::StorageManager::StorageArea::hasListener const):
            (WebKit::StorageManager::createTransientLocalStorageMap):

2018-09-05  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234651. rdar://problem/43009912

    [Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
    https://bugs.webkit.org/show_bug.cgi?id=188373
    <rdar://problem/42857398>
    
    Reviewed by Tim Horton.
    
    * NetworkProcess/NetworkProcess.cpp:
    (WebKit::NetworkProcess::actualPrepareToSuspend):
    * NetworkProcess/NetworkProcess.h:
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::platformPrepareToSuspend):
    (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
    * NetworkProcess/curl/NetworkProcessCurl.cpp:
    (WebKit::NetworkProcess::platformPrepareToSuspend):
    * NetworkProcess/soup/NetworkProcessSoup.cpp:
    (WebKit::NetworkProcess::platformPrepareToSuspend):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234651 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-06  Andy Estes  <aestes@apple.com>

            [Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
            https://bugs.webkit.org/show_bug.cgi?id=188373
            <rdar://problem/42857398>

            Reviewed by Tim Horton.

            * NetworkProcess/NetworkProcess.cpp:
            (WebKit::NetworkProcess::actualPrepareToSuspend):
            * NetworkProcess/NetworkProcess.h:
            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
            (WebKit::NetworkProcess::platformPrepareToSuspend):
            (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
            * NetworkProcess/curl/NetworkProcessCurl.cpp:
            (WebKit::NetworkProcess::platformPrepareToSuspend):
            * NetworkProcess/soup/NetworkProcessSoup.cpp:
            (WebKit::NetworkProcess::platformPrepareToSuspend):

2018-08-01  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234486. rdar://problem/42844004

    Make sure cookies get flushed to disk before exiting or suspending the network process
    https://bugs.webkit.org/show_bug.cgi?id=188241
    <rdar://problem/42831831>
    
    Reviewed by Alex Christensen and Geoffrey Garen.
    
    Make sure cookies get flushed to disk before exiting or suspending the network process,
    to make sure they do not get lost.
    
    * NetworkProcess/NetworkProcess.cpp:
    (WebKit::NetworkProcess::didClose):
    (WebKit::NetworkProcess::actualPrepareToSuspend):
    (WebKit::NetworkProcess::platformSyncAllCookies):
    * NetworkProcess/NetworkProcess.h:
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::syncAllCookies):
    (WebKit::NetworkProcess::platformSyncAllCookies):
    * Shared/ChildProcess.cpp:
    (WebKit::ChildProcess::didClose):
    (WebKit::callExitNow):
    (WebKit::callExitSoon):
    (WebKit::ChildProcess::initialize):
    (WebKit::didCloseOnConnectionWorkQueue): Deleted.
    * Shared/ChildProcess.h:
    (WebKit::ChildProcess::shouldCallExitWhenConnectionIsClosed const):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234486 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-08-01  Chris Dumez  <cdumez@apple.com>

            Make sure cookies get flushed to disk before exiting or suspending the network process
            https://bugs.webkit.org/show_bug.cgi?id=188241
            <rdar://problem/42831831>

            Reviewed by Alex Christensen and Geoffrey Garen.

            Make sure cookies get flushed to disk before exiting or suspending the network process,
            to make sure they do not get lost.

            * NetworkProcess/NetworkProcess.cpp:
            (WebKit::NetworkProcess::didClose):
            (WebKit::NetworkProcess::actualPrepareToSuspend):
            (WebKit::NetworkProcess::platformSyncAllCookies):
            * NetworkProcess/NetworkProcess.h:
            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
            (WebKit::NetworkProcess::syncAllCookies):
            (WebKit::NetworkProcess::platformSyncAllCookies):
            * Shared/ChildProcess.cpp:
            (WebKit::ChildProcess::didClose):
            (WebKit::callExitNow):
            (WebKit::callExitSoon):
            (WebKit::ChildProcess::initialize):
            (WebKit::didCloseOnConnectionWorkQueue): Deleted.
            * Shared/ChildProcess.h:
            (WebKit::ChildProcess::shouldCallExitWhenConnectionIsClosed const):

2018-08-01  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234384. rdar://problem/42843520

    REGRESSION (r230817): Terrible performance when selecting text on Stash code review
    https://bugs.webkit.org/show_bug.cgi?id=188144
    <rdar://problem/42642489>
    
    Reviewed by Darin Adler.
    
    After r230817, mouse events were serially dispatched to the web process and handled before the subsequent mouse
    event. However, this resulted in rapid-fire mouse move events filling up the mouse event queue in the case where
    mouse move events were being handled by the web process at a slower rate than the UI process was enqueueing
    them. To mitigate this, r231511 introduced a mechanism for replacing the most recently enqueued mouse move event
    with an incoming mouse move event.
    
    However, when a user with a force-click-enabled trackpad performs a mouse drag, a rapid stream of
    "mouseforcechanged" events is interleaved alongside the stream of "mousemove" events. This renders r231511
    ineffective, since the most recently queued event is often a "mouseforcechanged" event instead of a "mousemove".
    On the stash code review page, this can result in hundreds of mouse events being backed up in the mouse event
    queue, causing perceived slowness when selecting text.
    
    To fix this, we extend the mechanism introduced in r231511, such that it is capable of replacing both
    "mouseforcechanged" and "mousemove" events in the queue. Rather than consider only the most recently queued
    item, we instead find the most recently queued event that matches the type of the incoming event, remove it from
    the queue, and then append the incoming event to the end of the queue. To avoid the risk of removing the only
    "mousemove" or "mouseforcechanged" event in the middle of a mouse down and mouse up, we also bail when searching
    backwards for an event to replace if we come across any event that is neither of these types.
    
    This effectively throttles the rate at which mouseforcechanged or mousemove events are dispatched when a user
    with force-click-enabled hardware clicks and drags the mouse across the page.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::removeOldRedundantEvent):
    (WebKit::WebPageProxy::handleMouseEvent):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234384 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-30  Wenson Hsieh  <wenson_hsieh@apple.com>

            REGRESSION (r230817): Terrible performance when selecting text on Stash code review
            https://bugs.webkit.org/show_bug.cgi?id=188144
            <rdar://problem/42642489>

            Reviewed by Darin Adler.

            After r230817, mouse events were serially dispatched to the web process and handled before the subsequent mouse
            event. However, this resulted in rapid-fire mouse move events filling up the mouse event queue in the case where
            mouse move events were being handled by the web process at a slower rate than the UI process was enqueueing
            them. To mitigate this, r231511 introduced a mechanism for replacing the most recently enqueued mouse move event
            with an incoming mouse move event.

            However, when a user with a force-click-enabled trackpad performs a mouse drag, a rapid stream of
            "mouseforcechanged" events is interleaved alongside the stream of "mousemove" events. This renders r231511
            ineffective, since the most recently queued event is often a "mouseforcechanged" event instead of a "mousemove".
            On the stash code review page, this can result in hundreds of mouse events being backed up in the mouse event
            queue, causing perceived slowness when selecting text.

            To fix this, we extend the mechanism introduced in r231511, such that it is capable of replacing both
            "mouseforcechanged" and "mousemove" events in the queue. Rather than consider only the most recently queued
            item, we instead find the most recently queued event that matches the type of the incoming event, remove it from
            the queue, and then append the incoming event to the end of the queue. To avoid the risk of removing the only
            "mousemove" or "mouseforcechanged" event in the middle of a mouse down and mouse up, we also bail when searching
            backwards for an event to replace if we come across any event that is neither of these types.

            This effectively throttles the rate at which mouseforcechanged or mousemove events are dispatched when a user
            with force-click-enabled hardware clicks and drags the mouse across the page.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::removeOldRedundantEvent):
            (WebKit::WebPageProxy::handleMouseEvent):

2018-07-31  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234447. rdar://problem/42802126

    REGRESSION (r231107): MoviStar+ launches to a blank black screen
    https://bugs.webkit.org/show_bug.cgi?id=188139
    
    Reviewed by Brent Fulgham.
    
    Source/WebCore:
    
    For this app, revert behavior to how it was before r231107 with a linked-on-or-before check.
    r231107 increased our fetch spec conformance, which we intend to keep.  This makes a low-risk
    targeted fix that will fix the affected app until they update.  
    
    I manually verified this fixes the app.
    
    * loader/DocumentThreadableLoader.cpp:
    (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
    * platform/RuntimeApplicationChecks.h:
    * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
    (WebCore::applicationSDKVersionOverride):
    (WebCore::setApplicationSDKVersion):
    (WebCore::applicationSDKVersion):
    (WebCore::IOSApplication::isMoviStarPlus):
    
    Source/WebKit:
    
    Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.
    
    * NetworkProcess/NetworkProcessCreationParameters.cpp:
    (WebKit::NetworkProcessCreationParameters::encode const):
    (WebKit::NetworkProcessCreationParameters::decode):
    * NetworkProcess/NetworkProcessCreationParameters.h:
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
    * Shared/WebProcessCreationParameters.cpp:
    (WebKit::WebProcessCreationParameters::encode const):
    (WebKit::WebProcessCreationParameters::decode):
    * Shared/WebProcessCreationParameters.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::platformInitializeWebProcess):
    (WebKit::WebProcessPool::platformInitializeNetworkProcess):
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::platformInitializeWebProcess):
    
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234447 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-31  Alex Christensen  <achristensen@webkit.org>

            REGRESSION (r231107): MoviStar+ launches to a blank black screen
            https://bugs.webkit.org/show_bug.cgi?id=188139

            Reviewed by Brent Fulgham.

            Add infrastructure to check UIProcess SDK from the WebProcess and NetworkProcess for linked-on-or-after checks.

            * NetworkProcess/NetworkProcessCreationParameters.cpp:
            (WebKit::NetworkProcessCreationParameters::encode const):
            (WebKit::NetworkProcessCreationParameters::decode):
            * NetworkProcess/NetworkProcessCreationParameters.h:
            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
            (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
            * Shared/WebProcessCreationParameters.cpp:
            (WebKit::WebProcessCreationParameters::encode const):
            (WebKit::WebProcessCreationParameters::decode):
            * Shared/WebProcessCreationParameters.h:
            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
            (WebKit::WebProcessPool::platformInitializeWebProcess):
            (WebKit::WebProcessPool::platformInitializeNetworkProcess):
            * WebProcess/cocoa/WebProcessCocoa.mm:
            (WebKit::WebProcess::platformInitializeWebProcess):

2018-07-30  Babak Shafiei  <bshafiei@apple.com>

        Revert r233926. rdar://problem/42354941

2018-07-30  Kocsen Chung  <kocsen_chung@apple.com>

        Revert r233925. rdar://problem/42354959

2018-07-30  Babak Shafiei  <bshafiei@apple.com>

        Revert r234081. rdar://problem/42490080

2018-07-30  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234369. rdar://problem/42736179

    Potential null dereference under WebPage::applicationDidBecomeActive()
    https://bugs.webkit.org/show_bug.cgi?id=188170
    <rdar://problem/37493418>
    
    Reviewed by Wenson Hsieh.
    
    WebPage::m_page gets nulled out when the page is closed but the WebPage object may receive IPC
    until it gets destroyed. Therefore, we need to null-check m_page before using it in IPC message
    handlers.
    
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::applicationDidEnterBackground):
    (WebKit::WebPage::applicationWillEnterForeground):
    (WebKit::WebPage::applicationDidBecomeActive):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234369 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-30  Chris Dumez  <cdumez@apple.com>

            Potential null dereference under WebPage::applicationDidBecomeActive()
            https://bugs.webkit.org/show_bug.cgi?id=188170
            <rdar://problem/37493418>

            Reviewed by Wenson Hsieh.

            WebPage::m_page gets nulled out when the page is closed but the WebPage object may receive IPC
            until it gets destroyed. Therefore, we need to null-check m_page before using it in IPC message
            handlers.

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

2018-07-29  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234349. rdar://problem/42721129

    [Wi-Fi Assertions] Pass a ResumptionReason to resumeWiFiAssertions
    https://bugs.webkit.org/show_bug.cgi?id=188142
    <rdar://problem/42628842>
    
    Reviewed by Darin Adler.
    
    * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
    (WebKit::NetworkProcess::platformProcessDidResume):
    (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234349 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-28  Andy Estes  <aestes@apple.com>

            [Wi-Fi Assertions] Pass a ResumptionReason to resumeWiFiAssertions
            https://bugs.webkit.org/show_bug.cgi?id=188142
            <rdar://problem/42628842>

            Reviewed by Darin Adler.

            * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
            (WebKit::NetworkProcess::platformProcessDidResume):
            (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):

2018-07-29  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234330. rdar://problem/42721217

    Be more conservative with compositing layer creation when memory is low
    https://bugs.webkit.org/show_bug.cgi?id=187866
    rdar://problem/42366345
    
    Reviewed by Zalan Bujtas.
    
    Source/WebCore:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    Test: compositing/layer-creation/compositing-policy.html
    
    * page/Page.h:
    (WebCore::Page::compositingPolicyOverride const):
    (WebCore::Page::setCompositingPolicyOverride):
    * platform/graphics/transforms/Matrix3DTransformOperation.cpp:
    (WebCore::Matrix3DTransformOperation::isRepresentableIn2D const):
    * platform/graphics/transforms/Matrix3DTransformOperation.h:
    * platform/graphics/transforms/PerspectiveTransformOperation.h:
    * platform/graphics/transforms/RotateTransformOperation.h:
    * platform/graphics/transforms/ScaleTransformOperation.h:
    * platform/graphics/transforms/TransformOperation.h:
    (WebCore::TransformOperation::isRepresentableIn2D const):
    * platform/graphics/transforms/TransformOperations.h:
    (WebCore::TransformOperations::has3DOperation const):
    (WebCore::TransformOperations::isRepresentableIn2D const):
    * platform/graphics/transforms/TranslateTransformOperation.h:
    * rendering/RenderLayerBacking.cpp:
    (WebCore::RenderLayerBacking::updateGeometry):
    * rendering/RenderLayerCompositor.cpp:
    (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
    (WebCore::RenderLayerCompositor::updateCompositingPolicy):
    (WebCore::RenderLayerCompositor::updateCompositingLayers):
    (WebCore::RenderLayerCompositor::requiresCompositingForTransform const):
    (WebCore::RenderLayerCompositor::requiresCompositingForVideo const):
    (WebCore::RenderLayerCompositor::requiresCompositingForCanvas const):
    (WebCore::RenderLayerCompositor::requiresCompositingForPlugin const):
    (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
    (WebCore::RenderLayerCompositor::needsFixedRootBackgroundLayer const):
    (WebCore::operator<<):
    * rendering/RenderLayerCompositor.h:
    * testing/Internals.cpp:
    (WebCore::Internals::setCompositingPolicyOverride):
    (WebCore::Internals::compositingPolicyOverride const):
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
    (WKBundlePageSetCompositingPolicyOverride):
    * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
    
    Source/WTF:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * wtf/MemoryPressureHandler.cpp:
    (WTF::thresholdForPolicy):
    (WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
    * wtf/MemoryPressureHandler.h:
    
    Tools:
    
    When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
    compositing layers. We avoid compositing for these situations:
    1. Layers with 3D transforms which are affine (like translateZ(0)).
    2. Layers with will-change
    3. Layers for canvases (other than WebGL/WebGPU)
    
    We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
    falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
    Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
    
    Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
    flakily falling into a different mode, and so that we can impose the conservative
    mode for testing.
    
    * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
    (WTR::InjectedBundlePage::prepare):
    
    LayoutTests:
    
    * compositing/layer-creation/compositing-policy-expected.txt: Added.
    * compositing/layer-creation/compositing-policy.html: Added.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-27  Simon Fraser  <simon.fraser@apple.com>

            Be more conservative with compositing layer creation when memory is low
            https://bugs.webkit.org/show_bug.cgi?id=187866
            rdar://problem/42366345

            Reviewed by Zalan Bujtas.

            When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
            compositing layers. We avoid compositing for these situations:
            1. Layers with 3D transforms which are affine (like translateZ(0)).
            2. Layers with will-change
            3. Layers for canvases (other than WebGL/WebGPU)

            We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
            falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
            Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.

            Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
            flakily falling into a different mode, and so that we can impose the conservative
            mode for testing.

            * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
            (WKBundlePageSetCompositingPolicyOverride):
            * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

2018-07-29  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234326. rdar://problem/42721215

    Use SPI to compute the jetsam limit on iOS instead of hardcoding 840MB
    https://bugs.webkit.org/show_bug.cgi?id=188091
    <rdar://problem/42647697>
    
    Reviewed by Simon Fraser.
    
    Source/bmalloc:
    
    We want bmalloc to dynamically adapt to the jetsam limit of the process
    it's running in. WTF::ramSize() is based off bmalloc's availableMemory,
    so it will now reflect the result of the real jetsam limit when we can
    read it.
    
    Reading the jetsam limit requires an entitlement, so this patch opts in
    the WebContent/Storage/Network processes. We fall back to 840MB (the
    old hard coded value) when the SPI call fails (e.g, when we're in a
    process without the proper entitlement).
    
    * bmalloc.xcodeproj/project.pbxproj:
    * bmalloc/AvailableMemory.cpp:
    (bmalloc::jetsamLimit):
    (bmalloc::computeAvailableMemory):
    * bmalloc/darwin/MemoryStatusSPI.h: Added.
    
    Source/WebKit:
    
    Give the Network/Storage/WebContent process the com.apple.private.memorystatus
    entitlement. This allows them to read the process jetsam limit.
    
    * Configurations/Databases-iOS.entitlements:
    * Configurations/Network-iOS.entitlements:
    * Configurations/WebContent-iOS.entitlements:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-27  Saam Barati  <sbarati@apple.com>

            Use SPI to compute the jetsam limit on iOS instead of hardcoding 840MB
            https://bugs.webkit.org/show_bug.cgi?id=188091
            <rdar://problem/42647697>

            Reviewed by Simon Fraser.

            Give the Network/Storage/WebContent process the com.apple.private.memorystatus
            entitlement. This allows them to read the process jetsam limit.

            * Configurations/Databases-iOS.entitlements:
            * Configurations/Network-iOS.entitlements:
            * Configurations/WebContent-iOS.entitlements:

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234262. rdar://problem/42650389

    Disable Dark Mode in the Plugin process to avoid rendering issues
    https://bugs.webkit.org/show_bug.cgi?id=188059
    <rdar://problem/42369281>
    
    Reviewed by Tim Horton.
    
    Plugins generally do not support dark mode and this causes rendering issues so
    disable dark mode in the plugin process.
    
    * PluginProcess/mac/PluginProcessMac.mm:
    (WebKit::PluginProcess::platformInitializePluginProcess):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234262 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

            Disable Dark Mode in the Plugin process to avoid rendering issues
            https://bugs.webkit.org/show_bug.cgi?id=188059
            <rdar://problem/42369281>

            Reviewed by Tim Horton.

            Plugins generally do not support dark mode and this causes rendering issues so
            disable dark mode in the plugin process.

            * PluginProcess/mac/PluginProcessMac.mm:
            (WebKit::PluginProcess::platformInitializePluginProcess):

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234223. rdar://problem/42650367

    [macOS] Update sandboxes for revised OpenCL calls and streaming media
    https://bugs.webkit.org/show_bug.cgi?id=188013
    <rdar://problem/42594262>
    
    Reviewed by Eric Carlson.
    
    Testing logs from recent Mojave builds shows that OpenCL is checking more CPU-specific values as part of WebKit
    painting operations. We need to allow these checks in the sandbox to support these more optimized drawing operations.
    
    I also corrected some sandbox violations I found while investigating streaming media issues.
    
    * WebProcess/com.apple.WebProcess.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234223 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-25  Brent Fulgham  <bfulgham@apple.com>

            [macOS] Update sandboxes for revised OpenCL calls and streaming media
            https://bugs.webkit.org/show_bug.cgi?id=188013
            <rdar://problem/42594262>

            Reviewed by Eric Carlson.

            Testing logs from recent Mojave builds shows that OpenCL is checking more CPU-specific values as part of WebKit
            painting operations. We need to allow these checks in the sandbox to support these more optimized drawing operations.

            I also corrected some sandbox violations I found while investigating streaming media issues.

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

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234081. rdar://problem/42490080

    REGRESSION(r233925): Can't go into PiP twice
    https://bugs.webkit.org/show_bug.cgi?id=187876
    <rdar://problem/42444520>
    
    Reviewed by Jon Lee.
    
    We fail to enter PiP the second time because the video fullscreen interface no longer has a
    model, and so gives a contentSize of 0x0. This happens because we disassociate the
    interface from the model in didCleanupFullscreen. However, the interface and model can still
    be re-used if they're kept alive by another client. We should delay disassociating the model
    from the interface until just before the model is destroyed in removeClientForContext.
    
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
    (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234081 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-20  Jer Noble  <jer.noble@apple.com>

            REGRESSION(r233925): Can't go into PiP twice
            https://bugs.webkit.org/show_bug.cgi?id=187876
            <rdar://problem/42444520>

            Reviewed by Jon Lee.

            We fail to enter PiP the second time because the video fullscreen interface no longer has a
            model, and so gives a contentSize of 0x0. This happens because we disassociate the
            interface from the model in didCleanupFullscreen. However, the interface and model can still
            be re-used if they're kept alive by another client. We should delay disassociating the model
            from the interface until just before the model is destroyed in removeClientForContext.

            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
            (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233926. rdar://problem/42354941

    PiP from Element Fullscreen should match AVKit's behavior
    https://bugs.webkit.org/show_bug.cgi?id=187623
    Source/WebCore:
    
    Reviewed by Jon Lee.
    
    PiP behavior should be defined at the WebKit2 level, and not in HTMLMediaElement:
    
    * html/HTMLMediaElement.cpp:
    (WebCore::HTMLMediaElement::enterFullscreen):
    
    Add an accessor for pictureInPictureWasStartedWhenEnteringBackground():
    
    * platform/cocoa/VideoFullscreenModelVideoElement.mm:
    (VideoFullscreenInterfaceAVKit::pictureInPictureWasStartedWhenEnteringBackground const):
    
    Add VideoFullscreenModelClient virutal methods for PiP change notifications:
    
    * platform/cocoa/VideoFullscreenModel.h:
    (WebCore::VideoFullscreenModelClient::hasVideoChanged):
    (WebCore::VideoFullscreenModelClient::videoDimensionsChanged):
    (WebCore::VideoFullscreenModelClient::willEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::didEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::failedToEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::willExitPictureInPicture):
    (WebCore::VideoFullscreenModelClient::didExitPictureInPicture):
    (WebCore::VideoFullscreenModelClient::failedToExitPictureInPicture):
    * platform/cocoa/VideoFullscreenModelVideoElement.h:
    * platform/cocoa/VideoFullscreenModelVideoElement.mm:
    (VideoFullscreenModelVideoElement::willEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::didEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::willExitPictureInPicture):
    (VideoFullscreenModelVideoElement::didExitPictureInPicture):
    (VideoFullscreenModelVideoElement::failedToExitPictureInPicture):
    * platform/ios/VideoFullscreenInterfaceAVKit.h:
    * platform/ios/VideoFullscreenInterfaceAVKit.mm:
    (-[WebAVPlayerLayer layoutSublayers]):
    (-[WebAVPlayerLayer resolveBounds]):
    (-[WebAVPlayerLayer setVideoGravity:]):
    (VideoFullscreenInterfaceAVKit::setupFullscreen):
    (VideoFullscreenInterfaceAVKit::presentingViewController):
    (VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
    (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
    (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
    (VideoFullscreenInterfaceAVKit::doSetup):
    * platform/ios/WebVideoFullscreenControllerAVKit.mm:
    (VideoFullscreenControllerContext::willEnterPictureInPicture):
    (VideoFullscreenControllerContext::didEnterPictureInPicture):
    (VideoFullscreenControllerContext::failedToEnterPictureInPicture):
    (VideoFullscreenControllerContext::willExitPictureInPicture):
    (VideoFullscreenControllerContext::didExitPictureInPicture):
    (VideoFullscreenControllerContext::failedToExitPictureInPicture):
    * platform/mac/VideoFullscreenInterfaceMac.h:
    (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen): Deleted.
    * platform/mac/VideoFullscreenInterfaceMac.mm:
    (-[WebVideoFullscreenInterfaceMacObjC invalidateFullscreenState]):
    (-[WebVideoFullscreenInterfaceMacObjC exitPIP]):
    (-[WebVideoFullscreenInterfaceMacObjC exitPIPAnimatingToRect:inWindow:]):
    (-[WebVideoFullscreenInterfaceMacObjC pipShouldClose:]):
    (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
    (WebCore::VideoFullscreenInterfaceMac::enterFullscreen):
    (WebCore::VideoFullscreenInterfaceMac::exitFullscreen):
    (WebCore::VideoFullscreenInterfaceMac::exitFullscreenWithoutAnimationToMode):
    (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen):
    
    Source/WebCore/PAL:
    
    Reviewed by Jon Lee.
    
    * pal/spi/mac/PIPSPI.h:
    
    Source/WebKit:
    
    Reviewed by Jon Lee.
    
    * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
    (WebKit::PlaybackSessionManagerProxy::controlsManagerContextId const):
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
    (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
    (WebKit::VideoFullscreenModelContext::failedToExitPictureInPicture):
    (WebKit::VideoFullscreenManagerProxy::controlsManagerInterface):
    * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
    (WKFullScreenViewControllerVideoFullscreenModelClient::setParent):
    (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
    (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
    (-[WKFullScreenViewController initWithWebView:]):
    (-[WKFullScreenViewController dealloc]):
    (-[WKFullScreenViewController videoControlsManagerDidChange]):
    (-[WKFullScreenViewController ensurePiPAnimator]):
    (-[WKFullScreenViewController willEnterPictureInPicture]):
    (-[WKFullScreenViewController didEnterPictureInPicture]):
    (-[WKFullScreenViewController failedToEnterPictureInPicture]):
    (-[WKFullScreenViewController loadView]):
    (-[WKFullScreenViewController viewWillAppear:]):
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::videoControlsManagerDidChange):
    * UIProcess/mac/WKFullScreenWindowController.h:
    * UIProcess/mac/WKFullScreenWindowController.mm:
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setParent):
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const):
    (-[WKFullScreenWindowController initWithWindow:webView:page:]):
    (-[WKFullScreenWindowController dealloc]):
    (-[WKFullScreenWindowController videoControlsManagerDidChange]):
    (-[WKFullScreenWindowController willEnterPictureInPicture]):
    
    Tools:
    
    <rdar://problem/41212379>
    
    Reviewed by Jon Lee.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.html: Added.
    * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm: Added.
    (-[ExitFullscreenOnEnterPiPUIDelegate _webView:hasVideoInPictureInPictureDidChange:]):
    (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidEnterFullscreen:]):
    (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidExitFullscreen:]):
    (TestWebKitAPI::TEST):
    
    LayoutTests:
    
    Reviewed by Jon Lee.
    
    * TestExpectations:
    * media/fullscreen-video-going-into-pip-expected.txt: Removed.
    * media/fullscreen-video-going-into-pip.html: Removed.
    * media/video-contained-in-fullscreen-element-going-into-pip-expected.txt: Removed.
    * media/video-contained-in-fullscreen-element-going-into-pip.html: Removed.
    * platform/mac-wk2/TestExpectations:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233926 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            PiP from Element Fullscreen should match AVKit's behavior
            https://bugs.webkit.org/show_bug.cgi?id=187623

            Reviewed by Jon Lee.

            * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
            (WebKit::PlaybackSessionManagerProxy::controlsManagerContextId const):
            * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
            (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
            (WebKit::VideoFullscreenModelContext::failedToExitPictureInPicture):
            (WebKit::VideoFullscreenManagerProxy::controlsManagerInterface):
            * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
            (WKFullScreenViewControllerVideoFullscreenModelClient::setParent):
            (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
            (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
            (-[WKFullScreenViewController initWithWebView:]):
            (-[WKFullScreenViewController dealloc]):
            (-[WKFullScreenViewController videoControlsManagerDidChange]):
            (-[WKFullScreenViewController ensurePiPAnimator]):
            (-[WKFullScreenViewController willEnterPictureInPicture]):
            (-[WKFullScreenViewController didEnterPictureInPicture]):
            (-[WKFullScreenViewController failedToEnterPictureInPicture]):
            (-[WKFullScreenViewController loadView]):
            (-[WKFullScreenViewController viewWillAppear:]):
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::videoControlsManagerDidChange):
            * UIProcess/mac/WKFullScreenWindowController.h:
            * UIProcess/mac/WKFullScreenWindowController.mm:
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setParent):
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const):
            (-[WKFullScreenWindowController initWithWindow:webView:page:]):
            (-[WKFullScreenWindowController dealloc]):
            (-[WKFullScreenWindowController videoControlsManagerDidChange]):
            (-[WKFullScreenWindowController willEnterPictureInPicture]):

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233925. rdar://problem/42354959

    Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
    https://bugs.webkit.org/show_bug.cgi?id=187775
    <rdar://problem/42343229>
    
    Reviewed by Jon Lee.
    
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
            https://bugs.webkit.org/show_bug.cgi?id=187775
            <rdar://problem/42343229>

            Reviewed by Jon Lee.

            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):

2018-07-26  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234272. rdar://problem/42645434

    Unreviewed, rolling out r234181 and r234189.
    https://bugs.webkit.org/show_bug.cgi?id=188075
    
    These are not needed right now (Requested by thorton on
    #webkit).
    
    Reverted changesets:
    
    "Enable Web Content Filtering on watchOS"
    https://bugs.webkit.org/show_bug.cgi?id=187979
    https://trac.webkit.org/changeset/234181
    
    "HAVE(PARENTAL_CONTROLS) should be true on watchOS"
    https://bugs.webkit.org/show_bug.cgi?id=187985
    https://trac.webkit.org/changeset/234189
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234272 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-26  Commit Queue  <commit-queue@webkit.org>

            Unreviewed, rolling out r234181 and r234189.
            https://bugs.webkit.org/show_bug.cgi?id=188075

            These are not needed right now (Requested by thorton on
            #webkit).

            Reverted changesets:

            "Enable Web Content Filtering on watchOS"
            https://bugs.webkit.org/show_bug.cgi?id=187979
            https://trac.webkit.org/changeset/234181

            "HAVE(PARENTAL_CONTROLS) should be true on watchOS"
            https://bugs.webkit.org/show_bug.cgi?id=187985
            https://trac.webkit.org/changeset/234189

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234216. rdar://problem/42604537

    Mask AVBackgroundView to the corner radius.
    https://bugs.webkit.org/show_bug.cgi?id=187976
    rdar://problem/41810866
    
    Patch by Jeremy Jones <jeremyj@apple.com> on 2018-07-25
    Reviewed by Jon Lee.
    
    This changes sets the appropriate mask to the layer so the corners look correct.
    
    * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
    (-[WKFullscreenStackView init]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234216 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-25  Jeremy Jones  <jeremyj@apple.com>

            Mask AVBackgroundView to the corner radius.
            https://bugs.webkit.org/show_bug.cgi?id=187976
            rdar://problem/41810866

            Reviewed by Jon Lee.

            This changes sets the appropriate mask to the layer so the corners look correct.

            * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
            (-[WKFullscreenStackView init]):

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234215. rdar://problem/42604541

    REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes
    https://bugs.webkit.org/show_bug.cgi?id=188018
    <rdar://problem/42517520>
    
    Reviewed by Dean Jackson.
    
    Source/WebCore:
    
    Manual rollout of r227577.
    
    Test: fast/overflow/line-clamp-with-text-shadow.html
    
    * Sources.txt:
    * WebCore.xcodeproj/project.pbxproj:
    * css/CSSComputedStyleDeclaration.cpp:
    (WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
    * css/CSSProperties.json:
    * css/StyleBuilderCustom.h:
    (WebCore::StyleBuilderCustom::applyValueWebkitLinesClamp): Deleted.
    * css/parser/CSSParserContext.cpp:
    (WebCore::CSSParserContext::CSSParserContext):
    * css/parser/CSSParserContext.h:
    (WebCore::CSSParserContextHash::hash):
    * css/parser/CSSPropertyParser.cpp:
    (WebCore::CSSPropertyParser::parseSingleValue):
    (WebCore::consumeLinesClamp): Deleted.
    * page/Settings.yaml:
    * rendering/RenderBlockFlow.cpp:
    (WebCore::RenderBlockFlow::willCreateColumns const):
    (WebCore::getHeightForLineCount):
    (WebCore::RenderBlockFlow::heightForLineCount):
    (WebCore::RenderBlockFlow::layoutExcludedChildren):
    (WebCore::RenderBlockFlow::logicalHeightForLineCount): Deleted.
    (WebCore::RenderBlockFlow::logicalHeightExcludingLineCount): Deleted.
    * rendering/RenderBlockFlow.h:
    * rendering/RenderDeprecatedFlexibleBox.cpp:
    (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
    * rendering/RenderFragmentContainer.cpp:
    (WebCore::RenderFragmentContainer::pageLogicalHeightForOffset const): Deleted.
    * rendering/RenderFragmentContainer.h:
    * rendering/RenderFragmentedFlow.cpp:
    (WebCore::RenderFragmentedFlow::validateFragments):
    (WebCore::RenderFragmentedFlow::pageLogicalHeightForOffset const):
    (WebCore::RenderFragmentedFlow::pageRemainingLogicalHeightForOffset const):
    * rendering/RenderFragmentedFlow.h:
    * rendering/RenderLinesClampFlow.cpp: Removed.
    * rendering/RenderLinesClampFlow.h: Removed.
    * rendering/RenderLinesClampSet.cpp: Removed.
    * rendering/RenderLinesClampSet.h: Removed.
    * rendering/RenderMultiColumnFlow.cpp:
    (WebCore::RenderMultiColumnFlow::isColumnSpanningDescendant const): Deleted.
    (WebCore::RenderMultiColumnFlow::createMultiColumnSet): Deleted.
    * rendering/RenderMultiColumnFlow.h:
    (WebCore::RenderMultiColumnFlow::multiColumnBlockFlow const): Deleted.
    (WebCore::RenderMultiColumnFlow::hasColumnSpanner const): Deleted.
    (WebCore::RenderMultiColumnFlow::findColumnSpannerPlaceholder const): Deleted.
    (WebCore::RenderMultiColumnFlow::columnCount const): Deleted.
    (WebCore::RenderMultiColumnFlow::columnWidth const): Deleted.
    (WebCore::RenderMultiColumnFlow::columnHeightAvailable const): Deleted.
    (WebCore::RenderMultiColumnFlow::setColumnHeightAvailable): Deleted.
    (WebCore::RenderMultiColumnFlow::inBalancingPass const): Deleted.
    (WebCore::RenderMultiColumnFlow::setInBalancingPass): Deleted.
    (WebCore::RenderMultiColumnFlow::needsHeightsRecalculation const): Deleted.
    (WebCore::RenderMultiColumnFlow::setNeedsHeightsRecalculation): Deleted.
    (WebCore::RenderMultiColumnFlow::shouldRelayoutForPagination const): Deleted.
    (WebCore::RenderMultiColumnFlow::setColumnCountAndWidth): Deleted.
    (WebCore::RenderMultiColumnFlow::progressionIsInline const): Deleted.
    (WebCore::RenderMultiColumnFlow::setProgressionIsInline): Deleted.
    (WebCore::RenderMultiColumnFlow::progressionIsReversed const): Deleted.
    (WebCore::RenderMultiColumnFlow::setProgressionIsReversed): Deleted.
    (WebCore::RenderMultiColumnFlow::spannerMap): Deleted.
    * rendering/RenderMultiColumnSet.cpp:
    (WebCore::RenderMultiColumnSet::collectLayerFragments):
    (WebCore::RenderMultiColumnSet::columnTranslationForOffset const):
    * rendering/RenderMultiColumnSet.h:
    (WebCore::RenderMultiColumnSet::multiColumnBlockFlow const): Deleted.
    (WebCore::RenderMultiColumnSet::multiColumnFlow const): Deleted.
    (WebCore::RenderMultiColumnSet::logicalTopInFragmentedFlow const): Deleted.
    (WebCore::RenderMultiColumnSet::logicalBottomInFragmentedFlow const): Deleted.
    (WebCore::RenderMultiColumnSet::logicalHeightInFragmentedFlow const): Deleted.
    (WebCore::RenderMultiColumnSet::computedColumnCount const): Deleted.
    (WebCore::RenderMultiColumnSet::computedColumnWidth const): Deleted.
    (WebCore::RenderMultiColumnSet::computedColumnHeight const): Deleted.
    (WebCore::RenderMultiColumnSet::columnHeightComputed const): Deleted.
    (WebCore::RenderMultiColumnSet::setComputedColumnWidthAndCount): Deleted.
    (WebCore::RenderMultiColumnSet::updateMinimumColumnHeight): Deleted.
    (WebCore::RenderMultiColumnSet::minimumColumnHeight const): Deleted.
    (WebCore::RenderMultiColumnSet::forcedBreaksCount const): Deleted.
    (WebCore::RenderMultiColumnSet::hasBeenFlowed const): Deleted.
    (WebCore::RenderMultiColumnSet::skipLayerFragmentCollectionForColumn const): Deleted.
    (WebCore::RenderMultiColumnSet::customBlockProgressionAdjustmentForColumn const): Deleted.
    (WebCore::RenderMultiColumnSet::ContentRun::ContentRun): Deleted.
    (WebCore::RenderMultiColumnSet::ContentRun::assumedImplicitBreaks const): Deleted.
    (WebCore::RenderMultiColumnSet::ContentRun::assumeAnotherImplicitBreak): Deleted.
    (WebCore::RenderMultiColumnSet::ContentRun::breakOffset const): Deleted.
    (WebCore::RenderMultiColumnSet::ContentRun::columnLogicalHeight const): Deleted.
    * rendering/RenderObject.h:
    (WebCore::RenderObject::isRenderLinesClampFlow const): Deleted.
    (WebCore::RenderObject::isRenderLinesClampSet const): Deleted.
    * rendering/style/LineClampValue.h:
    (WebCore::LinesClampValue::LinesClampValue): Deleted.
    (WebCore::LinesClampValue::isNone const): Deleted.
    (WebCore::LinesClampValue::operator== const): Deleted.
    (WebCore::LinesClampValue::operator!= const): Deleted.
    (WebCore::LinesClampValue::start const): Deleted.
    (WebCore::LinesClampValue::end const): Deleted.
    (WebCore::LinesClampValue::center const): Deleted.
    * rendering/style/RenderStyle.h:
    (WebCore::RenderStyle::lineClamp const):
    (WebCore::RenderStyle::setLineClamp):
    (WebCore::RenderStyle::initialLineClamp):
    (WebCore::RenderStyle::hasInlineColumnAxis const):
    (WebCore::RenderStyle::linesClamp const): Deleted.
    (WebCore::RenderStyle::hasLinesClamp const): Deleted.
    (WebCore::RenderStyle::setLinesClamp): Deleted.
    (WebCore::RenderStyle::initialLinesClamp): Deleted.
    * rendering/style/StyleRareNonInheritedData.cpp:
    (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
    (WebCore::StyleRareNonInheritedData::operator== const):
    * rendering/style/StyleRareNonInheritedData.h:
    * rendering/updating/RenderTreeBuilderMultiColumn.cpp:
    (WebCore::isValidColumnSpanner):
    (WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
    (WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant):
    
    Source/WebKit:
    
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::m_credentialsMessenger):
    
    LayoutTests:
    
    * fast/block/lines-clamp-advanced-expected.html: Removed.
    * fast/block/lines-clamp-advanced-rl-expected.html: Removed.
    * fast/block/lines-clamp-advanced-rl.html: Removed.
    * fast/block/lines-clamp-advanced.html: Removed.
    * fast/block/lines-clamp-basic-expected.html: Removed.
    * fast/block/lines-clamp-basic-rl-expected.html: Removed.
    * fast/block/lines-clamp-basic-rl.html: Removed.
    * fast/block/lines-clamp-basic.html: Removed.
    * fast/css/lines-clamp-parsing-expected.txt: Removed.
    * fast/css/lines-clamp-parsing.html: Removed.
    * fast/overflow/line-clamp-with-text-shadow-expected.html: Added.
    * fast/overflow/line-clamp-with-text-shadow.html: Added.
    * platform/ios-simulator-wk2/fast/overflow/line-clamp-expected.txt: Removed.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234215 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-25  Zalan Bujtas  <zalan@apple.com>

            REGRESSION(r227577) Text on TV & Movies page doesn't wrap properly in iTunes
            https://bugs.webkit.org/show_bug.cgi?id=188018
            <rdar://problem/42517520>

            Reviewed by Dean Jackson.

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

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234195. rdar://problem/42604534

    [macOS] PluginProcess needs TCC entitlements for media capture
    https://bugs.webkit.org/show_bug.cgi?id=187981
    <rdar://problem/42433634>
    
    Reviewed by Chris Dumez.
    
    The changes needed in Bug 185526 are also needed for the plugin process, or else the UIProcess
    (e.g., Safari) is not able to pass the user's camera/microphone access permission to the plugin process.
    
    This patch has the following changes:
    
    1. Rename "WebContent-OSX-restricted.entitlements" to "WebContent-or-Plugin-OSX-restricted.entitlements"
    2. Rename "process-webcontent-entitlements.sh" to "process-webcontent-or-plugin-entitlements.sh"
    3. Add a run-script step to the Plugin.64 and Plugin.32 builds to add the relevant entitlements.
    4. Silence some Flash plugin sandbox exceptions triggered after activating the camera.
    
    * Configurations/WebContent-or-Plugin-OSX-restricted.entitlements: Renamed from Source/WebKit/Configurations/WebContent-OSX-restricted.entitlements.
    * Resources/PlugInSandboxProfiles/com.macromedia.Flash Player ESR.plugin.sb: Address sandbox violations needed by camera use.
    * Resources/PlugInSandboxProfiles/com.macromedia.Flash Player.plugin.sb: Ditto.
    * Scripts/process-webcontent-or-plugin-entitlements.sh: Renamed from Source/WebKit/Scripts/process-webcontent-entitlements.sh.
    * WebKit.xcodeproj/project.pbxproj: Update for renaming, and perform entitlement steps on Plugin process.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234195 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-25  Brent Fulgham  <bfulgham@apple.com>

            [macOS] PluginProcess needs TCC entitlements for media capture
            https://bugs.webkit.org/show_bug.cgi?id=187981
            <rdar://problem/42433634>

            Reviewed by Chris Dumez.

            The changes needed in Bug 185526 are also needed for the plugin process, or else the UIProcess
            (e.g., Safari) is not able to pass the user's camera/microphone access permission to the plugin process.

            This patch has the following changes:

            1. Rename "WebContent-OSX-restricted.entitlements" to "WebContent-or-Plugin-OSX-restricted.entitlements"
            2. Rename "process-webcontent-entitlements.sh" to "process-webcontent-or-plugin-entitlements.sh"
            3. Add a run-script step to the Plugin.64 and Plugin.32 builds to add the relevant entitlements.
            4. Silence some Flash plugin sandbox exceptions triggered after activating the camera.

            * Configurations/WebContent-or-Plugin-OSX-restricted.entitlements: Renamed from Source/WebKit/Configurations/WebContent-OSX-restricted.entitlements.
            * Resources/PlugInSandboxProfiles/com.macromedia.Flash Player ESR.plugin.sb: Address sandbox violations needed by camera use.
            * Resources/PlugInSandboxProfiles/com.macromedia.Flash Player.plugin.sb: Ditto.
            * Scripts/process-webcontent-or-plugin-entitlements.sh: Renamed from Source/WebKit/Scripts/process-webcontent-entitlements.sh.
            * WebKit.xcodeproj/project.pbxproj: Update for renaming, and perform entitlement steps on Plugin process.

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234181. rdar://problem/42604524

    Enable Web Content Filtering on watchOS
    https://bugs.webkit.org/show_bug.cgi?id=187979
    <rdar://problem/42559346>
    
    Reviewed by Wenson Hsieh.
    
    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:
    
    Tools:
    
    * TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234181 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-24  Tim Horton  <timothy_horton@apple.com>

            Enable Web Content Filtering on watchOS
            https://bugs.webkit.org/show_bug.cgi?id=187979
            <rdar://problem/42559346>

            Reviewed by Wenson Hsieh.

            * Configurations/FeatureDefines.xcconfig:

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234124. rdar://problem/42604550

    Crash when loadViewIfRequired called while WKFullScreenViewController is being deallocated.
    https://bugs.webkit.org/show_bug.cgi?id=187920
    rdar://problem/41324023
    
    Patch by Jeremy Jones <jeremyj@apple.com> on 2018-07-23
    Reviewed by Eric Carlson.
    
    Clear dangling weak-ref.
    Prevent async playback state calls from instantiating the interface.
    Release WKFullScreenViewController when it is no longer needed.
    
    * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
    (-[WKFullScreenViewController dealloc]):
    (-[WKFullScreenViewController setPlaying:]):
    (-[WKFullScreenViewController setAnimating:]):
    * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
    (-[WKFullScreenWindowController _completedExitFullScreen]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234124 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-23  Jeremy Jones  <jeremyj@apple.com>

            Crash when loadViewIfRequired called while WKFullScreenViewController is being deallocated.
            https://bugs.webkit.org/show_bug.cgi?id=187920
            rdar://problem/41324023

            Reviewed by Eric Carlson.

            Clear dangling weak-ref.
            Prevent async playback state calls from instantiating the interface.
            Release WKFullScreenViewController when it is no longer needed.

            * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
            (-[WKFullScreenViewController dealloc]):
            (-[WKFullScreenViewController setPlaying:]):
            (-[WKFullScreenViewController setAnimating:]):
            * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
            (-[WKFullScreenWindowController _completedExitFullScreen]):

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234111. rdar://problem/42604691

    WebResourceLoadStatisticsStore fails to unregister itself as a MessageReceiver in its destructor
    https://bugs.webkit.org/show_bug.cgi?id=187910
    <rdar://problem/42356526>
    
    Reviewed by Brent Fulgham.
    
    Source/WebCore:
    
    Add internals API that causes the ResourceLoadObserver to notify its observer, and avoid waiting
    for the 5 second delay.
    
    * testing/Internals.cpp:
    (WebCore::Internals::notifyResourceLoadObserver):
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    
    The WebResourceLoadStatisticsStore was only removing itself as a MessageReceiver from the WebProcessProxy
    and that WebProcessProxy's connection was getting closed. However, it is possible for the
    WebResourceLoadStatisticsStore to get destroyed before this happens. This would lead to crashes such as
    the one in <rdar://problem/42356526>.
    
    To address the issue, we let the WebsiteDataStore take care of registering / unregistering the
    WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy. This is more reliable since
    the WebsiteDataStore is the one that subclasses WebProcessLifetimeObserver. Make sure the
    WebResourceLoadStatisticsStore is removed as a MessageReceiver whenever the WebsiteDataStore is destroyed
    or WebsiteDataStore::m_resourceLoadStatistics gets cleared.
    
    * UIProcess/WebResourceLoadStatisticsStore.cpp:
    * UIProcess/WebResourceLoadStatisticsStore.h:
    Drop logic to add / remove the WebResourceLoadStatisticsStore as a receiver now that the
    WebsiteDataStore takes care of it.
    
    * UIProcess/WebsiteData/WebsiteDataStore.cpp:
    (WebKit::WebsiteDataStore::~WebsiteDataStore):
    Make sure the WebResourceLoadStatisticsStore gets unregistered as a MessageReceiver from all associated
    WebProcessProxy objects when the WebsiteDataStore gets destroyed.
    
    (WebKit::WebsiteDataStore::webProcessWillOpenConnection):
    (WebKit::WebsiteDataStore::webProcessDidCloseConnection):
    Register / Unregister the WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy.
    
    (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
    Make sure we unregister the WebResourceLoadStatisticsStore as a MessageReceiver with all associated
    WebProcessProxy objects before we clear m_resourceLoadStatistics as this will causes the
    WebResourceLoadStatisticsStore to get destroyed.
    
    (WebKit::WebsiteDataStore::unregisterWebResourceLoadStatisticsStoreAsMessageReceiver):
    (WebKit::WebsiteDataStore::registerWebResourceLoadStatisticsStoreAsMessageReceiver):
    Add utility functions to register / unregister WebResourceLoadStatisticsStore as a MessageReceiver with
    all associated WebProcessProxy objects.
    
    (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
    Register the new WebResourceLoadStatisticsStore as a MessageReceiver with all associated WebProcessProxy
    objects in case setResourceLoadStatisticsEnabled(true) gets called *after* we've already started
    WebProcesses.
    
    * UIProcess/WebsiteData/WebsiteDataStore.h:
    
    Tools:
    
    Add API test coverage.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:
    (-[DisableITPDuringNavigationDelegate webView:didCommitNavigation:]):
    (-[DisableITPDuringNavigationDelegate webView:didFinishNavigation:]):
    (TEST):
    * TestWebKitAPI/Tests/WebKitCocoa/notify-resourceLoadObserver.html: Added.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234111 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-23  Chris Dumez  <cdumez@apple.com>

            WebResourceLoadStatisticsStore fails to unregister itself as a MessageReceiver in its destructor
            https://bugs.webkit.org/show_bug.cgi?id=187910
            <rdar://problem/42356526>

            Reviewed by Brent Fulgham.

            The WebResourceLoadStatisticsStore was only removing itself as a MessageReceiver from the WebProcessProxy
            and that WebProcessProxy's connection was getting closed. However, it is possible for the
            WebResourceLoadStatisticsStore to get destroyed before this happens. This would lead to crashes such as
            the one in <rdar://problem/42356526>.

            To address the issue, we let the WebsiteDataStore take care of registering / unregistering the
            WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy. This is more reliable since
            the WebsiteDataStore is the one that subclasses WebProcessLifetimeObserver. Make sure the
            WebResourceLoadStatisticsStore is removed as a MessageReceiver whenever the WebsiteDataStore is destroyed
            or WebsiteDataStore::m_resourceLoadStatistics gets cleared.

            * UIProcess/WebResourceLoadStatisticsStore.cpp:
            * UIProcess/WebResourceLoadStatisticsStore.h:
            Drop logic to add / remove the WebResourceLoadStatisticsStore as a receiver now that the
            WebsiteDataStore takes care of it.

            * UIProcess/WebsiteData/WebsiteDataStore.cpp:
            (WebKit::WebsiteDataStore::~WebsiteDataStore):
            Make sure the WebResourceLoadStatisticsStore gets unregistered as a MessageReceiver from all associated
            WebProcessProxy objects when the WebsiteDataStore gets destroyed.

            (WebKit::WebsiteDataStore::webProcessWillOpenConnection):
            (WebKit::WebsiteDataStore::webProcessDidCloseConnection):
            Register / Unregister the WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy.

            (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
            Make sure we unregister the WebResourceLoadStatisticsStore as a MessageReceiver with all associated
            WebProcessProxy objects before we clear m_resourceLoadStatistics as this will causes the
            WebResourceLoadStatisticsStore to get destroyed.

            (WebKit::WebsiteDataStore::unregisterWebResourceLoadStatisticsStoreAsMessageReceiver):
            (WebKit::WebsiteDataStore::registerWebResourceLoadStatisticsStoreAsMessageReceiver):
            Add utility functions to register / unregister WebResourceLoadStatisticsStore as a MessageReceiver with
            all associated WebProcessProxy objects.

            (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
            Register the new WebResourceLoadStatisticsStore as a MessageReceiver with all associated WebProcessProxy
            objects in case setResourceLoadStatisticsEnabled(true) gets called *after* we've already started
            WebProcesses.

            * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234067. rdar://problem/42451597

    Occasional crash under -[WKFormInputSession setSuggestions:]
    https://bugs.webkit.org/show_bug.cgi?id=187869
    <rdar://problem/41357063>
    
    Reviewed by Dean Jackson.
    
    * UIProcess/ios/WKContentViewInteraction.h:
    * UIProcess/ios/WKContentViewInteraction.mm:
    (-[WKContentView inputDelegate]):
    Make inputDelegate weak.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234067 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-20  Tim Horton  <timothy_horton@apple.com>

            Occasional crash under -[WKFormInputSession setSuggestions:]
            https://bugs.webkit.org/show_bug.cgi?id=187869
            <rdar://problem/41357063>

            Reviewed by Dean Jackson.

            * UIProcess/ios/WKContentViewInteraction.h:
            * UIProcess/ios/WKContentViewInteraction.mm:
            (-[WKContentView inputDelegate]):
            Make inputDelegate weak.

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234054. rdar://problem/42451625

    [macOS] Relax WebKit sandbox to permit proper App Store behavior
    https://bugs.webkit.org/show_bug.cgi?id=187831
    <rdar://problem/42047455>
    
    Reviewed by Alexey Proskuryakov.
    
    The Mac App Store is unable to perform some gift card redemption tasks on macOS due to missing sandbox permissions.
    This patch adds those permissions.
    
    * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234054 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-20  Brent Fulgham  <bfulgham@apple.com>

            [macOS] Relax WebKit sandbox to permit proper App Store behavior
            https://bugs.webkit.org/show_bug.cgi?id=187831
            <rdar://problem/42047455>

            Reviewed by Alexey Proskuryakov.

            The Mac App Store is unable to perform some gift card redemption tasks on macOS due to missing sandbox permissions.
            This patch adds those permissions.

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

2018-07-25  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234023. rdar://problem/42451655

    Null pointer dereference under WebPage::autofillLoginCredentials()
    https://bugs.webkit.org/show_bug.cgi?id=187823
    <rdar://problem/37152195>
    
    Reviewed by David Kilzer.
    
    Deal with m_assistedNode being null under WebPage::autofillLoginCredentials().
    
    * WebProcess/WebPage/ios/WebPageIOS.mm:
    (WebKit::WebPage::autofillLoginCredentials):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234023 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-19  Chris Dumez  <cdumez@apple.com>

            Null pointer dereference under WebPage::autofillLoginCredentials()
            https://bugs.webkit.org/show_bug.cgi?id=187823
            <rdar://problem/37152195>

            Reviewed by David Kilzer.

            Deal with m_assistedNode being null under WebPage::autofillLoginCredentials().

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

2018-07-20  Babak Shafiei  <bshafiei@apple.com>

        Revert r233925. rdar://problem/42354959

2018-07-20  Babak Shafiei  <bshafiei@apple.com>

        Revert r233926. rdar://problem/42446531

2018-07-20  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233925. rdar://problem/42354959

    Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
    https://bugs.webkit.org/show_bug.cgi?id=187775
    <rdar://problem/42343229>
    
    Reviewed by Jon Lee.
    
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
            https://bugs.webkit.org/show_bug.cgi?id=187775
            <rdar://problem/42343229>

            Reviewed by Jon Lee.

            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):

2018-07-20  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r234020. rdar://problem/42417121

    [ITP] Crash under ResourceLoadStatisticsMemoryStore::removeDataRecords()
    https://bugs.webkit.org/show_bug.cgi?id=187821
    <rdar://problem/42112693>
    
    Reviewed by David Kilzer.
    
    In two cases, ResourceLoadStatisticsMemoryStore (which lives on a background queue) needs to call WebPageProxy
    operations on the main thread and then dispatch back on the background queue when the operation completes.
    However, it is possible for the ResourceLoadStatisticsMemoryStore to get destroyed on the background queue
    during this time and we would then crash when trying to use m_workQueue to re-dispatch. To address the issue,
    I now ref the work queue in the lambda so that we're guaranteed to be able to re-dispatch to the background
    queue. When we're back on the background queue, we'll realize that weakThis in gone and we'll call the callback
    and return early.
    
    Note that I am not checking weakThis on the main thread as this would not be safe. weakThis should only be
    used on the background queue.
    
    * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
    (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
    (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234020 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-19  Chris Dumez  <cdumez@apple.com>

            [ITP] Crash under ResourceLoadStatisticsMemoryStore::removeDataRecords()
            https://bugs.webkit.org/show_bug.cgi?id=187821
            <rdar://problem/42112693>

            Reviewed by David Kilzer.

            In two cases, ResourceLoadStatisticsMemoryStore (which lives on a background queue) needs to call WebPageProxy
            operations on the main thread and then dispatch back on the background queue when the operation completes.
            However, it is possible for the ResourceLoadStatisticsMemoryStore to get destroyed on the background queue
            during this time and we would then crash when trying to use m_workQueue to re-dispatch. To address the issue,
            I now ref the work queue in the lambda so that we're guaranteed to be able to re-dispatch to the background
            queue. When we're back on the background queue, we'll realize that weakThis in gone and we'll call the callback
            and return early.

            Note that I am not checking weakThis on the main thread as this would not be safe. weakThis should only be
            used on the background queue.

            * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
            (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
            (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):

2018-07-20  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233992. rdar://problem/42417109

    Update iOS fullscreen alert text again
    https://bugs.webkit.org/show_bug.cgi?id=187797
    rdar://problem/42373783
    
    Reviewed by Jer Noble.
    
    Source/WebCore:
    
    * English.lproj/Localizable.strings:
    
    Source/WebKit:
    
    * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
    (-[WKFullScreenViewController _showPhishingAlert]):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233992 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-19  Jon Lee  <jonlee@apple.com>

            Update iOS fullscreen alert text again
            https://bugs.webkit.org/show_bug.cgi?id=187797
            rdar://problem/42373783

            Reviewed by Jer Noble.

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

2018-07-19  Babak Shafiei  <bshafiei@apple.com>

        Revert r233925. rdar://problem/42354959

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233915. rdar://problem/42345407

    Add SPI to defer running async script until after document load
    https://bugs.webkit.org/show_bug.cgi?id=187748
    <rdar://problem/42317378>
    
    Reviewed by Ryosuke Niwa and Tim Horton.
    
    Source/WebCore:
    
    On watchOS, we currently observe that time-consuming async scripts can block the first paint of Reader, leaving
    the user with a blank screen for tens of seconds. One way to mitigate this is to defer async script execution
    until after document load (i.e. the same timing as DOMContentLoaded).
    
    This patch introduces an SPI configuration allowing internal clients to defer execution of asynchronous script
    until after document load; this, in combination with the parser yielding token introduced in r233891, allows
    Safari on watchOS to avoid being blocked on slow script execution before the first paint of the Reader page on
    most article-like pages. See below for more details.
    
    Test: RunScriptAfterDocumentLoad.ExecutionOrderOfScriptsInDocument
    
    * dom/Document.cpp:
    (WebCore::Document::shouldDeferAsynchronousScriptsUntilParsingFinishes const):
    (WebCore::Document::finishedParsing):
    
    Notify ScriptRunner when the Document has finished parsing, and is about to fire DOMContentLoaded.
    
    * dom/Document.h:
    * dom/ScriptRunner.cpp:
    (WebCore::ScriptRunner::documentFinishedParsing):
    
    When the document is finished parsing, kick off the script execution timer if needed to run any async script
    that has been deferred.
    
    (WebCore::ScriptRunner::notifyFinished):
    (WebCore::ScriptRunner::timerFired):
    
    Instead of always taking from the list of async scripts to execute, check our document to see whether we should
    defer this until after document load. If so, ignore `m_scriptsToExecuteSoon`.
    
    * dom/ScriptRunner.h:
    * page/Settings.yaml:
    
    Add a WebCore setting for this behavior.
    
    Source/WebKit:
    
    Add plumbing for a new ShouldDeferAsynchronousScriptsUntilAfterDocumentLoad configuration that determines
    whether async script execution should be deferred until document load (i.e. DOMContentLoaded). This
    configuration defaults to NO on all platforms. See WebCore ChangeLog for more detail.
    
    * Shared/WebPreferences.yaml:
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _initializeWithConfiguration:]):
    * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
    (-[WKWebViewConfiguration init]):
    (-[WKWebViewConfiguration copyWithZone:]):
    (-[WKWebViewConfiguration _shouldDeferAsynchronousScriptsUntilAfterDocumentLoad]):
    (-[WKWebViewConfiguration _setShouldDeferAsynchronousScriptsUntilAfterDocumentLoad:]):
    * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
    
    Tools:
    
    Add an API test to verify that when the deferred async script configuration is set, async scripts will be
    executed after the DOMContentLoaded event.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/RunScriptAfterDocumentLoad.mm: Added.
    (TEST):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233915 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Wenson Hsieh  <wenson_hsieh@apple.com>

            Add SPI to defer running async script until after document load
            https://bugs.webkit.org/show_bug.cgi?id=187748
            <rdar://problem/42317378>

            Reviewed by Ryosuke Niwa and Tim Horton.

            Add plumbing for a new ShouldDeferAsynchronousScriptsUntilAfterDocumentLoad configuration that determines
            whether async script execution should be deferred until document load (i.e. DOMContentLoaded). This
            configuration defaults to NO on all platforms. See WebCore ChangeLog for more detail.

            * Shared/WebPreferences.yaml:
            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _initializeWithConfiguration:]):
            * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
            (-[WKWebViewConfiguration init]):
            (-[WKWebViewConfiguration copyWithZone:]):
            (-[WKWebViewConfiguration _shouldDeferAsynchronousScriptsUntilAfterDocumentLoad]):
            (-[WKWebViewConfiguration _setShouldDeferAsynchronousScriptsUntilAfterDocumentLoad:]):
            * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233891. rdar://problem/42345327

    Add an SPI hook to allow clients to yield document parsing and script execution
    https://bugs.webkit.org/show_bug.cgi?id=187682
    <rdar://problem/42207453>
    
    Reviewed by Ryosuke Niwa.
    
    Source/WebCore:
    
    Using a single web process for both the Reader page and original web page on watchOS has multiple benefits,
    including: (1) allowing the user to bail out of Reader and view the original web page without having to load it
    again, and (2) improving the bringup time of the Reader page, since subresources are already cached in process
    and we don't eat the additional cost of a web process launch if prewarming fails.
    
    However, this has some drawbacks as well, one of which is that main thread work being done on behalf of the
    original page may contend with work being done to load and render the Reader page. This is especially bad when
    the page is in the middle of executing heavy script after Safari has already detected that the Reader version of
    the page is available, but before it has finished loading the Reader page. The result is that script on the
    original page may block the first paint of the Reader page (on New York Times articles, this often leads to an
    apparent page load time of 25-35 seconds before the user sees anything besides a blank screen).
    
    To mitigate this, we introduce a way for injected bundle clients to yield parsing and async script execution on
    a document. This capability is surfaced in the form of an opaque token which clients may request from a
    WKDOMDocument. Construction of the token causes the document to begin yielding and defer execution of previously
    scheduled scripts, only if there were no active tokens on the document already. Similarly, destruction of all
    active tokens on the document causes it to stop yielding and resume execution of scripts if needed.
    
    Tests:  ParserYieldTokenTests.PreventDocumentLoadByTakingParserYieldToken
            ParserYieldTokenTests.TakeMultipleParserYieldTokens
            ParserYieldTokenTests.DeferredScriptExecutesBeforeDocumentLoadWhenTakingParserYieldToken
            ParserYieldTokenTests.AsyncScriptRunsWhenFetched
    
    * dom/Document.cpp:
    (WebCore::Document::implicitOpen):
    
    If the parser yield token was taken before the document's parser was created, tell the parser's scheduler to
    start yielding immediately after creation.
    
    (WebCore::DocumentParserYieldToken::DocumentParserYieldToken):
    (WebCore::DocumentParserYieldToken::~DocumentParserYieldToken):
    * dom/Document.h:
    
    Introduce a parser yield count to Document; as long as this count is greater than 0, we consider the Document to
    have active yield tokens. When constructing or destroying a ParserYieldToken, we increment and decrement the
    parser yield count (respectively).
    
    (WebCore::Document::createParserYieldToken):
    (WebCore::Document::hasActiveParserYieldToken const):
    * dom/DocumentParser.h:
    (WebCore::DocumentParser::didBeginYieldingParser):
    (WebCore::DocumentParser::didEndYieldingParser):
    
    Hooks for Document to tell its parser that we've started or finished yielding. This updates a flag on the
    parser's scheduler which is consulted when we determine whether to yield before a pumping token or executing
    script.
    
    * dom/ScriptRunner.cpp:
    (WebCore::ScriptRunner::resume):
    (WebCore::ScriptRunner::notifyFinished):
    * dom/ScriptRunner.h:
    (WebCore::ScriptRunner::didBeginYieldingParser):
    (WebCore::ScriptRunner::didEndYieldingParser):
    
    Hooks for Document to tell its ScriptRunner that we've started or finished yielding. These wrap calls to suspend
    and resume.
    
    * html/parser/HTMLDocumentParser.cpp:
    (WebCore::HTMLDocumentParser::didBeginYieldingParser):
    (WebCore::HTMLDocumentParser::didEndYieldingParser):
    
    Plumb to didBegin/didEnd calls to the HTMLParserScheduler.
    
    * html/parser/HTMLDocumentParser.h:
    * html/parser/HTMLParserScheduler.cpp:
    (WebCore::HTMLParserScheduler::shouldYieldBeforeExecutingScript):
    * html/parser/HTMLParserScheduler.h:
    (WebCore::HTMLParserScheduler::shouldYieldBeforeToken):
    
    Consult a flag when determining whether to yield. This flag is set to true only while the document has an active
    parser yield token.
    
    (WebCore::HTMLParserScheduler::isScheduledForResume const):
    
    Consider the parser scheduler to be scheduled for resume if there are active tokens. Without this change, we
    incorrectly consider the document to be finished loading when we have yield tokens, since it appears that the
    parser is no longer scheduled to pump its tokenizer.
    
    (WebCore::HTMLParserScheduler::didBeginYieldingParser):
    (WebCore::HTMLParserScheduler::didEndYieldingParser):
    
    When the Document begins yielding due to the documet having active tokens or ends yielding after the document
    loses all of its yield tokens, update a flag on the parser scheduler. After we finish yielding, additionally
    reschedule the parser if needed to ensure that we continue parsing the document; without this additional change
    to resume, we'll never get the document load or load events after relinquishing the yield token.
    
    Source/WebKit:
    
    Add hooks to WKDOMDocument to create and return an internal WKDOMDocumentParserYieldToken object, whose lifetime
    is tied to a document parser yield token. See WebCore ChangeLog for more detail.
    
    * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
    * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:
    (-[WKDOMDocumentParserYieldToken initWithDocument:]):
    (-[WKDOMDocument parserYieldToken]):
    
    Tools:
    
    Add a few tests to exercise the new document yield token SPI, verifying that clients can use the SPI to defer
    document load, and that doing so doesn't cause deferred `script` to execute in the wrong order (i.e. before
    synchronous script, or after "DOMContentLoaded").
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenPlugIn.mm: Added.
    (-[ParserYieldTokenPlugIn takeDocumentParserTokenAfterCommittingLoad]):
    (-[ParserYieldTokenPlugIn releaseDocumentParserToken]):
    (-[ParserYieldTokenPlugIn webProcessPlugInBrowserContextController:didCommitLoadForFrame:]):
    (-[ParserYieldTokenPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
    (-[ParserYieldTokenPlugIn webProcessPlugInBrowserContextController:didFinishDocumentLoadForFrame:]):
    (-[ParserYieldTokenPlugIn webProcessPlugInBrowserContextController:didFinishLoadForFrame:]):
    
    Add an injected bundle object that knows how to take and release multiple document parser yield tokens.
    
    * TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.h: Added.
    * TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm: Added.
    (+[ParserYieldTokenTestWebView webView]):
    (-[ParserYieldTokenTestWebView bundle]):
    (-[ParserYieldTokenTestWebView schemeHandler]):
    (-[ParserYieldTokenTestWebView didFinishDocumentLoad]):
    (-[ParserYieldTokenTestWebView didFinishLoad]):
    (waitForDelay):
    (TEST):
    * TestWebKitAPI/Tests/WebKitCocoa/TestURLSchemeHandler.h: Added.
    * TestWebKitAPI/Tests/WebKitCocoa/TestURLSchemeHandler.mm: Added.
    (-[TestURLSchemeHandler webView:startURLSchemeTask:]):
    (-[TestURLSchemeHandler webView:stopURLSchemeTask:]):
    (-[TestURLSchemeHandler setStartURLSchemeTaskHandler:]):
    (-[TestURLSchemeHandler startURLSchemeTaskHandler]):
    (-[TestURLSchemeHandler setStopURLSchemeTaskHandler:]):
    (-[TestURLSchemeHandler stopURLSchemeTaskHandler]):
    
    Add a new test helper class to handle custom schemes via a block-based API.
    
    * TestWebKitAPI/Tests/WebKitCocoa/text-with-async-script.html: Added.
    
    New test HTML page that contains a deferred script element, a synchronous script element, another deferred
    script element, and then some text, images, and links.
    
    * TestWebKitAPI/Tests/WebKitCocoa/text-with-deferred-script.html: Added.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-17  Wenson Hsieh  <wenson_hsieh@apple.com>

            Add an SPI hook to allow clients to yield document parsing and script execution
            https://bugs.webkit.org/show_bug.cgi?id=187682
            <rdar://problem/42207453>

            Reviewed by Ryosuke Niwa.

            Add hooks to WKDOMDocument to create and return an internal WKDOMDocumentParserYieldToken object, whose lifetime
            is tied to a document parser yield token. See WebCore ChangeLog for more detail.

            * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
            * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:
            (-[WKDOMDocumentParserYieldToken initWithDocument:]):
            (-[WKDOMDocument parserYieldToken]):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233940. rdar://problem/42359640

    CRASH at WebKit: WebKit::WebFullScreenManagerProxy::saveScrollPosition
    https://bugs.webkit.org/show_bug.cgi?id=187769
    <rdar://problem/42160666>
    
    Reviewed by Tim Horton.
    
    Null-check all uses of _page and _manager in WKFullScreenWindowControllerIOS.
    
    * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
    (WebKit::WKWebViewState::applyTo):
    (WebKit::WKWebViewState::store):
    (-[WKFullScreenWindowController enterFullScreen]):
    (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
    (-[WKFullScreenWindowController _completedExitFullScreen]):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233940 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            CRASH at WebKit: WebKit::WebFullScreenManagerProxy::saveScrollPosition
            https://bugs.webkit.org/show_bug.cgi?id=187769
            <rdar://problem/42160666>

            Reviewed by Tim Horton.

            Null-check all uses of _page and _manager in WKFullScreenWindowControllerIOS.

            * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
            (WebKit::WKWebViewState::applyTo):
            (WebKit::WKWebViewState::store):
            (-[WKFullScreenWindowController enterFullScreen]):
            (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
            (-[WKFullScreenWindowController _completedExitFullScreen]):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233939. rdar://problem/42359636

    WebContent crash in WebProcess::ensureNetworkProcessConnection
    https://bugs.webkit.org/show_bug.cgi?id=187791
    <rdar://problem/41995022>
    
    Reviewed by Ryosuke Niwa.
    
    If the WebProcessProxy::GetNetworkProcessConnection synchronous IPC between the WebProcess
    and the UIProcess succeeded but we received an invalid connection identifier, then try
    once more. This may indicate the network process has crashed, in which case it will be
    relaunched.
    
    * WebProcess/WebProcess.cpp:
    (WebKit::getNetworkProcessConnection):
    (WebKit::WebProcess::ensureNetworkProcessConnection):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233939 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Chris Dumez  <cdumez@apple.com>

            WebContent crash in WebProcess::ensureNetworkProcessConnection
            https://bugs.webkit.org/show_bug.cgi?id=187791
            <rdar://problem/41995022>

            Reviewed by Ryosuke Niwa.

            If the WebProcessProxy::GetNetworkProcessConnection synchronous IPC between the WebProcess
            and the UIProcess succeeded but we received an invalid connection identifier, then try
            once more. This may indicate the network process has crashed, in which case it will be
            relaunched.

            * WebProcess/WebProcess.cpp:
            (WebKit::getNetworkProcessConnection):
            (WebKit::WebProcess::ensureNetworkProcessConnection):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233932. rdar://problem/42353789

    The WebContent process does not suspend when MiniBrowser is minimized.
    https://bugs.webkit.org/show_bug.cgi?id=187708
    
    Reviewed by Chris Dumez.
    
    Source/WebCore/PAL:
    
    Add function for enabling App nap.
    
    * pal/spi/cf/CFUtilitiesSPI.h:
    
    Source/WebKit:
    
    Using the NSRunLoop runloop type prevents the WebContent process from suspending. Instead, use the new
    _WebKit runloop type. Also do not leak a boost to the WebContent process, since this also prevents the
    WebContent process from going to sleep. Calling SetApplicationIsDaemon prevents the WebContent process
    from being assigned the application process priority level. To block WindowServer connections, call
    CGSSetDenyWindowServerConnections(true) instead. Finally, App nap must be manually enabled, since the
    WebContent process is no longer a NSApplication.
    
    * Configurations/WebContentService.xcconfig:
    * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
    (WebKit::shouldLeakBoost):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::updateThrottleState):
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::platformInitializeProcess):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233932 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Per Arne Vollan  <pvollan@apple.com>

            The WebContent process does not suspend when MiniBrowser is minimized.
            https://bugs.webkit.org/show_bug.cgi?id=187708

            Reviewed by Chris Dumez.

            Using the NSRunLoop runloop type prevents the WebContent process from suspending. Instead, use the new
            _WebKit runloop type. Also do not leak a boost to the WebContent process, since this also prevents the
            WebContent process from going to sleep. Calling SetApplicationIsDaemon prevents the WebContent process
            from being assigned the application process priority level. To block WindowServer connections, call
            CGSSetDenyWindowServerConnections(true) instead. Finally, App nap must be manually enabled, since the
            WebContent process is no longer a NSApplication.

            * Configurations/WebContentService.xcconfig:
            * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
            (WebKit::shouldLeakBoost):
            * WebProcess/WebPage/WebPage.cpp:
            (WebKit::WebPage::updateThrottleState):
            * WebProcess/cocoa/WebProcessCocoa.mm:
            (WebKit::WebProcess::platformInitializeProcess):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233927. rdar://problem/42354954

    -_beginAnimatedResizeWithUpdates: can leave view in bad state if called during an existing animation
    https://bugs.webkit.org/show_bug.cgi?id=187739
    Source/WebKit:
    
    Reviewed by Tim Horton.
    
    It's not enough to reset _dynamicViewportUpdateMode to NotResizing; other parts of the code
    check whether _resizeAnimationView is non-nil, the contentView may be hidden, etc. Add a new
    internal method _cancelAnimatedResize that cleans up state when a call to
    _beginAnimatedResizeWithUpdates: fails.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _processDidExit]):
    (-[WKWebView _cancelAnimatedResize]):
    (-[WKWebView _didCompleteAnimatedResize]):
    (-[WKWebView _beginAnimatedResizeWithUpdates:]):
    
    Tools:
    
    <rdar://problem/42304518>
    
    Reviewed by Tim Horton.
    
    * TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm:
    (TEST):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233927 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            -_beginAnimatedResizeWithUpdates: can leave view in bad state if called during an existing animation
            https://bugs.webkit.org/show_bug.cgi?id=187739

            Reviewed by Tim Horton.

            It's not enough to reset _dynamicViewportUpdateMode to NotResizing; other parts of the code
            check whether _resizeAnimationView is non-nil, the contentView may be hidden, etc. Add a new
            internal method _cancelAnimatedResize that cleans up state when a call to
            _beginAnimatedResizeWithUpdates: fails.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _processDidExit]):
            (-[WKWebView _cancelAnimatedResize]):
            (-[WKWebView _didCompleteAnimatedResize]):
            (-[WKWebView _beginAnimatedResizeWithUpdates:]):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233926. rdar://problem/42354941

    PiP from Element Fullscreen should match AVKit's behavior
    https://bugs.webkit.org/show_bug.cgi?id=187623
    Source/WebCore:
    
    Reviewed by Jon Lee.
    
    PiP behavior should be defined at the WebKit2 level, and not in HTMLMediaElement:
    
    * html/HTMLMediaElement.cpp:
    (WebCore::HTMLMediaElement::enterFullscreen):
    
    Add an accessor for pictureInPictureWasStartedWhenEnteringBackground():
    
    * platform/cocoa/VideoFullscreenModelVideoElement.mm:
    (VideoFullscreenInterfaceAVKit::pictureInPictureWasStartedWhenEnteringBackground const):
    
    Add VideoFullscreenModelClient virutal methods for PiP change notifications:
    
    * platform/cocoa/VideoFullscreenModel.h:
    (WebCore::VideoFullscreenModelClient::hasVideoChanged):
    (WebCore::VideoFullscreenModelClient::videoDimensionsChanged):
    (WebCore::VideoFullscreenModelClient::willEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::didEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::failedToEnterPictureInPicture):
    (WebCore::VideoFullscreenModelClient::willExitPictureInPicture):
    (WebCore::VideoFullscreenModelClient::didExitPictureInPicture):
    (WebCore::VideoFullscreenModelClient::failedToExitPictureInPicture):
    * platform/cocoa/VideoFullscreenModelVideoElement.h:
    * platform/cocoa/VideoFullscreenModelVideoElement.mm:
    (VideoFullscreenModelVideoElement::willEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::didEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture):
    (VideoFullscreenModelVideoElement::willExitPictureInPicture):
    (VideoFullscreenModelVideoElement::didExitPictureInPicture):
    (VideoFullscreenModelVideoElement::failedToExitPictureInPicture):
    * platform/ios/VideoFullscreenInterfaceAVKit.h:
    * platform/ios/VideoFullscreenInterfaceAVKit.mm:
    (-[WebAVPlayerLayer layoutSublayers]):
    (-[WebAVPlayerLayer resolveBounds]):
    (-[WebAVPlayerLayer setVideoGravity:]):
    (VideoFullscreenInterfaceAVKit::setupFullscreen):
    (VideoFullscreenInterfaceAVKit::presentingViewController):
    (VideoFullscreenInterfaceAVKit::willStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::didStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture):
    (VideoFullscreenInterfaceAVKit::willStopPictureInPicture):
    (VideoFullscreenInterfaceAVKit::didStopPictureInPicture):
    (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
    (VideoFullscreenInterfaceAVKit::doSetup):
    * platform/ios/WebVideoFullscreenControllerAVKit.mm:
    (VideoFullscreenControllerContext::willEnterPictureInPicture):
    (VideoFullscreenControllerContext::didEnterPictureInPicture):
    (VideoFullscreenControllerContext::failedToEnterPictureInPicture):
    (VideoFullscreenControllerContext::willExitPictureInPicture):
    (VideoFullscreenControllerContext::didExitPictureInPicture):
    (VideoFullscreenControllerContext::failedToExitPictureInPicture):
    * platform/mac/VideoFullscreenInterfaceMac.h:
    (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen): Deleted.
    * platform/mac/VideoFullscreenInterfaceMac.mm:
    (-[WebVideoFullscreenInterfaceMacObjC invalidateFullscreenState]):
    (-[WebVideoFullscreenInterfaceMacObjC exitPIP]):
    (-[WebVideoFullscreenInterfaceMacObjC exitPIPAnimatingToRect:inWindow:]):
    (-[WebVideoFullscreenInterfaceMacObjC pipShouldClose:]):
    (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):
    (WebCore::VideoFullscreenInterfaceMac::enterFullscreen):
    (WebCore::VideoFullscreenInterfaceMac::exitFullscreen):
    (WebCore::VideoFullscreenInterfaceMac::exitFullscreenWithoutAnimationToMode):
    (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen):
    
    Source/WebCore/PAL:
    
    Reviewed by Jon Lee.
    
    * pal/spi/mac/PIPSPI.h:
    
    Source/WebKit:
    
    Reviewed by Jon Lee.
    
    * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
    (WebKit::PlaybackSessionManagerProxy::controlsManagerContextId const):
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
    (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
    (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
    (WebKit::VideoFullscreenModelContext::failedToExitPictureInPicture):
    (WebKit::VideoFullscreenManagerProxy::controlsManagerInterface):
    * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
    (WKFullScreenViewControllerVideoFullscreenModelClient::setParent):
    (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
    (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
    (-[WKFullScreenViewController initWithWebView:]):
    (-[WKFullScreenViewController dealloc]):
    (-[WKFullScreenViewController videoControlsManagerDidChange]):
    (-[WKFullScreenViewController ensurePiPAnimator]):
    (-[WKFullScreenViewController willEnterPictureInPicture]):
    (-[WKFullScreenViewController didEnterPictureInPicture]):
    (-[WKFullScreenViewController failedToEnterPictureInPicture]):
    (-[WKFullScreenViewController loadView]):
    (-[WKFullScreenViewController viewWillAppear:]):
    * UIProcess/Cocoa/WebViewImpl.mm:
    (WebKit::WebViewImpl::videoControlsManagerDidChange):
    * UIProcess/mac/WKFullScreenWindowController.h:
    * UIProcess/mac/WKFullScreenWindowController.mm:
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setParent):
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
    (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const):
    (-[WKFullScreenWindowController initWithWindow:webView:page:]):
    (-[WKFullScreenWindowController dealloc]):
    (-[WKFullScreenWindowController videoControlsManagerDidChange]):
    (-[WKFullScreenWindowController willEnterPictureInPicture]):
    
    Tools:
    
    <rdar://problem/41212379>
    
    Reviewed by Jon Lee.
    
    * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
    * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.html: Added.
    * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm: Added.
    (-[ExitFullscreenOnEnterPiPUIDelegate _webView:hasVideoInPictureInPictureDidChange:]):
    (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidEnterFullscreen:]):
    (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidExitFullscreen:]):
    (TestWebKitAPI::TEST):
    
    LayoutTests:
    
    Reviewed by Jon Lee.
    
    * TestExpectations:
    * media/fullscreen-video-going-into-pip-expected.txt: Removed.
    * media/fullscreen-video-going-into-pip.html: Removed.
    * media/video-contained-in-fullscreen-element-going-into-pip-expected.txt: Removed.
    * media/video-contained-in-fullscreen-element-going-into-pip.html: Removed.
    * platform/mac-wk2/TestExpectations:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233926 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            PiP from Element Fullscreen should match AVKit's behavior
            https://bugs.webkit.org/show_bug.cgi?id=187623

            Reviewed by Jon Lee.

            * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
            (WebKit::PlaybackSessionManagerProxy::controlsManagerContextId const):
            * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
            (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
            (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
            (WebKit::VideoFullscreenModelContext::failedToExitPictureInPicture):
            (WebKit::VideoFullscreenManagerProxy::controlsManagerInterface):
            * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
            (WKFullScreenViewControllerVideoFullscreenModelClient::setParent):
            (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
            (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
            (-[WKFullScreenViewController initWithWebView:]):
            (-[WKFullScreenViewController dealloc]):
            (-[WKFullScreenViewController videoControlsManagerDidChange]):
            (-[WKFullScreenViewController ensurePiPAnimator]):
            (-[WKFullScreenViewController willEnterPictureInPicture]):
            (-[WKFullScreenViewController didEnterPictureInPicture]):
            (-[WKFullScreenViewController failedToEnterPictureInPicture]):
            (-[WKFullScreenViewController loadView]):
            (-[WKFullScreenViewController viewWillAppear:]):
            * UIProcess/Cocoa/WebViewImpl.mm:
            (WebKit::WebViewImpl::videoControlsManagerDidChange):
            * UIProcess/mac/WKFullScreenWindowController.h:
            * UIProcess/mac/WKFullScreenWindowController.mm:
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setParent):
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
            (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const):
            (-[WKFullScreenWindowController initWithWindow:webView:page:]):
            (-[WKFullScreenWindowController dealloc]):
            (-[WKFullScreenWindowController videoControlsManagerDidChange]):
            (-[WKFullScreenWindowController willEnterPictureInPicture]):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233925. rdar://problem/42354959

    Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
    https://bugs.webkit.org/show_bug.cgi?id=187775
    <rdar://problem/42343229>
    
    Reviewed by Jon Lee.
    
    * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
    (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-18  Jer Noble  <jer.noble@apple.com>

            Dissociate the VideoFullscreenInterface from its VideoFullscreenModel before removing it from the manager
            https://bugs.webkit.org/show_bug.cgi?id=187775
            <rdar://problem/42343229>

            Reviewed by Jon Lee.

            * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
            (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233905. rdar://problem/42345236

    REGRESSION (iOS 12): Can't scroll to the bottom of the page in WKWebView while keyboard is up on pages with viewport-fit=cover
    https://bugs.webkit.org/show_bug.cgi?id=187743
    <rdar://problem/41651546>
    
    Reviewed by Simon Fraser.
    
    UIScrollView's _systemContentInset no longer includes keyboard insets
    in apps linked on iOS 12+ when contentInsetAdjustmentBehavior is None.
    
    We use contentInsetAdjustmentBehavior to control adjustment of other
    sources of insets, but expect the keyboard inset to always be applied.
    
    For now, barring a more comprehensive way to separate insets, re-add
    the keyboard inset in cases where UIKit does not.
    
    * Platform/spi/ios/UIKitSPI.h:
    Move some IPI to the SPI header.
    
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _haveSetObscuredInsets]):
    * UIProcess/API/Cocoa/WKWebViewInternal.h:
    Make it possible for WKScrollView to check whether the client is overriding insets.
    
    * UIProcess/Cocoa/VersionChecks.h:
    Add a linkedOnOrAfter() version for this new UIScrollView behavior.
    
    * UIProcess/ios/WKScrollView.mm:
    (-[WKScrollView initWithFrame:]):
    Force WKScrollView's scroll indicator to always respect insets. We always
    want the scroll bars in a sensible place, even if the page sets
    viewport-fit=cover.
    
    (-[WKScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]):
    Store the bottom inset due to the keyboard.
    
    (-[WKScrollView _systemContentInset]):
    Add the bottom inset due to the keyboard to the systemContentInset
    in all cases where UIKit does not. Also avoid adding it if the client takes
    full control of the insets, because the only client that does (MobileSafari)
    includes insets-due-to-keyboard in their custom insets.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233905 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-17  Tim Horton  <timothy_horton@apple.com>

            REGRESSION (iOS 12): Can't scroll to the bottom of the page in WKWebView while keyboard is up on pages with viewport-fit=cover
            https://bugs.webkit.org/show_bug.cgi?id=187743
            <rdar://problem/41651546>

            Reviewed by Simon Fraser.

            UIScrollView's _systemContentInset no longer includes keyboard insets
            in apps linked on iOS 12+ when contentInsetAdjustmentBehavior is None.

            We use contentInsetAdjustmentBehavior to control adjustment of other
            sources of insets, but expect the keyboard inset to always be applied.

            For now, barring a more comprehensive way to separate insets, re-add
            the keyboard inset in cases where UIKit does not.

            * Platform/spi/ios/UIKitSPI.h:
            Move some IPI to the SPI header.

            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _haveSetObscuredInsets]):
            * UIProcess/API/Cocoa/WKWebViewInternal.h:
            Make it possible for WKScrollView to check whether the client is overriding insets.

            * UIProcess/Cocoa/VersionChecks.h:
            Add a linkedOnOrAfter() version for this new UIScrollView behavior.

            * UIProcess/ios/WKScrollView.mm:
            (-[WKScrollView initWithFrame:]):
            Force WKScrollView's scroll indicator to always respect insets. We always
            want the scroll bars in a sensible place, even if the page sets
            viewport-fit=cover.

            (-[WKScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]):
            Store the bottom inset due to the keyboard.

            (-[WKScrollView _systemContentInset]):
            Add the bottom inset due to the keyboard to the systemContentInset
            in all cases where UIKit does not. Also avoid adding it if the client takes
            full control of the insets, because the only client that does (MobileSafari)
            includes insets-due-to-keyboard in their custom insets.

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233904. rdar://problem/42345140

    RELEASE_ASSERT() under IPC::Connection::sendSync() from PluginProxy::supportsSnapshotting()
    https://bugs.webkit.org/show_bug.cgi?id=187740
    <rdar://problem/41818955>
    
    Reviewed by Youenn Fablet.
    
    As per the crash trace, PluginProxy::supportsSnapshotting() can be called during layout but does synchronous
    IPC. As a result, we need to prevent WebCore re-entrancy by using DoNotProcessIncomingMessagesWhenWaitingForSyncReply
    sendOption.
    
    * WebProcess/Plugins/PluginProxy.cpp:
    (WebKit::PluginProxy::supportsSnapshotting const):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233904 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-17  Chris Dumez  <cdumez@apple.com>

            RELEASE_ASSERT() under IPC::Connection::sendSync() from PluginProxy::supportsSnapshotting()
            https://bugs.webkit.org/show_bug.cgi?id=187740
            <rdar://problem/41818955>

            Reviewed by Youenn Fablet.

            As per the crash trace, PluginProxy::supportsSnapshotting() can be called during layout but does synchronous
            IPC. As a result, we need to prevent WebCore re-entrancy by using DoNotProcessIncomingMessagesWhenWaitingForSyncReply
            sendOption.

            * WebProcess/Plugins/PluginProxy.cpp:
            (WebKit::PluginProxy::supportsSnapshotting const):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233888. rdar://problem/42345191

    Add completion handlers to TestRunner functions setStatisticsLastSeen(), setStatisticsPrevalentResource(), setStatisticsVeryPrevalentResource(), setStatisticsHasHadUserInteraction(), and setStatisticsHasHadNonRecentUserInteraction()
    https://bugs.webkit.org/show_bug.cgi?id=187710
    <rdar://problem/42252757>
    
    Reviewed by Chris Dumez.
    
    Source/WebKit:
    
    These changes are to back the completion handler functionality of
    TestRunner functions:
    - setStatisticsLastSeen(),
    - setStatisticsPrevalentResource(),
    - setStatisticsVeryPrevalentResource(),
    - setStatisticsHasHadUserInteraction(), and
    - setStatisticsHasHadNonRecentUserInteraction().
    
    * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
    (WKWebsiteDataStoreSetStatisticsLastSeen):
    (WKWebsiteDataStoreSetStatisticsPrevalentResource):
    (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
    (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
    (WKWebsiteDataStoreSetStatisticsHasHadNonRecentUserInteraction):
    * UIProcess/API/C/WKWebsiteDataStoreRef.h:
    * UIProcess/WebResourceLoadStatisticsStore.cpp:
    (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
    (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
    (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
    (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
    (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
    (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
    (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
    * UIProcess/WebResourceLoadStatisticsStore.h:
    
    Tools:
    
    * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
    * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
    (WTR::InjectedBundle::didReceiveMessageToPage):
    * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
    (WTR::TestRunner::setStatisticsLastSeen):
    (WTR::TestRunner::statisticsCallDidSetLastSeenCallback):
    (WTR::TestRunner::setStatisticsPrevalentResource):
    (WTR::TestRunner::statisticsCallDidSetPrevalentResourceCallback):
    (WTR::TestRunner::setStatisticsVeryPrevalentResource):
    (WTR::TestRunner::statisticsCallDidSetVeryPrevalentResourceCallback):
    (WTR::TestRunner::setStatisticsHasHadUserInteraction):
    (WTR::TestRunner::setStatisticsHasHadNonRecentUserInteraction):
    (WTR::TestRunner::statisticsCallDidSetHasHadUserInteractionCallback):
    * WebKitTestRunner/InjectedBundle/TestRunner.h:
    * WebKitTestRunner/TestController.cpp:
    (WTR::TestController::setStatisticsLastSeen):
    (WTR::TestController::setStatisticsPrevalentResource):
    (WTR::TestController::setStatisticsVeryPrevalentResource):
    (WTR::TestController::setStatisticsHasHadUserInteraction):
    (WTR::TestController::setStatisticsHasHadNonRecentUserInteraction):
    * WebKitTestRunner/TestInvocation.cpp:
    (WTR::TestInvocation::didSetLastSeen):
    (WTR::TestInvocation::didSetPrevalentResource):
    (WTR::TestInvocation::didSetVeryPrevalentResource):
    (WTR::TestInvocation::didSetHasHadUserInteraction):
    (WTR::TestInvocation::didSetHasHadNonRecentUserInteraction):
    * WebKitTestRunner/TestInvocation.h:
    
    LayoutTests:
    
    These changes are to update all test cases that make use of
    TestRunner functions:
    - setStatisticsLastSeen(),
    - setStatisticsPrevalentResource(),
    - setStatisticsVeryPrevalentResource(),
    - setStatisticsHasHadUserInteraction(), and
    - setStatisticsHasHadNonRecentUserInteraction().
    
    * http/tests/resourceLoadStatistics/add-blocking-to-redirect.html:
    * http/tests/resourceLoadStatistics/add-partitioning-to-redirect.html:
    * http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html:
    * http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html:
    * http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html:
    * http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent.html:
    * http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to.html:
    * http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics.html:
    * http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html:
    * http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html:
    * http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html:
    * http/tests/resourceLoadStatistics/grandfathering.html:
    * http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html:
    * http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html:
    * http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html:
    * http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:
    * http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout-expected.txt:
    * http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html:
    * http/tests/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:
    * http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown.html:
    * http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown.html:
    * http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html:
    * http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:
    * http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction.html:
    * http/tests/resourceLoadStatistics/prune-statistics.html:
    * http/tests/resourceLoadStatistics/remove-blocking-in-redirect.html:
    * http/tests/resourceLoadStatistics/remove-partitioning-in-redirect.html:
    * http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects.html:
    * http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests.html:
    * http/tests/resourceLoadStatistics/telemetry-generation.html:
    * http/tests/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction.html:
    * http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html:
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233888 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-17  John Wilander  <wilander@apple.com>

            Add completion handlers to TestRunner functions setStatisticsLastSeen(), setStatisticsPrevalentResource(), setStatisticsVeryPrevalentResource(), setStatisticsHasHadUserInteraction(), and setStatisticsHasHadNonRecentUserInteraction()
            https://bugs.webkit.org/show_bug.cgi?id=187710
            <rdar://problem/42252757>

            Reviewed by Chris Dumez.

            These changes are to back the completion handler functionality of
            TestRunner functions:
            - setStatisticsLastSeen(),
            - setStatisticsPrevalentResource(),
            - setStatisticsVeryPrevalentResource(),
            - setStatisticsHasHadUserInteraction(), and
            - setStatisticsHasHadNonRecentUserInteraction().

            * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
            (WKWebsiteDataStoreSetStatisticsLastSeen):
            (WKWebsiteDataStoreSetStatisticsPrevalentResource):
            (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
            (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
            (WKWebsiteDataStoreSetStatisticsHasHadNonRecentUserInteraction):
            * UIProcess/API/C/WKWebsiteDataStoreRef.h:
            * UIProcess/WebResourceLoadStatisticsStore.cpp:
            (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
            (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
            (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
            (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
            (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
            (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
            (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
            * UIProcess/WebResourceLoadStatisticsStore.h:

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233877. rdar://problem/42344047

    Add color filter for transforming colors in Dark Mode
    https://bugs.webkit.org/show_bug.cgi?id=187717
    Source/WebCore:
    
    rdar://problem/41146650
    
    Reviewed by Dean Jackson.
    
    Add a new filter function for use in -apple-color-filter for transforming colors
    when in Dark Mode. The filter is called apple-invert-lightness(), and takes no parameters.
    It's based on a lightness invert in HSL space, with some adjustments to improve the contrast
    of some colors on dark backgrounds, so does a much better job that using invert() with hue-rotate().
    
    Test: css3/color-filters/color-filter-apple-invert-lightness.html
    
    * css/CSSComputedStyleDeclaration.cpp:
    (WebCore::ComputedStyleExtractor::valueForFilter):
    * css/CSSValueKeywords.in:
    * css/StyleResolver.cpp:
    (WebCore::filterOperationForType):
    (WebCore::StyleResolver::createFilterOperations):
    * css/parser/CSSPropertyParser.cpp:
    (WebCore::CSSPropertyParser::parseSingleValue):
    * css/parser/CSSPropertyParserHelpers.cpp:
    (WebCore::CSSPropertyParserHelpers::consumeFilterImage):
    (WebCore::CSSPropertyParserHelpers::isPixelFilterFunction):
    (WebCore::CSSPropertyParserHelpers::isColorFilterFunction):
    (WebCore::CSSPropertyParserHelpers::consumeFilterFunction):
    (WebCore::CSSPropertyParserHelpers::consumeFilter):
    (WebCore::CSSPropertyParserHelpers::isValidPrimitiveFilterFunction): Deleted.
    * css/parser/CSSPropertyParserHelpers.h:
    * page/FrameView.cpp:
    (WebCore::FrameView::paintContents):
    * platform/graphics/Color.cpp:
    * platform/graphics/ColorUtilities.cpp:
    (WebCore::sRGBToLinearComponents):
    (WebCore::linearToSRGBComponents):
    (WebCore::sRGBToLinearColorComponentForLuminance):
    (WebCore::luminance):
    (WebCore::sRGBToHSL):
    (WebCore::calcHue):
    (WebCore::HSLToSRGB):
    (WebCore::ColorMatrix::ColorMatrix):
    * platform/graphics/ColorUtilities.h:
    * platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:
    (PlatformCAFilters::filterValueForOperation):
    (PlatformCAFilters::colorMatrixValueForFilter):
    * platform/graphics/filters/FEColorMatrix.cpp:
    * platform/graphics/filters/FilterOperation.cpp:
    (WebCore::InvertLightnessFilterOperation::operator== const):
    (WebCore::InvertLightnessFilterOperation::blend):
    (WebCore::InvertLightnessFilterOperation::transformColor const):
    (WebCore::operator<<):
    * platform/graphics/filters/FilterOperation.h:
    * rendering/FilterEffectRenderer.cpp:
    (WebCore::FilterEffectRenderer::build):
    
    Source/WebKit:
    
    Reviewed by Dean Jackson.
    
    * Shared/WebCoreArgumentCoders.cpp:
    (IPC::ArgumentCoder<FilterOperation>::encode):
    (IPC::decodeFilterOperation):
    
    LayoutTests:
    
    rdar://problem/41146650
    
    Reviewed by Dean Jackson.
    
    * css3/color-filters/color-filter-apple-invert-lightness-expected.html: Added.
    * css3/color-filters/color-filter-apple-invert-lightness.html: Added.
    * css3/color-filters/color-filter-parsing-expected.txt:
    * css3/color-filters/color-filter-parsing.html:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233877 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Simon Fraser  <simon.fraser@apple.com>

            Add color filter for transforming colors in Dark Mode
            https://bugs.webkit.org/show_bug.cgi?id=187717

            Reviewed by Dean Jackson.

            * Shared/WebCoreArgumentCoders.cpp:
            (IPC::ArgumentCoder<FilterOperation>::encode):
            (IPC::decodeFilterOperation):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233876. rdar://problem/42345027

    Black flash in content area when returning to Mail
    https://bugs.webkit.org/show_bug.cgi?id=187719
    <rdar://problem/42165340>
    
    Reviewed by Wenson Hsieh.
    
    * UIProcess/ios/WebPageProxyIOS.mm:
    (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground):
    This still reproduces sometimes even after r233723, because:
    
    If a pending commit arrives after ApplicationDidEnterBackground (when we
    ask the web content process to freeze the layer tree), and after
    ApplicationDidFinishSnapshottingAfterEnteringBackground (when we hide
    WKContentView), but before the process sleeps, it will cause WKContentView
    to be unhidden (potentially including layers with empty surfaces as contents).
    Nothing will re-hide WKContentView. Instead, we should wait for the next
    *pending* commit, which will necessarily not come until after the application
    returns to the foreground because of the strict IPC ordering between
    the message that freezes the layer tree and the "next commit" mechanism.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233876 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Tim Horton  <timothy_horton@apple.com>

            Black flash in content area when returning to Mail
            https://bugs.webkit.org/show_bug.cgi?id=187719
            <rdar://problem/42165340>

            Reviewed by Wenson Hsieh.

            * UIProcess/ios/WebPageProxyIOS.mm:
            (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground):
            This still reproduces sometimes even after r233723, because:

            If a pending commit arrives after ApplicationDidEnterBackground (when we
            ask the web content process to freeze the layer tree), and after
            ApplicationDidFinishSnapshottingAfterEnteringBackground (when we hide
            WKContentView), but before the process sleeps, it will cause WKContentView
            to be unhidden (potentially including layers with empty surfaces as contents).
            Nothing will re-hide WKContentView. Instead, we should wait for the next
            *pending* commit, which will necessarily not come until after the application
            returns to the foreground because of the strict IPC ordering between
            the message that freezes the layer tree and the "next commit" mechanism.

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233872. rdar://problem/42345272

    Source/WebCore:
    [iOS] When bringing MobileSafari to the foreground, images, which are pending decoding, won't be drawn into the flush immediate transaction
    https://bugs.webkit.org/show_bug.cgi?id=187375
    
    Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-07-16
    Reviewed by Simon Fraser.
    
    An immediate-paint transaction should force all the images which are pending
    decoding to be repainted.
    
    To do that, FrameView::paintControlTints() will be re-factored to a new
    generic function such that it takes PaintInvalidationReasons. The new function
    which is named 'traverseForPaintInvalidation' will traverse the render tree
    for a specific PaintInvalidationReasons.
    
    invalidateImagesWithAsyncDecodes() will stop the asynchronous decoding for
    the underlying image and repaint all the clients which are waiting for the
    decoding to finish.
    
    * loader/cache/CachedImage.cpp:
    (WebCore::CachedImage::didRemoveClient):
    (WebCore::CachedImage::isClientWaitingForAsyncDecoding const):
    (WebCore::CachedImage::addClientWaitingForAsyncDecoding):
    (WebCore::CachedImage::removeAllClientsWaitingForAsyncDecoding):
    (WebCore::CachedImage::allClientsRemoved):
    (WebCore::CachedImage::clear):
    (WebCore::CachedImage::createImage):
    (WebCore::CachedImage::imageFrameAvailable):
    (WebCore::CachedImage::addPendingImageDrawingClient): Deleted.
    * loader/cache/CachedImage.h:
    * page/FrameView.cpp:
    (WebCore::FrameView::paintScrollCorner):
    (WebCore::FrameView::updateControlTints):
    (WebCore::FrameView::traverseForPaintInvalidation):
    (WebCore::FrameView::adjustPageHeightDeprecated):
    (WebCore::FrameView::paintControlTints): Deleted.
    * page/FrameView.h:
    * platform/ScrollView.cpp:
    (WebCore::ScrollView::paint):
    * platform/Scrollbar.cpp:
    (WebCore::Scrollbar::paint):
    * platform/graphics/BitmapImage.h:
    * platform/graphics/GraphicsContext.cpp:
    (WebCore::GraphicsContext::GraphicsContext):
    * platform/graphics/GraphicsContext.h:
    (WebCore::GraphicsContext::performingPaintInvalidation const):
    (WebCore::GraphicsContext::invalidatingControlTints const):
    (WebCore::GraphicsContext::invalidatingImagesWithAsyncDecodes const):
    (WebCore::GraphicsContext::updatingControlTints const): Deleted.
    * rendering/RenderBoxModelObject.cpp:
    (WebCore::RenderBoxModelObject::paintFillLayerExtended):
    * rendering/RenderImage.cpp:
    (WebCore::RenderImage::paintReplaced):
    (WebCore::RenderImage::paintAreaElementFocusRing):
    (WebCore::RenderImage::paintIntoRect):
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::paintScrollCorner):
    (WebCore::RenderLayer::paintResizer):
    (WebCore::RenderLayer::paintLayer):
    * rendering/RenderScrollbar.cpp:
    (WebCore::RenderScrollbar::paint):
    * rendering/RenderTheme.cpp:
    (WebCore::RenderTheme::paint):
    * testing/Internals.cpp:
    (WebCore::Internals::invalidateControlTints):
    (WebCore::Internals::paintControlTints): Deleted.
    * testing/Internals.h:
    * testing/Internals.idl:
    
    Source/WebKit:
    [iOS] When bringing MobileSafari to the foreground, images, which are pending decoding, won't be drawn into the immediate-paint transaction
    https://bugs.webkit.org/show_bug.cgi?id=187375
    
    Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-07-16
    Reviewed by Simon Fraser.
    
    For immediate-paint transaction, we should force all the images which are
    pending decoding to be repainted before building this transaction.
    
    * WebProcess/Plugins/PDF/PDFPlugin.mm:
    (WebKit::PDFPlugin::updateControlTints):
    * WebProcess/Plugins/PluginView.cpp:
    (WebKit::PluginView::paint):
    * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
    (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
    
    LayoutTests:
    [iOS] When bringing MobileSafari to the foreground, images, which are pending decoding, won't be drawn into the immediate-paint transaction
    https://bugs.webkit.org/show_bug.cgi?id=187375
    
    Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-07-16
    Reviewed by Simon Fraser.
    
    The Internals API paintControlTints() is now renamed to invalidateControlTints()
    to be consistent with the new enum values and with the new name of the
    C++ function.
    
    * fast/css/webkit-mask-crash-fieldset-legend.html:
    * fast/css/webkit-mask-crash-figure.html:
    * fast/css/webkit-mask-crash-table.html:
    * fast/css/webkit-mask-crash-td-2.html:
    * fast/css/webkit-mask-crash-td.html:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233872 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Said Abou-Hallawa  <sabouhallawa@apple.com>

            [iOS] When bringing MobileSafari to the foreground, images, which are pending decoding, won't be drawn into the immediate-paint transaction
            https://bugs.webkit.org/show_bug.cgi?id=187375

            Reviewed by Simon Fraser.

            For immediate-paint transaction, we should force all the images which are
            pending decoding to be repainted before building this transaction.

            * WebProcess/Plugins/PDF/PDFPlugin.mm:
            (WebKit::PDFPlugin::updateControlTints):
            * WebProcess/Plugins/PluginView.cpp:
            (WebKit::PluginView::paint):
            * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
            (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233869. rdar://problem/42344023

    Allow removal of white backgrounds
    https://bugs.webkit.org/show_bug.cgi?id=187574
    <rdar://problem/41146792>
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    Add a drawing mode that turns white backgrounds into transparent
    regions, such that a hosting app can see through to its window.
    
    Test: css3/color-filters/punch-out-white-backgrounds.html
    
    * page/Settings.yaml: New Setting.
    
    * rendering/InlineFlowBox.cpp: Draw with a destination out blend mode
    if the background is white and we are punching out backgrounds, which means
    that it will erase the destination.
    (WebCore::InlineFlowBox::paintBoxDecorations):
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::paintBackground): Ditto.
    * rendering/RenderTableCell.cpp:
    (WebCore::RenderTableCell::paintBackgroundsBehindCell): Ditto.
    
    * rendering/RenderBoxModelObject.cpp:
    (WebCore::RenderBoxModelObject::paintFillLayerExtended): Save and restore
    the composition mode if necessary.
    
    Source/WebKit:
    
    Add a new WebPreference for punching out white backgrounds.
    
    * Shared/WebPreferences.yaml:
    * UIProcess/API/C/WKPreferences.cpp:
    (WKPreferencesSetPunchOutWhiteBackgroundsInDarkMode):
    (WKPreferencesGetPunchOutWhiteBackgroundsInDarkMode):
    * UIProcess/API/C/WKPreferencesRefPrivate.h:
    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _initializeWithConfiguration:]):
    * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
    (-[WKWebViewConfiguration init]):
    (-[WKWebViewConfiguration copyWithZone:]):
    (-[WKWebViewConfiguration _punchOutWhiteBackgroundsInDarkMode]):
    (-[WKWebViewConfiguration _setPunchOutWhiteBackgroundsInDarkMode:]):
    * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
    
    Source/WebKitLegacy/mac:
    
    Add a new WebPreference for punching out white backgrounds.
    
    * WebView/WebPreferenceKeysPrivate.h:
    * WebView/WebPreferences.mm:
    (+[WebPreferences initialize]):
    (-[WebPreferences punchOutWhiteBackgroundsInDarkMode]):
    (-[WebPreferences setPunchOutWhiteBackgroundsInDarkMode:]):
    * WebView/WebPreferencesPrivate.h:
    * WebView/WebView.mm:
    (-[WebView _preferencesChanged:]):
    
    Tools:
    
    Add a new menu item for punching out white backgrounds in MiniBrowser.
    In WebKitTestRunner, expose the new setting and hook that up to
    drawing a background in the WebView.
    
    * MiniBrowser/mac/AppDelegate.m:
    (defaultConfiguration): Add _punchOutWhiteBackgroundsInDarkMode.
    
    * MiniBrowser/mac/SettingsController.h: Ditto.
    * MiniBrowser/mac/SettingsController.m:
    (-[SettingsController _populateMenu]):
    (-[SettingsController validateMenuItem:]):
    (-[SettingsController togglePunchOutWhiteBackgroundsInDarkMode:]):
    (-[SettingsController punchOutWhiteBackgroundsInDarkMode]):
    
    * MiniBrowser/mac/WK1BrowserWindowController.m:
    (-[WK1BrowserWindowController didChangeSettings]): Set the new preference.
    
    * WebKitTestRunner/PlatformWebView.h: Expose a drawsBackground property.
    * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp: Null implementation.
    (WTR::PlatformWebView::drawsBackground const):
    (WTR::PlatformWebView::setDrawsBackground):
    * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp: Ditto.
    (WTR::PlatformWebView::drawsBackground const):
    (WTR::PlatformWebView::setDrawsBackground):
    * WebKitTestRunner/ios/PlatformWebViewIOS.mm: Call into the WKWebView and
    set its SPI.
    (WTR::PlatformWebView::drawsBackground const):
    (WTR::PlatformWebView::setDrawsBackground):
    * WebKitTestRunner/mac/PlatformWebViewMac.mm: Ditto.
    (WTR::PlatformWebView::drawsBackground const):
    (WTR::PlatformWebView::setDrawsBackground):
    
    * WebKitTestRunner/TestController.cpp: Reset and copy the new preference.
    (WTR::TestController::resetPreferencesToConsistentValues):
    (WTR::updateTestOptionsFromTestHeader):
    * WebKitTestRunner/TestOptions.h:
    (WTR::TestOptions::hasSameInitializationOptions const):
    
    * WebKitTestRunner/cocoa/TestControllerCocoa.mm:
    (WTR::TestController::platformCreateWebView): If the option for punching
    out the background was set, tell the WebView to not draw its background.
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233869 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-11  Dean Jackson  <dino@apple.com>

            Allow removal of white backgrounds
            https://bugs.webkit.org/show_bug.cgi?id=187574
            <rdar://problem/41146792>

            Reviewed by Simon Fraser.

            Add a new WebPreference for punching out white backgrounds.

            * Shared/WebPreferences.yaml:
            * UIProcess/API/C/WKPreferences.cpp:
            (WKPreferencesSetPunchOutWhiteBackgroundsInDarkMode):
            (WKPreferencesGetPunchOutWhiteBackgroundsInDarkMode):
            * UIProcess/API/C/WKPreferencesRefPrivate.h:
            * UIProcess/API/Cocoa/WKWebView.mm:
            (-[WKWebView _initializeWithConfiguration:]):
            * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
            (-[WKWebViewConfiguration init]):
            (-[WKWebViewConfiguration copyWithZone:]):
            (-[WKWebViewConfiguration _punchOutWhiteBackgroundsInDarkMode]):
            (-[WKWebViewConfiguration _setPunchOutWhiteBackgroundsInDarkMode:]):
            * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233865. rdar://problem/42343023

    Fullscreen requires active document.
    https://bugs.webkit.org/show_bug.cgi?id=186226
    rdar://problem/36187413
    
    Patch by Jeremy Jones <jeremyj@apple.com> on 2018-07-16
    Reviewed by Jer Noble.
    
    Source/WebCore:
    
    Test: media/no-fullscreen-when-hidden.html
    
    This change guarantees the document to be visible for both element fullscreen and video fullscreen.
    
    User gesture is not enough to guarantee that the document is visible when fullscreen is initiated
    because JavaScript can spin wait before initiating fullscreen. During that spin the page or window might
    be hidden.
    
    Document::hidden() can't be relied upon because it won't update while JavaScript spins.
    
    This change adds a sync call to the UI process to get the current UI visibility state.
    
    * dom/Document.cpp:
    (WebCore::Document::requestFullScreenForElement):
    * html/HTMLMediaElement.cpp:
    (WebCore::HTMLMediaElement::enterFullscreen):
    * page/ChromeClient.h:
    
    Source/WebKit:
    
    This change guarantees the document to be visible for both element fullscreen and video fullscreen.
    
    User gesture is not enough to guarantee that the document is visible when fullscreen is initiated
    because JavaScript can spin wait before initiating fullscreen. During that spin the page or window might
    be hidden.
    
    Document::hidden() can't be relied upon because it won't update while JavaScript spins.
    
    This change adds a sync call to the UI process to get the current UI visibility state.
    
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::getIsViewVisible):
    * UIProcess/WebPageProxy.h:
    * UIProcess/WebPageProxy.messages.in:
    * WebProcess/WebCoreSupport/WebChromeClient.cpp:
    (WebKit::WebChromeClient::isViewVisible):
    * WebProcess/WebCoreSupport/WebChromeClient.h:
    
    LayoutTests:
    
    This change guarantees the document to be visible for both element fullscreen and video fullscreen.
    
    User gesture is not enough to guarantee that the document is visible when fullscreen is initiated
    because JavaScript can spin wait before initiating fullscreen. During that spin the page or window might
    be hidden.
    
    Document::hidden() can't be relied upon because it won't update while JavaScript spins.
    
    This change adds a sync call to the UI process to get the current UI visibility state.
    
    * media/no-fullscreen-when-hidden.html: Added.
    * media/video-test.js:
    (eventName.string_appeared_here.thunk):
    (runWithKeyDown):
    * platform/ios-wk1/TestExpectations:
    * platform/mac-wk1/TestExpectations:
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233865 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Jeremy Jones  <jeremyj@apple.com>

            Fullscreen requires active document.
            https://bugs.webkit.org/show_bug.cgi?id=186226
            rdar://problem/36187413

            Reviewed by Jer Noble.

            This change guarantees the document to be visible for both element fullscreen and video fullscreen.

            User gesture is not enough to guarantee that the document is visible when fullscreen is initiated
            because JavaScript can spin wait before initiating fullscreen. During that spin the page or window might
            be hidden.

            Document::hidden() can't be relied upon because it won't update while JavaScript spins.

            This change adds a sync call to the UI process to get the current UI visibility state.

            * UIProcess/WebPageProxy.cpp:
            (WebKit::WebPageProxy::getIsViewVisible):
            * UIProcess/WebPageProxy.h:
            * UIProcess/WebPageProxy.messages.in:
            * WebProcess/WebCoreSupport/WebChromeClient.cpp:
            (WebKit::WebChromeClient::isViewVisible):
            * WebProcess/WebCoreSupport/WebChromeClient.h:

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233864. rdar://problem/42344962

    REGRESSION (r233502): Camera in <input type=file> becomes unresponsive after attempting to dismiss it
    https://bugs.webkit.org/show_bug.cgi?id=187706
    <rdar://problem/42137088>
    
    Reviewed by Wenson Hsieh.
    
    * UIProcess/ios/forms/WKFileUploadPanel.mm:
    Remove an unused member.
    
    (-[WKFileUploadPanel _dismissDisplayAnimated:]):
    Allow us to dismiss the camera view controller in addition to the menu.
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233864 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Tim Horton  <timothy_horton@apple.com>

            REGRESSION (r233502): Camera in <input type=file> becomes unresponsive after attempting to dismiss it
            https://bugs.webkit.org/show_bug.cgi?id=187706
            <rdar://problem/42137088>

            Reviewed by Wenson Hsieh.

            * UIProcess/ios/forms/WKFileUploadPanel.mm:
            Remove an unused member.

            (-[WKFileUploadPanel _dismissDisplayAnimated:]):
            Allow us to dismiss the camera view controller in addition to the menu.

2018-07-18  Babak Shafiei  <bshafiei@apple.com>

        Cherry-pick r233853. rdar://problem/42344991

    IndexedDB: closeAndDeleteDatabasesForOrigins should remove all databases for those origins
    https://bugs.webkit.org/show_bug.cgi?id=187631
    <rdar://problem/42164227>
    
    Reviewed by Brady Eidson.
    
    Source/WebCore:
    
    When asked to delete database for an origin, we deleted the databases whose mainFrameOrigin
    is that origin. Given that the origin may create IndexedDB from subframes, we should delete
    databases whose openingOrigin is that origin too.
    
    Covered by modified API test: WebKit.WebsiteDataStoreCustomPaths.
    
    * Modules/indexeddb/server/IDBServer.cpp:
    (WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
    
    Source/WebKit:
    
    We need to return all origins, both openingOrigin and mainFrameOrigin, of IndexedDB so users
    could be better aware of which origins are using databases and decide what they want to
    remove.
    
    * StorageProcess/StorageProcess.cpp:
    (WebKit::StorageProcess::indexedDatabaseOrigins):
    * StorageProcess/StorageProcess.h:
    
    Tools:
    
    * TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
    (TEST):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2018-07-16  Sihui Liu  <sihui_liu@apple.com>

            IndexedDB: closeAndDeleteDatabasesForOrigins should remove all databases for those origins
            https://bugs.webkit.org/show_bug.cgi?id=187631
            <rdar://problem/42164227>

            Reviewed by Brady Eidson.

            We need to return all origins, both openingOrigin and mainFrameOrigin, of IndexedDB so users
            could be better aware of which origins are using databases and decide what they want to
            remove.

            * StorageProcess/StorageProcess.cpp:
            (WebKit::StorageProcess::indexedDatabaseOrigins):
            * StorageProcess/StorageProcess.h:

2018-07-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] http/tests/misc/bubble-drag-events.html crashes
        https://bugs.webkit.org/show_bug.cgi?id=182352

        Reviewed by Youenn Fablet.

        PingLoad is not refcounted and deletes itself when the load finishes. The problem is that the network data
        task can also finish the load, causing the PingLoad to be deleted early. We tried to fix it in r233032 in the
        network data task soup implementation, but it caused regressions.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::didReceiveChallenge): Create a weak ref for the ping load before calling the operation completion
        handler and return early after the completion handler if it was deleted.
        (WebKit::PingLoad::didReceiveResponseNetworkSession): Ditto.
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::continueAuthenticate): Revert r233032.

2018-07-13  Timothy Hatcher  <timothy@apple.com>

        Add _drawsBackground to WKWebViewConfiguration.
        https://bugs.webkit.org/show_bug.cgi?id=187665
        rdar://problem/42182268

        Reviewed by Tim Horton.

        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy const): Copy m_drawsBackground, and some missing values.
        * UIProcess/API/APIPageConfiguration.h:
        (API::PageConfiguration::drawsBackground const): Added.
        (API::PageConfiguration::setDrawsBackground): Added.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Transfer _drawsBackground to page config.
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]): Set _drawsBackground to YES.
        (-[WKWebViewConfiguration encodeWithCoder:]): Encode _drawsBackground.
        (-[WKWebViewConfiguration initWithCoder:]): Decode _drawsBackground.
        (-[WKWebViewConfiguration copyWithZone:]): Copy _drawsBackground.
        (-[WKWebViewConfiguration _drawsBackground]): Added.
        (-[WKWebViewConfiguration _setDrawsBackground:]): Added.
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/WebPageProxy.cpp: Set m_drawsBackground based on configuration.

2018-07-13  Tim Horton  <timothy_horton@apple.com>

        WebKit sometimes holds WiFi/BT assertions while the Networking process is suspended
        https://bugs.webkit.org/show_bug.cgi?id=187662
        <rdar://problem/41999448>

        Reviewed by Chris Dumez.

        Inform WiFiAssertions when the Networking process is first going into the background,
        so it has a chance of dropping its assertions even in cases where the system
        suspends the process before we receive prepareToSuspend.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::processDidTransitionToForeground):
        (WebKit::NetworkProcess::processDidTransitionToBackground):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
        (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
        (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::sendProcessDidTransitionToForeground):
        (WebKit::NetworkProcessProxy::sendProcessDidTransitionToBackground):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::updateProcessAssertions):
        Plumb the foreground/background transition to NetworkProcess.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformPrepareToSuspend):
        (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
        (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
        Make use of SuspensionReason to explain to WiFiAssertions the
        difference between prepareToSuspend and didTransitionToBackground,
        so that it can adjust the timing of dropping the assertion.

2018-07-13  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r231676): watchOS WebKit usually doesn't load in the background
        https://bugs.webkit.org/show_bug.cgi?id=187663
        <rdar://problem/42181185>

        Reviewed by Chris Dumez.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::applicationDidEnterBackground):
        "Screen lock" is very aggressive on watchOS; we want to do our usual
        30 seconds of loading in the background when you drop your wrist,
        so disable this power optimization on that platform.

2018-07-13  Chris Dumez  <cdumez@apple.com>

        WebResourceLoader may try to send a IPC with a destination ID that is 0
        https://bugs.webkit.org/show_bug.cgi?id=187654
        <rdar://problem/39265927>

        Reviewed by Brady Eidson.

        WebResourceLoader may try to send a IPC with a destination ID that is 0 according to release
        assertion hits we see in the wild. This can lead to HashMap corruption on recipient side when
        trying to lookup a key that is 0.

        As per the crash traces, we see it starts from WebLoaderStrategy::internallyFailedLoadTimerFired()
        which is likely due to the Network process crashing. WebLoaderStrategy::networkProcessCrashed()
        calls scheduleInternallyFailedLoad() on each ResourceLoader and clears the WebResourceLoaders in
        m_webResourceLoaders. When a ResourceLoader is cancelled (marked as failed), we clear its identifier
        and we normally null out the WebLoaderStrategy's coreLoader. However, if we cannot find the
        WebResourceLoader in m_webResourceLoaders (because that map was already cleared) then the
        WebResourceLoader's coreLoader may not get nulled out, even if the coreLoader's identifier has
        been reset. We have 2 lambdas in WebResourceLoader which keep the WebResourceLoader alive and
        try to send IPC and are merely doing a null check on the coreLoader before trying to send the
        IPC.

        To address the issue, we now clear the WebResourceLoader's coreLoader in
        WebLoaderStrategy::networkProcessCrashed(). For robustness, we also check that a coreLoader's
        identifier is not 0 before trying to send IPC.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::networkProcessCrashed):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):
        (WebKit::WebResourceLoader::didReceiveResponse):

2018-07-13  Zach Li  <zachli@apple.com>

        Allow BOCOM and ABC plug-ins to run unsandboxed
        https://bugs.webkit.org/show_bug.cgi?id=187652
        rdar://problem/42149182

        Reviewed by Youenn Fablet.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed):

2018-07-13  Chris Dumez  <cdumez@apple.com>

        Add more threading release assertions
        https://bugs.webkit.org/show_bug.cgi?id=187647

        Reviewed by Alex Christensen.

        Add more threading release assertions to help debug <rdar://problem/39265927>.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::m_isInPrewarmedPool):
        (WebKit::WebProcessProxy::~WebProcessProxy):
        (WebKit::WebProcessProxy::shutDown):
        (WebKit::WebProcessProxy::didFinishLaunching):

2018-07-13  Christopher Reid  <chris.reid@sony.com>

        [WinCairo] Add windows storage process connection implementation
        https://bugs.webkit.org/show_bug.cgi?id=187531

        Reviewed by Fujii Hironori.

        * NetworkProcess/NetworkProcess.cpp:
        * Platform/IPC/Attachment.h:
        * StorageProcess/StorageProcess.cpp:
        * UIProcess/Storage/StorageProcessProxy.cpp:

2018-07-13  Dan Bernstein  <mitz@apple.com>

        [macOS] REGRESSION (r233536): Development WebContent service got opted back into Library Validation
        https://bugs.webkit.org/show_bug.cgi?id=187640

        Reviewed by Daniel Bates.

        * Scripts/process-webcontent-entitlements.sh: Add the
          com.apple.security.cs.disable-library-validation to the Development service regardless of
          whether restricted entitlements are to be used, because that entitlement is not restricted.

2018-07-13  Chris Dumez  <cdumez@apple.com>

        NetworkConnectionToWebProcess::m_networkResourceLoaders should use Ref<> for its values
        https://bugs.webkit.org/show_bug.cgi?id=187629

        Reviewed by Youenn Fablet.

        NetworkConnectionToWebProcess::m_networkResourceLoaders should use Ref<> for its values
        since they cannot be null.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:

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

        Reduce size of WebCore::URL
        https://bugs.webkit.org/show_bug.cgi?id=186820

        Reviewed by Yusuke Suzuki and Youenn Fablet.

        * NetworkProcess/cache/NetworkCacheStorage.h:
        Increment cache version because of URL encoding change.

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

        [Cocoa] Make sure NetworkProcess::createNetworkConnectionToWebProcess() returns a valid mach port
        https://bugs.webkit.org/show_bug.cgi?id=187625

        Reviewed by Youenn Fablet.

        Make sure NetworkProcess::createNetworkConnectionToWebProcess() returns a valid mach port to help
        debug <rdar://problem/41995022>.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):

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

        PingLoad does not need to ref the NetworkConnectionToWebProcess
        https://bugs.webkit.org/show_bug.cgi?id=187624

        Reviewed by Youenn Fablet.

        PingLoad does not need to ref the NetworkConnectionToWebProcess and keep it alive longer than it needs to be.
        Instead, ref the IPC::Connection which is lighter weight and gets invalidated when the NetworkConnectionToWebProcess
        is destroyed.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::didFinishPingLoad): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:

2018-07-12  Brady Eidson  <beidson@apple.com>

        Make process-swap-on-navigation an experimental feature.
        <rdar://problem/41995053> and https://bugs.webkit.org/show_bug.cgi?id=187558

        Reviewed by Chris Dumez.

        * Shared/WebPreferences.yaml:
        
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetProcessSwapOnNavigationEnabled):
        (WKPreferencesGetProcessSwapOnNavigationEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:
        
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):
        
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage): If the new web page has PSON enabled via WebPreferences,
          absorb that setting into this process pool's configuration.

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

        Simplify code in NetworkConnectionToWebProcess::didReceiveMessage()
        https://bugs.webkit.org/show_bug.cgi?id=187621

        Reviewed by Youenn Fablet.

        Simplify code in NetworkConnectionToWebProcess::didReceiveMessage() by not using HashMap iterators and
        calling get() directly.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):

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

        Make sure WebProcess::ensureNetworkProcessConnection() is always called on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=187607

        Reviewed by Alex Christensen.

        Add release assertion to make sure that ensureNetworkProcessConnection() is always called on the main
        thread. Calling it on a background thread would not be safe. It would not be safe because:
        1. We check if we have a network process connection and then create one if we don't without any locking.
        2. It is not safe to construct or use a NetworkProcessConnection object from a non-main thread

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

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

        Assert that the IPC::Connection is valid in Connection::dispatchMessage(Decoder&)
        https://bugs.webkit.org/show_bug.cgi?id=187617

        Reviewed by Youenn Fablet.

        Assert that the IPC::Connection is valid in Connection::dispatchMessage(Decoder&) as
        m_client would be stale otherwise.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::dispatchMessage):

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

        Add a FrameLoaderClient willInjectUserScriptForFrame callback
        https://bugs.webkit.org/show_bug.cgi?id=187565

        Reviewed by Alex Christensen.

        Introduce a new WKBundlePageLoaderClient callback that is called everytime a user script is injected.
        Implement WebFrameLoaderClient::willInjectUserScript by calling this new callback.

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::willInjectUserScriptForFrame):
        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (setUpPageLoaderClient):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::globalObjectIsAvailableForFrame):
        (WebKit::InjectedBundlePageLoaderClient::willInjectUserScriptForFrame):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::willInjectUserScript):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-07-12  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [iOS] When bringing MobileSafari to the foreground, images are drawn asynchronously after removing a snapshot that included them
        https://bugs.webkit.org/show_bug.cgi?id=187374
        <rdar://problem/41249545>

        Reviewed by Tim Horton.

        UIProcess should block committing all the layer tree transactions for 
        immediate update until it receives a one whose activityStateChangeID is
        greater than or equal to the one it sends with SetActivityState message.

        * Scripts/webkit/messages.py:
        Fix the messages code generator to include DrawingAreaInfo.h for the WebKit
        typedef ActivityStateChangeID.

        * Shared/DrawingAreaInfo.h:
        Define ActivityStateChangeID to be uint64_t. Add a definition for the case
        when the UIProcess won't be blocked for a reply back from the WebProcess.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::activityStateChangeID const):
        (WebKit::RemoteLayerTreeTransaction::setActivityStateChangeID):
        Add a member for activityStateChangeID in the LayerTreeTransaction.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        (WebKit::RemoteLayerTreeTransaction::decode):
        Make LayerTreeTransaction know how to encode and decode activityStateChangeID.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::waitForDidUpdateActivityState):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
        Make the DrawingArea in the UIProcess wait the layer tree with a certain
        activityStateChangeID.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::waitForDidUpdateActivityState):
        If m_activityStateChangeWantsSynchronousReply is true, generate a new 
        activityStateChangeID and send it in the SetActivityState message.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::takeNextActivityStateChangeID):
        A simple way to generate a new activityStateChangeID.

        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
        Fix the UIProcess functions' prototype for Mac.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::activityStateDidChange):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        Fix the UIProcess functions' prototype for GTK.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::activityStateDidChange):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        Replace wantsDidUpdateActivityState with activityStateChangeID. Treat
        activityStateChangeID == ActivityStateChangeAsynchronous as if 
        wantsDidUpdateActivityState == false.

        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        Make the WebPrcess pass the activityStateChangeID which it receives from
        the SetActivityState message to the LayerTreeTransaction.

        (WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
        When receiving the SetActivityState, treat activityStateChangeID !=
        ActivityStateChangeAsynchronous as if wantsDidUpdateActivityState == true.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::setActivityState):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        Replace the boolean wantsDidUpdateActivityState with activityStateChangeID
        in the SetActivityState message.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::activityStateDidChange):
        (WebKit::TiledCoreAnimationDrawingArea::didUpdateActivityStateTimerFired):
        Fix the WebProcess functions' prototype for Mac.

2018-07-12  Antti Koivisto  <antti@apple.com>

        REGRESSION (r232356): After zooming a page in and out, it's possible to temporarily have missing tiles (google.com, apple.com)
        https://bugs.webkit.org/show_bug.cgi?id=187553
        <rdar://problem/41863803>

        Reviewed by Simon Fraser.

        We ignore zoom scale from UI process if it doesn't match the last remote layer tree transaction. However nothing
        guarantees that we receive the real scale again until user interacts with the page. This means the web process
        scale and the UI process scale can be wildly out of sync.

        This problem becomes more likely to be visible when
        - we are under memory pressure so we don't update tiles during zooming and rely on the one final update afterwards
        - the page generates lots of layer tree transactions

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

        Remember the last transaction where we actually changed the page scale.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::scaleFromUIProcess const):

        Only reject the UI process scale if there has been a scale changing transaction meanwhile.
        The transaction id test was added in r218149 and the problem it fixed remains fixed. This change also matches better
        what it was purpoted to implement.

2018-07-12  Megan Gardner  <megan_gardner@apple.com>

        Keep Selections within Shadow DOM boundaries
        https://bugs.webkit.org/show_bug.cgi?id=187556
        <rdar://problem/41664567>

        Reviewed by Ryosuke Niwa.

        Update rangeForPosition to take into account both editing and shadow DOM boundries.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::rangeForPoint):
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::rangeForPosition): Deleted.
        
2018-07-12  Jer Noble  <jer.noble@apple.com>

        REGRESSION (r230163): Videos cannot be seen full screen in Complete Anatomy app
        https://bugs.webkit.org/show_bug.cgi?id=187527
        <rdar://problem/40511527>

        Reviewed by Ryosuke Niwa.

        Do not enable element fullscreen mode unless apps specifically opt-in. The Fullscreen API is
        an experimental feature on iOS, but not on Mac, but we can't simply not return the ExperimentalFeature
        object from the list of experimental features, as this keeps Safari from being able to apply a
        NSUserDefault value for that feature. Instead, add a property to API::ExperimentalFeature and
        _WKExperimentalFeature called "hidden", which signals to clients whether to display the feature
        in their UI.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/APIExperimentalFeature.cpp:
        (API::ExperimentalFeature::create):
        (API::ExperimentalFeature::ExperimentalFeature):
        * UIProcess/API/APIExperimentalFeature.h:
        * UIProcess/API/Cocoa/_WKExperimentalFeature.h:
        * UIProcess/API/Cocoa/_WKExperimentalFeature.mm:
        (-[_WKExperimentalFeature isHidden]):

2018-07-12  Alexey Proskuryakov  <ap@apple.com>

        [Mac] Run Unlock Keychain more reliably
        https://bugs.webkit.org/show_bug.cgi?id=187604

        Reviewed by Dan Bernstein.

        Move unlocking to a separate target, and make it a dependency for all targets that
        produce binaries.
        
        This is more than strictly required to fix the build, but this way, we won't need
        to remember about keychain when project structure changes. Another consideration that
        wasn't initially apparent to me is that is should be possible to build any target,
        not just "All", so projects aren't necessarily built in the same order even now.

        * WebKit.xcodeproj/project.pbxproj: 

2018-07-12  Per Arne Vollan  <pvollan@apple.com>

        Add compile guard for enabling NSRunLoop in the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=187563

        Reviewed by Chris Dumez.

        Also, replace __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 with ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) where appropriate.

        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * Shared/ChildProcess.h:
        * Shared/mac/ChildProcessMac.mm:
        * Shared/mac/HangDetectionDisablerMac.mm:
        (WebKit::setClientsMayIgnoreEvents):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::shouldLeakBoost):
        * UIProcess/WebProcessPool.h:
        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::PDFPlugin):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::stopRunLoop):

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

        [WPE] Pass the backend library name as command line parameter to the web process
        https://bugs.webkit.org/show_bug.cgi?id=186841

        Reviewed by Žan Doberšek.

        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess): Add --backend-library parameter when launching the web process.
        * WebProcess/wpe/WebProcessMainWPE.cpp: Call wpe_loader_init() with the library passed as --backend-library parameter.

2018-07-11  Jon Lee  <jonlee@apple.com>

        Update iOS fullscreen alert text
        https://bugs.webkit.org/show_bug.cgi?id=187576
        rdar://problem/42052284

        Reviewed by Ryosuke Niwa.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController _showPhishingAlert]): Update text and string keys.

2018-07-11  Aditya Keerthi  <akeerthi@apple.com>

        REGRESSION (231276): Attempting to copy an image fails
        https://bugs.webkit.org/show_bug.cgi?id=187212
        <rdar://problem/41540074>

        Reviewed by Ryosuke Niwa.

        r210683 introduced logic to prevent file URLs from being copied to the clipboard
        in unexpected cases. In order to achieve this functionality,
        checkURLReceivedFromWebProcess was called on all items in the pathnames array
        passed into WebPasteboardProxy::setPasteboardPathnamesForType. However, this
        method is a misnomer, as the pathnames array always contains exactly one URL and
        one title for the URL.

        Renamed methods to make it clear that one URL and one title are being passed in
        and updated logic to ensure that checkURLReceivedFromWebProcess is only called
        on the URL and not the title.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PasteboardURL>::encode):
        (IPC::ArgumentCoder<PasteboardURL>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::setPasteboardURL):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::setURL):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

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

        Add SPI for immediate injection of user scripts
        https://bugs.webkit.org/show_bug.cgi?id=173342
        <rdar://problem/29202285>

        Reviewed by Brady Eidson, Youenn Fablet, and Geoff Garen.

        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupAddUserScript):
        * UIProcess/API/C/WKUserContentControllerRef.cpp:
        (WKUserContentControllerAddUserScript):
        * UIProcess/API/Cocoa/WKUserContentController.mm:
        (-[WKUserContentController addUserScript:]):
        (-[WKUserContentController _addUserScriptImmediately:]):
        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addUserScript):
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addUserScripts):
        (WebKit::WebUserContentController::addUserScriptInternal):
        If we are to inject the script internally, inject it into the appropriate pages.
        If we're injecting into the top frame only, there's no need to traverse the frame tree.
        (WebKit::WebUserContentController::addUserScript):
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/UserContent/WebUserContentController.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):

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

        [iOS WK2] Address a possible cause of missing tiles
        https://bugs.webkit.org/show_bug.cgi?id=187570
        rdar://problem/40941118

        Reviewed by Tim Horton.
        
        If the web process crashes, it's possible for the user to trigger a scroll before
        the process is re-launched. The pre-commit handler will bail early on the _isValid
        check without clearing _hasScheduledVisibleRectUpdate, so that remains YES and we
        get stuck doing no more visible content rect updates.
        
        Fix by adding -[WKWebView _didRelaunchProcess] (WKContentView got this already), and
        in that clear state that could have been set in the UI process while the web process
        connection was invalid.
        
        Also add more release logging around process termination, crash and relaunch.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processDidExit]):
        (-[WKWebView _didRelaunchProcess]):
        (-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
        (-[WKWebView _updateVisibleContentRects]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didRelaunchProcess):

2018-07-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Release logging dumps "Cleaning up dragging state…" every time gesture recognizers are reset in WKContentView
        https://bugs.webkit.org/show_bug.cgi?id=187562

        Reviewed by Tim Horton.

        Tweaks up a release logging statement, such that it only logs when performing a drag or drop.

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

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

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

        "WKTR vs exp features, booooooo" (Requested by bradee-oh on
        #webkit).

        Reverted changeset:

        "Make process-swap-on-navigation an experimental feature."
        https://bugs.webkit.org/show_bug.cgi?id=187558
        https://trac.webkit.org/changeset/233741

2018-07-11  Brady Eidson  <beidson@apple.com>

        Make process-swap-on-navigation an experimental feature.
        <rdar://problem/41995053> and https://bugs.webkit.org/show_bug.cgi?id=187558

        Reviewed by Geoff Garen.

        * Shared/WebPreferences.yaml:

        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage): If the new web page has PSON enabled via WebPreferences,
          absorb that setting into this process pool's configuration.

2018-07-11  Jer Noble  <jer.noble@apple.com>

        Disable all network caching for HLS streams.
        https://bugs.webkit.org/show_bug.cgi?id=187544
        <rdar://problem/41863600>

        Reviewed by Chris Dumez.

        Revert the behavior added in r215263 where Media responses are cached if they are from
        a resource whose expected content length is <4MB.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeStoreDecision):
        (WebKit::NetworkCache::expectedTotalResourceSizeFromContentRange): Deleted.

2018-07-11  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] AC for fixed-position elements is not enabled
        https://bugs.webkit.org/show_bug.cgi?id=187514

        Reviewed by Carlos Garcia Campos.

        Enable accelerated compositing for fixed-position elements when using
        AcceleratedDrawingArea and AC is force-enabled. This effectively enables
        this option for the WPE port which is using the AcceleratedDrawingArea
        implementation and not DrawingAreaImpl like the GTK+ port.

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

2018-07-11  Christopher Reid  <chris.reid@sony.com>

        [Win][WebKit] Disable accelerated compositing until it is supported
        https://bugs.webkit.org/show_bug.cgi?id=187503

        Reviewed by Žan Doberšek.

        * UIProcess/win/WebView.cpp:

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

        REGRESSION (r233480): Mail contents flash black when activating
        https://bugs.webkit.org/show_bug.cgi?id=187504
        <rdar://problem/41752351>

        Reviewed by Simon Fraser.

        The sequence of events to reproduce the bug originally fixed in r203371
        is either:

        A) the simple background/foreground case

        1] app begins to suspend
        2] app suspension snapshots are taken
        3] WKWebView's surfaces are marked volatile
        4] app completes suspension
            ... time goes by ...
        5] WKWebView's volatile surfaces are purged
            ... time goes by ...
        6] app begins to resume, shows (good) suspension snapshot
        7] app removes suspension snapshot
        8] WKWebView has sublayers with purged (black) surfaces
        9] WKWebView sublayers are repaired by a new commit with nonvolatile surfaces

        B) the re-snapshot while in the background case

        1] app begins to suspend
        2] app suspension snapshots are taken
        3] WKWebView's surfaces are marked volatile
        4] app completes suspension
        ... time goes by ...
        5] WKWebView's volatile surfaces are purged
        ... time goes by ...
        6] app wakes up in the background to update its snapshots
        7] in the updated snapshots, WKWebView has sublayers with purged (black) surfaces
        ... time goes by ...
        8] app begins to resume, shows (bad) suspension snapshot
        9] WKWebView presents layers with purged (black) surfaces until new commit fixes them
        10] WKWebView sublayers are repaired by a new commit with nonvolatile surfaces

        WebKit's current approach to fix this problem is simply to hide the
        WKWebView's sublayers at some point after A2/B2 (suspension snapshots),
        but before A8/B7 (the first time the empty layers would be presented
        or snapshotted).

        Previously, we did this by hiding the layers when the window's CAContext
        was created, which happened early enough in both cases (at A6/B6).
        However, that notification was removed underneath us at some point.

        However, in looking at the timelines, there's a better place to do this:
        immediately after marking the surfaces volatile (A3/B3), which is always
        strictly after the app suspension snapshots are taken, and also always
        before the freshly-made-volatile layers could be presented or snapshotted.

        * UIProcess/ApplicationStateTracker.h:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker):
        (WebKit::ApplicationStateTracker::~ApplicationStateTracker):
        (WebKit::ApplicationStateTracker::applicationDidCreateWindowContext): Deleted.
        * UIProcess/ios/WKApplicationStateTrackingView.h:
        * UIProcess/ios/WKApplicationStateTrackingView.mm:
        (-[WKApplicationStateTrackingView didMoveToWindow]):
        (-[WKApplicationStateTrackingView _applicationDidCreateWindowContext]): Deleted.
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _applicationDidCreateWindowContext]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground):
        Remove the didCreateWindowContext notification, and hide content after
        snapshotting after entering the background.

2018-07-10  Youenn Fablet  <youenn@apple.com>

        Make fetch() use "same-origin" credentials by default
        https://bugs.webkit.org/show_bug.cgi?id=176023

        Reviewed by Chris Dumez.

        Before the patch, when changing the credential mode in case of redirection,
        we were not waiting for WebProcess response to restart the load.
        This patch updates the implementation to ask the WebProcess whether to proceed as for other regular asynchronous loads.
        This requires some refactoring in particular we now pass request, redirectRequest and redirectResponse to NetworkLoadChecker
        that will send them back as part of the completion handler.

        To do so, we change manual redirection handling and make it a successful case and not an error case as before.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::redirectionError):
        (WebKit::NetworkLoadChecker::checkRedirection):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::restartNetworkLoad):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):

2018-07-10  Chris Dumez  <cdumez@apple.com>

        [IOS] We should prevent WebProcess suspension while the UIProcess is waiting for a reply from its injected bundle
        https://bugs.webkit.org/show_bug.cgi?id=187536
        <rdar://problem/41931912>

        Reviewed by Brady Eidson.

        Update RemoteObjectRegistry to take a background process assertion for each pending reply on the
        UIProcess side. Otherwise, the destination web process may get suspended and the reply block would
        not get called. We already do this in WebPageProxy for callbacks waiting for an IPC from the
        WebProcess.

        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/API/Cocoa/RemoteObjectRegistry.mm:
        (WebKit::RemoteObjectRegistry::RemoteObjectRegistry):
        (WebKit::RemoteObjectRegistry::sendInvocation):
        (WebKit::RemoteObjectRegistry::callReplyBlock):
        (WebKit::RemoteObjectRegistry::releaseUnusedReplyBlock):
        * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:
        (-[_WKRemoteObjectRegistry _initWithWebPage:]):
        (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]):
        (-[_WKRemoteObjectRegistry _initWithMessageSender:]): Deleted.
        * Shared/API/Cocoa/_WKRemoteObjectRegistryInternal.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _remoteObjectRegistry]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::remoteObjectRegistry):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _remoteObjectRegistry]):

2018-07-09  Brian Burg  <bburg@apple.com>

        WebDriver: hang when running Selenium test correct_event_firing_tests.py::testShouldEmitOnChangeEventsWhenSelectingElements[Safari]
        https://bugs.webkit.org/show_bug.cgi?id=187486
        <rdar://problem/41987110>

        Reviewed by Tim Horton.

        This test takes the unusual step of doing Element Click directly on a <select> element,
        despite the specification supporting clicking on <option> elements directly. It hangs
        because we fire a nested run loop when the Carbon popup menu appears, and the nested runloop
        is not exited until the popup menu is clicked or dismissed.

        If a click is being simulated on the <select> via WebDriver, we should just not show
        the popup menu but still deliver all of the events that are fired when clicking the element.

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

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

        Try to fix the build

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _internalDoAfterNextPresentationUpdate:withoutWaitingForPainting:withoutWaitingForAnimatedResize:]):

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

        doAfterNextPresentationUpdate should not be called while content is hidden due to animated resize
        https://bugs.webkit.org/show_bug.cgi?id=187500
        <rdar://problem/41294139>

        Reviewed by Simon Fraser.

        Clients generally expect that after doAfterNextPresentationUpdate, there's
        something vaguely sensible on the screen. They use this to remove snapshots,
        unhide web views, etc.

        During some kinds of resize/rotation, we will hide the WKContentView,
        and asynchronously hide it when the resize/rotation is complete. This
        can cause clients to prematurely expose a blank WKWebView.

        To fix this, avoid calling doAfterNextPresentationUpdate until the
        animated resize completes. Add a variant that does not wait for this
        (to be used for testing purposes).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCompleteAnimatedResize]):
        (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
        Rename the vector of blocks that we call after animated resize completes
        to be generic rather than just about snapshots.

        (-[WKWebView _internalDoAfterNextPresentationUpdate:withoutWaitingForPainting:withoutWaitingForAnimatedResize:]):
        Add this _internal variant of _doAfterNextPresentationUpdate that takes bits determining
        which waits to perform or avoid, to reduce duplication.

        (-[WKWebView _doAfterNextPresentationUpdate:]):
        (-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForAnimatedResizeForTesting:]):
        (-[WKWebView _doAfterNextPresentationUpdateWithoutWaitingForPainting:]):
        Call _internalDoAfterNextPresentationUpdate with the appropriate bits set for each situation.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Add _doAfterNextPresentationUpdateWithoutWaitingForAnimatedResizeForTesting to WKWebView(WKTesting).

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

        REGRESSION (r231510): Dismissing PDFPlugin context menu automatically clicks the first item
        https://bugs.webkit.org/show_bug.cgi?id=187507
        <rdar://problem/42007155>

        Reviewed by Per Arne Vollan.

        WebPageProxy::showPDFContextMenu, introduced in r213510, assumes that
        the user always chooses some item from the menu; it does not handle
        the case where the context menu is dismissed without selecting anything.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/WebPageProxyMac.mm:
        (-[WKPDFMenuTarget selectedMenuItem]):
        (-[WKPDFMenuTarget contextMenuAction:]):
        (WebKit::WebPageProxy::showPDFContextMenu):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::handleContextMenuEvent):
        Make showPDFContextMenu return an optional index, instead of always
        returning an index. Don't perform any action if it is nullopt.

2018-07-10  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Support display of webinspector ui on non-legacy minibrowser
        https://bugs.webkit.org/show_bug.cgi?id=187415

        Reviewed by Brian Burg.

        * UIProcess/WebInspectorProxy.h:
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::getInspectedWindowInfo):
        (WebKit::WebInspectorProxy::windowReceivedMessage):
        (WebKit::WebInspectorProxy::wndProc):
        (WebKit::WebInspectorProxy::registerWindowClass):
        (WebKit::decidePolicyForNavigationAction):
        (WebKit::webProcessDidCrash):
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        (WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        (WebKit::WebInspectorProxy::platformInspectedWindowHeight):
        (WebKit::WebInspectorProxy::platformInspectedWindowWidth):
        (WebKit::WebInspectorProxy::platformAttach):
        (WebKit::WebInspectorProxy::platformDetach):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
        (WebKit::WebInspectorProxy::platformIsFront):
        (WebKit::WebInspectorProxy::platformHide):
        (WebKit::WebInspectorProxy::platformBringToFront):
        (WebKit::WebInspectorProxy::platformBringInspectedPageToFront):
        (WebKit::WebInspectorProxy::platformInspectedURLChanged):
        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        (WebKit::WebInspectorProxy::platformDidCloseForCrash):
        (WebKit::WebInspectorProxy::platformInvalidate):
        (WebKit::WebInspectorProxy::platformStartWindowDrag):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openFrontendConnection):
        * WebProcess/WebPage/win/WebInspectorUIWin.cpp:
        (WebKit::WebInspectorUI::localizedStringsURL):
        (WebKit::RemoteWebInspectorUI::localizedStringsURL):

2018-07-10  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make testRunner.statisticsResetToConsistentState() take a completion handler
        https://bugs.webkit.org/show_bug.cgi?id=187499
        <rdar://problem/41999431>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
            Now uses a WTF::CallbackAggregator to call its
            completion handler when both the call to
            WebResourceLoadStatisticsStore::scheduleClearInMemory()
            and to
            WebResourceLoadStatisticsStore::resetParametersToDefaultValues()
            are complete.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory):
            Now takes a WTF::CompletionHandler so that it can support the
            completion handler in
            WKWebsiteDataStoreStatisticsResetToConsistentState().
        (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
            Now takes a WTF::CompletionHandler so that it can support the
            completion handler in
            WKWebsiteDataStoreStatisticsResetToConsistentState().
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-07-10  Ryosuke Niwa  <rniwa@webkit.org>

        Disable cross-origin-window-policy by default
        https://bugs.webkit.org/show_bug.cgi?id=187509

        Reviewed by Chris Dumez.

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

2018-07-09  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r232416): Flickering when going back to Google search results on back swipe
        https://bugs.webkit.org/show_bug.cgi?id=187506
        <rdar://problem/41939594>

        Reviewed by Chris Dumez.

        Same document navigations won't have a preceding didStartProvisionalLoadForMainFrame,
        so the code introduced in r232416 would immediately remove the snapshot
        upon any same document navigation.

        Instead, adjust r232416 slightly to start tracking snapshot removal events
        after didStartProvisionalLoad OR didSameDocumentNavigation. Call the block
        that starts tracking, then immediately fire the same-document navigation event.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):

2018-07-09  Youenn Fablet  <youenn@apple.com>

        Remove cfca.com.npCryptoKit.CGB.MAC.sb and cfca.com.npP11CertEnroll.MAC.CGB.sb
        https://bugs.webkit.org/show_bug.cgi?id=187487
        <rdar://problem/41991584>

        Reviewed by Alexey Proskuryakov.

        * Resources/PlugInSandboxProfiles/cfca.com.npCryptoKit.CGB.MAC.sb: Removed.
        * Resources/PlugInSandboxProfiles/cfca.com.npP11CertEnroll.MAC.CGB.sb: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-07-09  Youenn Fablet  <youenn@apple.com>

        Add the possibility to run unsandboxed plug-ins
        https://bugs.webkit.org/show_bug.cgi?id=187310
        <rdar://problem/41798808>

        Reviewed by Alexey Proskuryakov.

        Add a utility method to know which plug-ins are allowed to run unsandboxed.
        For such plug-ins, we skip the sandboxing done when starting the plug-in process.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::initializeSandbox):
        * Shared/WebPreferences.yaml:
        * UIProcess/Plugins/PluginInfoStore.cpp:
        (WebKit::PluginInfoStore::shouldRunPluginUnsandboxed):
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldRunPluginUnsandboxed):
        (WebKit::PluginInfoStore::shouldUsePlugin):

2018-07-09  Dean Jackson  <dino@apple.com>

        Remove fullscreen-auto-hide-delay
        https://bugs.webkit.org/show_bug.cgi?id=187493
        <rdar://problem/41830852>

        Reviewed by Antoine Quint.

        Now there is no delay, rename setFullscreenAutoHideTiming to setFullscreenAutoHideDuration,
        and only send that value over to the Web Process.

        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDuration):
        (WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideTiming): Deleted.
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController viewWillAppear:]):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::didExitFullScreen):
        (WebKit::WebFullScreenManager::setFullscreenAutoHideDuration):
        (WebKit::WebFullScreenManager::setFullscreenAutoHideTiming): Deleted.
        * WebProcess/FullScreen/WebFullScreenManager.h:
        * WebProcess/FullScreen/WebFullScreenManager.messages.in:

2018-07-09  Timothy Hatcher  <timothy@apple.com>

        Semantic colors don't update when accessibility Increase Contrast mode is enabled.
        https://bugs.webkit.org/show_bug.cgi?id=187425
        rdar://problem/39948240

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Moved call to setUseDarkAppearance to WebViewImpl.
        (-[WKWebView _setUseSystemAppearance:]): No need to call setUseDarkAppearance here anymore.
        (-[WKWebView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WKWebView _effectiveAppearanceIsDark]): Deleted.
        (-[WKWebView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WKView _setUseSystemAppearance:]): No need to call setUseDarkAppearance here anymore.
        (-[WKView _effectiveAppearanceIsDark]): Deleted.
        (-[WKView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl): Call setUseDarkAppearance before page config is sent in initializeWebPage.
        (WebKit::WebViewImpl::effectiveAppearanceDidChange): Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setUseDarkAppearance): WebCore::Page::setUseDarkAppearance now handles the style changes.
        The RenderTheme color caches also don't need cleared with platformColorsDidChange(), since we cache light
        and dark colors seperatly in RenderThemeMac.

2018-07-09  Simon Fraser  <simon.fraser@apple.com>

        Shrink various loading-related enums to shrink CachedResource
        https://bugs.webkit.org/show_bug.cgi?id=187443

        Reviewed by Chris Dumez.

        * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
        (WebKit::LegacyCustomProtocolManager::wasRedirectedToRequest):
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::continueWillSendRequest):
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::canUseCache const):
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::cachePolicyAllowsExpired):
        (WebKit::NetworkCache::makeRetrieveDecision):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
        * Shared/API/c/mac/WKURLRequestNS.mm:
        (WKURLRequestCopyNSURLRequest):
        * Shared/Cocoa/WKNSURLRequest.mm:
        (-[WKNSURLRequest _web_createTarget]):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
        * UIProcess/API/Cocoa/WKFrameInfo.mm:
        (-[WKFrameInfo request]):
        * UIProcess/API/Cocoa/WKNavigation.mm:
        (-[WKNavigation _request]):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction request]):
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        (-[WKNavigationData originalRequest]):
        * UIProcess/API/Cocoa/WKNavigationResponse.mm:
        (-[WKNavigationResponse _request]):
        * UIProcess/API/Cocoa/WKURLSchemeTask.mm:
        (-[WKURLSchemeTaskImpl request]):
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload request]):
        * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
        (WebKit::LegacyCustomProtocolManagerClient::startLoading):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformCanHandleRequest):

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

        WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData() fails to protect the page in its lambda
        https://bugs.webkit.org/show_bug.cgi?id=187478
        <rdar://problem/41975998>

        Reviewed by Youenn Fablet.

        Make sure we protect the WebPageProxy when we capture it in the lambda or it might go away by the
        time the lambda gets called.

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

2018-07-09  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Remove unused AuthenticationManager static methods.
        https://bugs.webkit.org/show_bug.cgi?id=187419

        Reviewed by Yusuke Suzuki.

        The file for curl port was added without implementation and never called from anyware.
        Also interfaces only used by the curl port were removed from the shared header file.

        * PlatformWin.cmake:
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/curl/AuthenticationManagerCurl.cpp: Removed.

2018-07-09  Stephan Szabo  <stephan.szabo@sony.com>

        Check that LayerTreeHost was created before use
        https://bugs.webkit.org/show_bug.cgi?id=187404

        Reviewed by Žan Doberšek.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):

2018-07-09  Commit Queue  <commit-queue@webkit.org>

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

        Revision caused the api test LinkColorWithSystemAppearance to
        fail on all systems. (Requested by Truitt on #webkit).

        Reverted changeset:

        "Semantic colors don't update when accessibility Increase
        Contrast mode is enabled."
        https://bugs.webkit.org/show_bug.cgi?id=187425
        https://trac.webkit.org/changeset/233612

2018-07-09  Brian Burg  <bburg@apple.com>

        WebDriver: hang in Selenium test alerts_tests.py::testShouldHandleAlertOnPageBeforeUnload
        https://bugs.webkit.org/show_bug.cgi?id=187418
        <rdar://problem/41909520>

        Unreviewed build fix for Sierra.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        According to some compilers, the local 'automationSession' is unused. Change this
        to just convert the return value to boolean rather than assign to an unused local.

2018-07-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce a layout milestone to track when the document contains a large number of rendered characters
        https://bugs.webkit.org/show_bug.cgi?id=187412
        <rdar://problem/41744338>

        Reviewed by Ryosuke Niwa.

        Add plumbing for the new significant rendered text layout milestone in the modern WebKit client layer. See
        WebCore/ChangeLog for more details.

        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * Shared/API/Cocoa/_WKRenderingProgressEventsInternal.h:
        (renderingProgressEvents):
        * Shared/API/c/WKPageLoadTypes.h:
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toWKLayoutMilestones):
        (WebKit::toLayoutMilestones):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (layoutMilestones):

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

        REGRESSION (r233561): MobileMail crashes when replying to an email
        https://bugs.webkit.org/show_bug.cgi?id=187436
        rdar://problem/41931915

        Reviewed by Alan Bujtas.
        
        r233561 added a RELEASE_ASSERT(isMainThread()) in this function. This is fine most of the time,
        until Mail spawns a WebThread for mail compose, at which point the meaning of isMainThread changes
        and the RELEASE_ASSERT fires.
        
        For now, just remove the RELEASE_ASSERT.

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

2018-07-06  Timothy Hatcher  <timothy@apple.com>

        Semantic colors don't update when accessibility Increase Contrast mode is enabled.
        https://bugs.webkit.org/show_bug.cgi?id=187425
        rdar://problem/39948240

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Moved call to setUseDarkAppearance to WebViewImpl.
        (-[WKWebView _setUseSystemAppearance:]): No need to call setUseDarkAppearance here anymore.
        (-[WKWebView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WKWebView _effectiveAppearanceIsDark]): Deleted.
        (-[WKWebView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WKView _setUseSystemAppearance:]): No need to call setUseDarkAppearance here anymore.
        (-[WKView _effectiveAppearanceIsDark]): Deleted.
        (-[WKView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl): Call setUseDarkAppearance before page config is sent in initializeWebPage.
        (WebKit::WebViewImpl::effectiveAppearanceDidChange): Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setUseDarkAppearance): WebCore::Page::setUseDarkAppearance now handles the style changes.
        The RenderTheme color caches also don't need cleared with platformColorsDidChange(), since we cache light
        and dark colors seperatly in RenderThemeMac.

2018-07-06  Chris Dumez  <cdumez@apple.com>

        Add release assertions to try and catch a possible HashMap corruption in NetworkConnectionToWebProcess
        https://bugs.webkit.org/show_bug.cgi?id=187417

        Reviewed by Ryosuke Niwa.

        Add assertions to make sure we:
        - Always use NetworkConnectionToWebProcess::m_networkResourceLoaders from the main thread
        - Never use a 0 identifier as key for NetworkConnectionToWebProcess::m_networkResourceLoaders

        We see crashes (rdar://problem/39265927) that only seem to make sense if this HashMap was
        somehow getting corrupted. Let's try and catch the most common reasons for HashMap corruption.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didCleanupResourceLoader):
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
        (WebKit::NetworkConnectionToWebProcess::removeLoadIdentifier):
        (WebKit::NetworkConnectionToWebProcess::setDefersLoading):
        (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::messageSenderDestinationID):

2018-07-06  Brian Burg  <bburg@apple.com>

        WebDriver: hang in Selenium test alerts_tests.py::testShouldHandleAlertOnPageBeforeUnload
        https://bugs.webkit.org/show_bug.cgi?id=187418
        <rdar://problem/41909520>

        Reviewed by Timothy Hatcher.

        Per the W3C specification, “User prompts that are spawned from beforeunload event handlers,
        are dismissed implicitly upon navigation or close window, regardless of the defined user prompt handler.”

        This behavior differs from legacy Selenium behavior where (as in the test) it's expected that
        a test can accept or dismiss a beforeunload alert manually.

        Prior to this patch, beforeunload alerts hang because Safari uses a nested modal run loop, which does
        not process incoming Automation messages, so there was no way for the test to manually dismiss
        the alert.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        Don't show beforeunload alerts for pages being controlled by automation.


2018-07-06  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: contextConnection under WebCore::SWServer::terminateWorkerInternal
        https://bugs.webkit.org/show_bug.cgi?id=187348
        <rdar://problem/41853270>

        Reviewed by Youenn Fablet.

        Make sure we mark corresponding SWServerWorkers as terminated when we terminate a
        Service Worker context connection once it is no longer needed.

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

2018-07-06  Andy Estes  <aestes@apple.com>

        [iOS] WKPDFView should show the Data Detectors sheet when long-pressing a URL that Data Detectors can handle
        https://bugs.webkit.org/show_bug.cgi?id=187396
        <rdar://problem/41786980>

        Reviewed by Dan Bernstein.

        If a URL can be presented by Data Detectors, show the Data Detectors sheet instead
        of the link sheet. Also implement the optional WKActionSheetAssistantDelegate
        method that asks the UI delegate for its data detection context.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _showActionSheetForURL:atLocation:withAnnotationRect:]):
        (-[WKPDFView dataDetectionContextForActionSheetAssistant:]):

2018-07-06  Chris Dumez  <cdumez@apple.com>

        WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler() should take in a CompletionHandler
        https://bugs.webkit.org/show_bug.cgi?id=187392

        Reviewed by Youenn Fablet.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-07-06  Chris Dumez  <cdumez@apple.com>

        [iOS] Assertion failure in WebProcessProxy::allProcesses() (isMainThread())
        https://bugs.webkit.org/show_bug.cgi?id=187394

        Reviewed by Dan Bernstein.

        Use RunLoop::isMain() instead of isMainThread() in the assertion to fix issues for
        applications using both WebKit and WebKitLegacy.

        * UIProcess/WebProcessProxy.cpp:

2018-07-06  Daniel Bates  <dabates@apple.com>

        Remove Strong Confirmation Password button
        https://bugs.webkit.org/show_bug.cgi?id=187306
        <rdar://problem/41795185>

        Reviewed by Sam Weinig.

        Remove support for the Strong Confirmation Password button because we never made use of it.

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

2018-07-05  Youenn Fablet  <youenn@apple.com>

        REGRESSION (r230843): Flash doesn't work; Produces blue box on page
        https://bugs.webkit.org/show_bug.cgi?id=187346
        <rdar://problem/41773974>

        Reviewed by Ryosuke Niwa.

        Reset page plugins when the load client policies are updated.
        This will ensure that pages will rebuild their plugin lists based on the new policies.

        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy):
        (WebKit::WebPluginInfoProvider::clearPluginClientPolicies):

2018-07-05  Brady Eidson  <beidson@apple.com>

        IndexedDB operations in a Page fail after a StorageProcess crash.
        <rdar://problem/41626526> and https://bugs.webkit.org/show_bug.cgi?id=187123

        Reviewed by Alex Christensen.

        When the connection to a StorageProcess goes away, explicitly tell all of the WebPages
        in the WebProcess about it.
        
        This puts Documents/Workers in an error mode where requests fail instead of timeout.
        It also clears the Page's connection so *new* Documents and Workers will get a fresh 
        new connection that works.
        
        * UIProcess/API/C/WKContext.cpp:
        (WKContextTerminateStorageProcess):
        
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateStorageProcess]):
        
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::terminateForTesting):
        * UIProcess/Storage/StorageProcessProxy.h:
        
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::terminateStorageProcessForTesting):
        (WebKit::WebProcessPool::terminateStorageProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didClose):
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingIDBConnectionToServerForIdentifier):
        
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):

2018-07-05  Simon Fraser  <simon.fraser@apple.com>

        Address two possible causes of missing tiles in iOS Safari, and add logging to gather more data about other possible causes
        https://bugs.webkit.org/show_bug.cgi?id=187376
        rdar://problem/40941118

        Reviewed by Tim Horton.
        
        We have continual reports of users experiencing missing tiles in MobileSafari, where loading a page
        shows the tiles at the top, but we don't render new tiles as the user scrolls down. This is consistent
        with failing to dispatch visible content rect updates via -[WKWebView _updateVisibleContentRects].
        
        This patch addresses two possible (but unlikely) causes. First, it resets _currentlyAdjustingScrollViewInsetsForKeyboard
        after a web process crash. Second, it catches exceptions thrown by [webView _updateVisibleContentRects]
        and resets _hasScheduledVisibleRectUpdate.
        
        This patch also adds release logging that fires if over 1s has elapsed between scheduling
        a visible content rect update and trying to re-schedule, and logging for all reasons that
        -_updateVisibleContentRects returns early.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _processDidExit]):
        (-[WKWebView _addUpdateVisibleContentRectPreCommitHandler]):
        (-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
        (-[WKWebView _updateVisibleContentRects]):

2018-07-05  Olivia Barnett  <obarnett@apple.com>

        iPad: Scrolling with hardware keyboard while SELECT popover is visible scrolls the page, detaches popover
        https://bugs.webkit.org/show_bug.cgi?id=187363
        <rdar://problem/41106306>

        Reviewed by Tim Horton.

        Added extra check to prevent keyboard scrolling when the select box is open.

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

2018-07-05  Timothy Hatcher  <timothy@apple.com>

        Rename and flip the meaning of defaultAppearance to be useDarkAppearance.
        https://bugs.webkit.org/show_bug.cgi?id=187369
        rdar://problem/41870420

        Reviewed by Tim Horton.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _effectiveAppearanceIsDark]):
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _setUseSystemAppearance:]):
        (-[WKWebView effectiveAppearanceDidChange]):
        (-[WKWebView _defaultAppearance]): Deleted.
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _effectiveAppearanceIsDark]):
        (-[WKView effectiveAppearanceDidChange]):
        (-[WKView _setUseSystemAppearance:]):
        (-[WKView _defaultAppearance]): Deleted.
        (-[WKView _setDefaultAppearance:]): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::effectiveAppearanceIsDark):
        (WebKit::WebViewImpl::setUseDarkAppearance):
        (WebKit::WebViewImpl::useDefaultAppearance): Deleted.
        (WebKit::WebViewImpl::setDefaultAppearance): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::setUseDarkAppearance):
        (WebKit::WebPageProxy::showPlaybackTargetPicker):
        (WebKit::WebPageProxy::setDefaultAppearance): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::useDarkAppearance const):
        (WebKit::WebPageProxy::defaultAppearance const): Deleted.
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView drawRect:]):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::paintControlForLayerInContext):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_credentialsMessenger):
        (WebKit::WebPage::drawRect):
        (WebKit::WebPage::setUseDarkAppearance):
        (WebKit::WebPage::setDefaultAppearance): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-07-05  Brian Burg  <bburg@apple.com>

        REGRESSION: ASSERT under WebAutomationSessionProxy::computeElementLayout when elementInViewClientCenterPoint returns nullopt
        https://bugs.webkit.org/show_bug.cgi?id=187367
        <rdar://problem/41861346>

        Reviewed by Timothy Hatcher.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        There's no reason to unwrap this optional, as the IPC argument type is std::optional<IntPoint>.

2018-07-05  Tim Horton  <timothy_horton@apple.com>

        Upstream hover gesture implementation
        https://bugs.webkit.org/show_bug.cgi?id=187366

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView _hoverGestureRecognizerChanged:]):

2018-07-05  Tim Horton  <timothy_horton@apple.com>

        Fix some -Wdocumentation warnings in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=187318

        Reviewed by Dan Bernstein.

        Fix most of the -Wdocumentation warnings in WebKit. The remaining
        ones are slightly mysterious, so we can't turn the warning on yet.

        * Configurations/BaseTarget.xcconfig:
        Define U_HIDE_DEPRECATED_API. It's defined in all other WebKit projects,
        and the doc comments in the deprecated ICU API have some errors.

        * UIProcess/API/Cocoa/WKUIDelegate.h:
        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.h:
        Adjust comments or parameter names to be consistent with each other.

2018-07-05  Chris Dumez  <cdumez@apple.com>

        Regression(r232886): WebsiteDataStore objects may get destroyed on a background thread
        https://bugs.webkit.org/show_bug.cgi?id=187356
        <rdar://problem/41854555>

        Reviewed by Geoffrey Garen.

        As of r232886, CallbackAggregators in WebsiteDataStore hold a Ref<> to their WebsiteDataStore. This
        is an issue because CallbackAggregator objects can get destroyed on a background thread and may be
        the last ones holding a ref to the data store. When this happens, the WebsiteDataStore would get
        destroyed on a background store and potentially cause crashes. Note that even if the callback
        aggregator would not be the last one to hold a ref to the store, it still would not be safe to deref
        the store on the background thread since WebsiteDataStore is not ThreadSafeRefCounted.

        To address the issue, this patch updates the CallbackAggregators' destructor to deref their data
        store member on the main thread. Note that we could also have WebsiteDataStore subclass
        ThreadSafeRefCounted<T, DestructionThread::Main> but the data store technically does not need to
        be ThreadSafeRefCounted at the moment.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):

2018-07-05  Dan Bernstein  <mitz@apple.com>

        [macOS] REGRESSION: Development WebContent service has restricted entitlements, rendering it useless for development
        https://bugs.webkit.org/show_bug.cgi?id=187355

        Reviewed by Anders Carlsson.

        * Configurations/WebContentService.Development.xcconfig: Set WK_USE_RESTRICTED_ENTITLEMENTS
          to NO for the Development service.

2018-07-05  Rob Buis  <rbuis@igalia.com>

        [GTK] Remove soup/DownloadSoupErrors.h
        https://bugs.webkit.org/show_bug.cgi?id=187339

        This header is not used anymore.

        Reviewed by Frédéric Wang.

        * NetworkProcess/Downloads/soup/DownloadSoupErrors.h: Removed.
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        * PlatformGTK.cmake:

2018-07-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r233325): [GTK] Broke 40 animations tests
        https://bugs.webkit.org/show_bug.cgi?id=187264

        Reviewed by Žan Doberšek.

        Use a different PlatformDisplayID for compositing in the GTK port. This way, when entering AC a window screen
        changed is emitted and the GTK default display refresh monitor is destroyed, ensuring the one created by the
        threaded compositor is used.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::create): Remove unused WebPage parameter and add PlatformDisplayID.
        (WebKit::ThreadedCompositor::ThreadedCompositor): Create the display refresh monitor with the given displayID.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor): Pass the given displayID to the parent constructor.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h:
        (WebKit::ThreadedDisplayRefreshMonitor::create): Add PlatformDisplayID parameter.
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Use compositingDisplayID when
        creating the threaded compositor and notify about the window screen change.
        (WebKit::ThreadedCoordinatedLayerTreeHost::setIsDiscardable): Use primaryDisplayID when leaving AC and
        compositingDisplayID when re-entering.

2018-07-04  Olivia Barnett  <obarnett@apple.com>

        A WKWebView in a UIViewController that is presented modally and uses a file picker will be incorrectly dismissed by the system
        https://bugs.webkit.org/show_bug.cgi?id=185257
        <rdar://problem/40819252>

        Reviewed by Tim Horton.

        Call to dismiss the presented modal was being called on the parent and not the child, which caused the file picker to be incorrectly dismissed along with the modal. A test for this bug-fix could not be completed without additional tools as TestWebKitAPI is not a UI application.

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

2018-07-04  Tim Horton  <timothy_horton@apple.com>

        Introduce PLATFORM(IOSMAC)
        https://bugs.webkit.org/show_bug.cgi?id=187315

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/NetworkService.xcconfig:
        * Configurations/WebContentService.xcconfig:
        * Configurations/WebKit.xcconfig:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::initializeProcessName):
        (WebKit::overrideSystemProxies):
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * Platform/spi/ios/UIKitSPI.h:
        * Shared/ios/ChildProcessIOS.mm:
        (WebKit::ChildProcess::initializeSandbox):
        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        (WebKit::InteractionInformationAtPosition::decode):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setApplicationIsDaemon):
        (WebKit::enableSandboxStyleFileQuarantine):
        * Shared/mac/CodeSigning.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _webViewPrintFormatter]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (-[WKRemoteView initWithFrame:contextID:]):
        * UIProcess/_WKWebViewPrintFormatter.mm:
        * UIProcess/_WKWebViewPrintFormatterInternal.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _didExitStableState]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView _defineForWebView:]):
        (-[WKContentView setSelectedTextRange:]):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView _updateChangedSelection:]):
        * UIProcess/ios/WKLegacyPDFView.mm:
        * UIProcess/ios/WKPDFView.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::getPositionInformation):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeSandbox):
        * config.h:

2018-07-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        50 failing WebDriver tests after r233417
        https://bugs.webkit.org/show_bug.cgi?id=187263

        Reviewed by Frédéric Wang.

        A std::optional value is used while being std::nullopt. This is because the wrong input source is used when
        transitioning keyboard input states.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):

2018-07-03  Youenn Fablet  <youenn@apple.com>

        Remove quarantine for Webex plugin
        https://bugs.webkit.org/show_bug.cgi?id=187050
        rdar://problem/41478189

        Reviewed by Brent Fulgham.

        Update the Plugin Info.plist to not do quarantine of downloaded files by default.
        Update PluginProcess implementation to reenable quarantine for all plug-ins except cisco webex plug-in.

        * Platform/spi/mac/QuarantineSPI.h: Add qtn_proc_init.
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * PluginProcess/PluginProcess.h:
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::shouldOverrideQuarantine):
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::shouldOverrideQuarantine):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::initializeSandbox):

2018-07-03  Youenn Fablet  <youenn@apple.com>

        Crash in  WebKit::CacheStorage::Cache::toRecordInformation when running http/tests/cache-storage/cache-persistency.https.html
        https://bugs.webkit.org/show_bug.cgi?id=187243

        Reviewed by Chris Dumez.

        In case a caches object has an engine, it uses the engine to get the salt.
        In case engine/caches are non persistent, no salt was set for the engine, hence the crashes.
        Add an empty salt whenever initializing a non-persistent engine to remove the crash.

        Covered by updated expectations for two tests.

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

2018-07-03  Youenn Fablet  <youenn@apple.com>

        Fix regression introduced in r233335
        https://bugs.webkit.org/show_bug.cgi?id=187282

        Reviewed by Chris Dumez.

        When checking for navigation loads, we need to return whether the request URL matches the service worker URL.
        Before this patch, if the request URL was not matching the service worker URL, we were using the origin/referrer
        which should only be used for subresource loads.

        Covered by imported/w3c/web-platform-tests/service-workers/service-worker/claim-with-redirect.https.html
        being no longer flaky.

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::isValidFetch):

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

        Make CallbackMap::invalidate() safe to re-enter
        https://bugs.webkit.org/show_bug.cgi?id=187298
        <rdar://problem/41057167>

        Reviewed by Geoffrey Garen.

        Made it safe to re-enter CallbackMap::invalidate(), GenericCallback::performCallbackWithReturnValue(),
        GenericCallback::invalidate() & invalidateCallbackMap() since those execute client blocks which may
        re-enter WebKit.

        * UIProcess/GenericCallback.h:
        (WebKit::GenericCallback::performCallbackWithReturnValue):
        (WebKit::invalidateCallbackMap):

2018-07-03  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Clean up sandbox warnings found during Public Beta
        https://bugs.webkit.org/show_bug.cgi?id=187308
        <rdar://problem/41203914>

        Reviewed by Eric Carlson.

        I made our sandbox overly restrictive during our iOS 12.0 development cycle, and have found a number of missing items.

        This patch adds the missing IOKit properties, and removes a duplicate call to (play-media).

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

2018-07-03  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Embed certificate information into ResourceResponse.
        https://bugs.webkit.org/show_bug.cgi?id=187102

        Reviewed by Youenn Fablet.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::curlDidComplete):.

2018-07-03  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] We fail to make surfaces volatile when suspending, increasing memory impact
        https://bugs.webkit.org/show_bug.cgi?id=187285
        rdar://problem/41732391

        Reviewed by Tim Horton.
        
        The "Mach port as layer contents" code path used in iOS WK2 relies on replacing the 
        Mach port layer contents with the actual IOSurface on suspension (otherwise the
        live Mach port will keep the surface in use). However, we were never hitting this
        RemoteLayerTreeHost::mapAllIOSurfaceBackingStore() code path on iOS 11 and later
        because UIKit stopped firing the notification we relied on.
        
        To fix this, use the _UIApplicationDidFinishSuspensionSnapshotNotification notification
        which is fired on UIApp.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker):

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

        Clean up the layer volatility code and logging
        https://bugs.webkit.org/show_bug.cgi?id=187286

        Reviewed by Tim Horton.
        
        Fix the layer volatility logging so it doesn't say "succeeded" when it actually failed
        and gave up.
        
        Use a couple of lambda functions in RemoteLayerBackingStore::setBufferVolatility() to
        make the code easier to read.

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::setBufferVolatility):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::callVolatilityCompletionHandlers):
        (WebKit::WebPage::layerVolatilityTimerFired):
        (WebKit::WebPage::markLayersVolatile):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::markLayersVolatile):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::markAllLayersVolatile):
        * WebProcess/WebProcess.h:

2018-07-03  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make WebsiteDataStore::getAllStorageAccessEntries() call the right network process instead of iterating over the process pools
        https://bugs.webkit.org/show_bug.cgi?id=187277
        <rdar://problem/41745510>

        Reviewed by Chris Dumez.

        Existing tests use this code. The change is for correctness.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _getAllStorageAccessEntriesFor:completionHandler:]):
            Now receives a WKWebView from its caller and gets the page ID from it.
        (-[WKWebsiteDataStore _getAllStorageAccessEntries:]): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::getAllStorageAccessEntries):
            Now gets a page ID from its caller and gets the right network process
            through it.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Unreviewed, rolling out r233461.

        Assertions triggered during iOS 11 debug layout and API tests

        Reverted changeset:

        "[iOS] Add assert to catch improper use of WebCore::Timer in
        UI Process"
        https://bugs.webkit.org/show_bug.cgi?id=185330
        https://trac.webkit.org/changeset/233461

2018-07-03  Youenn Fablet  <youenn@apple.com>

        Update com.cmbchina.CMBSecurity.sb to make it functional
        https://bugs.webkit.org/show_bug.cgi?id=187278

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/com.cmbchina.CMBSecurity.sb:

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

        Update Fullscreen anti-phishing alert text
        https://bugs.webkit.org/show_bug.cgi?id=187199
        <rdar://problem/41162543>

        Reviewed by Brent Fulgham.

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

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

        [iOS] Add assert to catch improper use of WebCore::Timer in UI Process
        <https://webkit.org/b/185330>
        <rdar://problem/32816079>

        Reviewed by Darin Adler.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::StorageProcess):
        * WebProcess/WebProcess.cpp:
        (WebKit::m_nonVisibleProcessCleanupTimer):
        - Call setWebKitProcessType() to se the global for the current
          process.

2018-07-03  Frederic Wang  <fred.wang@free.fr>

        [iOS] Animations with Bézier timing function not suspended on UI process when animation-play-state is set to "paused"
        https://bugs.webkit.org/show_bug.cgi?id=170784

        Reviewed by Antoine Quint.

        In order to pause a running animation, GraphicsLayerCA::pauseCAAnimationOnLayer calls
        PlatformCALayer::addAnimationForKey, assuming it will replace the current animation.
        This patch fixes PlatformCALayerRemote::addAnimationForKey to ensure this assumption holds.

        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::addAnimationForKey): If the animation was already sent to
        the UI process, make sure it is properly updated.

2018-07-02  Youenn Fablet  <youenn@apple.com>

        Add sandbox to microdone plugin
        https://bugs.webkit.org/show_bug.cgi?id=187149
        <rdar://problem/41538057>

        Unreviewed.

        * Resources/PlugInSandboxProfiles/cn.microdone.cmb.safari.sb: Renamed from Source/WebKit/Resources/PlugInSandboxProfiles/cn.microdone.cmb.safari.
        * WebKit.xcodeproj/project.pbxproj:

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

        Adjust now-incorrect animated resize logging after r232544
        https://bugs.webkit.org/show_bug.cgi?id=187281
        <rdar://problem/41645347>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didCommitLayerTree:]):
        (-[WKWebView _didCompleteAnimatedResize]):
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        _beginAnimatedResizeWithUpdate: and _didCompleteAnimatedResize are
        not strictly paired; we could instead track the SPI, but it's a bit
        tricky since resizeWithContentHidden has an implicit endAnimatedResize.
        Instead, just log if we still have a resizeAnimationView when we're
        committing outside of an animated resize, which seems to be the original concern,
        and point toward the possibility of unpaired begin/end.
        Also fix logging that has the wrong method name.

2018-07-02  Youenn Fablet  <youenn@apple.com>

        Update com.apple.NPSafeInput.sb to make it functional
        https://bugs.webkit.org/show_bug.cgi?id=187276

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/com.apple.NPSafeInput.sb:

2018-07-02  Youenn Fablet  <youenn@apple.com>

        Update com.cfca.npSecEditCtl.MAC.BOC.plugin.sb to make it functional
        https://bugs.webkit.org/show_bug.cgi?id=187261

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/com.cfca.npSecEditCtl.MAC.BOC.plugin.sb:

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

        Crash notifying observers of responsiveness state change
        <rdar://problem/41267796> and https://bugs.webkit.org/show_bug.cgi?id=187262

        Reviewed by Tim Horton.

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::callObserverCallback): Copy the container ahead of time.

2018-07-02  Sihui Liu  <sihui_liu@apple.com>

        Remove InitWebCoreThreadSystemInterface() in WKProcessPool _initWithConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=187252

        Reviewed by Dan Bernstein.

        Clean up after <rdar://problem/15256572>.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup initWithInjectedBundleURL:]):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _initWithConfiguration:]):

2018-07-02  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r233381): Double WebResourceLoadStatisticsStore destructor invocation
        https://bugs.webkit.org/show_bug.cgi?id=187247

        Reviewed by Chris Dumez.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        Don't call postTask() to dispatch this task, as that keeps a reference
        to this WebResourceLoadStatisticsStore object and thus causes problems
        when invoked from the destructor in the form of a second destructor
        invocation that ends up crashing the process. Blocking nature of this
        call should be enough to avoid WebResourceLoadStatisticsStore lifetime
        issues.

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

        Delete display link when closing page or the WebContent process has crashed.
        https://bugs.webkit.org/show_bug.cgi?id=186895

        Reviewed by Brent Fulgham.

        If there is a running display link in the UI process, there is no need to keep it around if the
        page is being closed or the WebContent process has crashed.

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

2018-06-23  Darin Adler  <darin@apple.com>

        [Cocoa] Improve ARC compatibility of more code in JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=186973

        Reviewed by Dan Bernstein.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::hasEntitlement): Use WTF::hasEntitlement.

        * Shared/mac/SandboxUtilities.h: Removed connectedProcessHasEntitlement since
        we can now use WTF::hasEntitlement instead.
        * Shared/mac/SandboxUtilities.mm: Ditto.

        * StorageProcess/ios/StorageProcessIOS.mm:
        (WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement): Use
        WTF::hasEntitlement.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::parentProcessHasServiceWorkerEntitlement): Ditto.

2018-06-30  David Kilzer  <ddkilzer@apple.com>

        Fix clang static analyzer warnings: Garbage return value
        <https://webkit.org/b/187224>

        Reviewed by Eric Carlson.

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::changeCount):
        (WebKit::WebPlatformStrategies::addTypes):
        (WebKit::WebPlatformStrategies::setTypes):
        (WebKit::WebPlatformStrategies::setBufferForType):
        (WebKit::WebPlatformStrategies::setPathnamesForType):
        (WebKit::WebPlatformStrategies::setStringForType):
        (WebKit::WebPlatformStrategies::getNumberOfFiles):
        (WebKit::WebPlatformStrategies::getPasteboardItemsCount):
        (WebKit::WebPlatformStrategies::writeCustomData):
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        (WebKit::WebEditorClient::substitutionsPanelIsShowing):
        - Use brace initialization for local variables.

2018-06-30  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, add missing PLATFORM(COCOA) guard after r233207
        https://bugs.webkit.org/show_bug.cgi?id=186788
        <rdar://problem/41094167>

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleExtendClassesForParameterCoder):

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

        Added a missing availability attribute.

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:

2018-06-29  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make network process calls only for the process pool that the page belongs to
        https://bugs.webkit.org/show_bug.cgi?id=187206
        <rdar://problem/41659160>

        Reviewed by Chris Dumez.

        Instead of iterating over all process pools, we should resolve which
        process pool the page belongs to and call the network process only for
        that pool. This is especially important since we use WTFMove for the
        completion handlers.

        This patch also renames "callback" to "completionHandler" for
        the functions touched.

        A FIXME comment is added to WebsiteDataStore::getAllStorageAccessEntries()
        where we currently don't have a page ID to do the lookup with.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToPartitionOrBlockCookies):
        (WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler):
        (WebKit::WebsiteDataStore::getAllStorageAccessEntries):
        (WebKit::WebsiteDataStore::grantStorageAccessHandler):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):

2018-06-29  Chris Dumez  <cdumez@apple.com>

        Add utility methods to WebResourceLoadStatisticsStore to hop back and forth between threads
        https://bugs.webkit.org/show_bug.cgi?id=187200

        Reviewed by Brent Fulgham.

        Add utility methods to WebResourceLoadStatisticsStore to hop back and forth between threads,
        in order the simplify the code a little bit.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebResourceLoadStatisticsStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setShouldSubmitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::postTask):
        (WebKit::WebResourceLoadStatisticsStore::postTaskReply):
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        (WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
        (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):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningStateReset):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
        (WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
        (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-29  Aditya Keerthi  <akeerthi@apple.com>

        [macOS] Do not crash if there is an attempt to copy a file URL to the clipboard
        https://bugs.webkit.org/show_bug.cgi?id=187183

        Reviewed by Wenson Hsieh.

        r210683 introduced logic to prevent file URLs from being copied to the clipboard
        in unexpected cases. The current logic always crashes the WebProcess if
        webProcessProxy->checkURLReceivedFromWebProcess returns false. Instead of
        crashing, we can fail silently and not copy anything to the clipboard.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::setPasteboardPathnamesForType): Removed call to markCurrentlyDispatchedMessageAsInvalid() which was causing the process to crash.

2018-06-29  Chris Dumez  <cdumez@apple.com>

        Regression(r233359): Caused ITP tests to be flaky
        https://bugs.webkit.org/show_bug.cgi?id=187189

        Reviewed by Youenn Fablet.

        r233359 started using m_resolvedConfiguration.resourceLoadStatisticsDirectory instead of
        m_configuration.resourceLoadStatisticsDirectory for the ITP path. This is consistent
        with what we do for other database paths so that things like '~' in paths get resolved.

        This introduced flakiness because the resourceLoadStatisticsDirectory was never getting
        resolved and m_resolvedConfiguration.resourceLoadStatisticsDirectory was not set.
        Update the WebsiteDataStore so that m_resolvedConfiguration.resourceLoadStatisticsDirectory
        properly gets set to the resolved version of m_configuration.resourceLoadStatisticsDirectory.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2018-06-29  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Don't create a WebResourceLoadStatisticsStore for ephemeral sessions
        https://bugs.webkit.org/show_bug.cgi?id=187154
        <rdar://problem/41487250>

        Reviewed by Brent Fulgham and Chris Dumez.

        Most of the changes in this patch remove the boolean parameter for tracking
        ephemeral sessions and the IsReadOnly enum.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setResourceLoadStatisticsTestingCallback:]):
            Now returns early for ephemeral sessions.
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
            Now returns early for ephemeral sessions.
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2018-06-29  Chris Dumez  <cdumez@apple.com>

        Stop using lambdas for WebResourceLoadStatisticsStore to interact with its WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=187165

        Reviewed by Brent Fulgham.

        Stop using lambdas for WebResourceLoadStatisticsStore to interact with its WebsiteDataStore. Instead,
        WebResourceLoadStatisticsStore now holds a weak pointer to its WebsiteDataStore and is able to call
        methods on it directly. Reducing the indirection makes the code less complex and more understandable.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToPartitionOrBlockCookiesHandler):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2018-06-29  Miguel Gomez  <magomez@igalia.com>

        [WPE] Some frames are dropped when using rAF to animate an element
        https://bugs.webkit.org/show_bug.cgi?id=187175

        Always call renderNextFrame in ThreadedCompositor::requestDisplayRefreshMonitorUpdate()
        so we have to process any pending layer flush request.

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::handleDisplayRefreshMonitorUpdate):

2018-06-28  Chris Dumez  <cdumez@apple.com>

        Make sure the WebResourceLoadStatisticsStore gets destroyed on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=187143

        Reviewed by Youenn Fablet.

        Have WebResourceLoadStatisticsStore subclass ThreadSafeRefCounted<WebResourceLoadStatisticsStore, WTF::DestructionThread::Main>
        instead of IPC::Connection::WorkQueueMessageReceiver. This makes sure that the WebResourceLoadStatisticsStore
        objects get destroyed on the main thread, even if the last ref was held by a background thread.

        Also, methods called by IPC are now called on the main thread instead of the background queue. I think it is clearer for all
        of WebResourceLoadStatisticsStore usage to be on the main thread. Expensive work is still done on the background queue, inside
        the persistent / memory store classes.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::processWillOpenConnection):
        (WebKit::WebResourceLoadStatisticsStore::processDidCloseConnection):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-28  Jiewen Tan  <jiewen_tan@apple.com>

        Add nullptr check for xpc_connection_t in AuthenticationManager::initializeConnection
        https://bugs.webkit.org/show_bug.cgi?id=187110
        <rdar://problem/41536815>

        Reviewed by Brent Fulgham.

        In some rare cases as shown by crash tracers that the passed xpc_connection_t object could be nullptr,
        and xpc_connection_set_event_handler won't do the nullptr check on its parameters. Therefore, we should
        do it by ourselves.

        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection):
        * UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm:
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc const):

2018-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] DataTransfer.getData always returns the empty string when dropping text
        https://bugs.webkit.org/show_bug.cgi?id=187130
        <rdar://problem/41014117>

        Reviewed by Ryosuke Niwa.

        Add plumbing to grab information for each item in the pasteboard. See WebCore ChangeLog for more detail.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::allPasteboardItemInfo):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::allPasteboardItemInfo):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2018-06-28  Youenn Fablet  <youenn@apple.com>

        Early return when handling fetch event in case service worker origin does not match origin of a subresource load
        https://bugs.webkit.org/show_bug.cgi?id=187153
        <rdar://problem/41329832>

        Reviewed by Chris Dumez.

        Stop crashing the service worker process in case a subresource load origin is not matching a service worker origin.
        Instead, just return early so that the load will be handled by the network process.

        Keep crashing in case a navigation load is not matching its service worker origin.
        Add more logging to help with the debugging.

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::logValidFetchError):
        (WebKit::isValidFetch):
        (WebKit::WebSWContextManagerConnection::startFetch):

2018-06-28  Jeremy Jones  <jeremyj@apple.com>

        Fullscreen exits when placeholder is removed then added during a single runloop.
        https://bugs.webkit.org/show_bug.cgi?id=187079

        Reviewed by Jer Noble.

        Instead of closing fullscreen as soon as the placeholder is removed from the view hierarchy,
        give the placeholder until the next runloop to be re-added to the view hierarchy.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController placeholderWillMoveToSuperview:]):

2018-06-28  Youenn Fablet  <youenn@apple.com>

        Handle the case of registerMDNSNameCallback called several times
        https://bugs.webkit.org/show_bug.cgi?id=187150
        <rdar://problem/41329832>

        Reviewed by Eric Carlson.

        This is a speculative fix on the basis that registerMDNSNameCallback may be called several times.
        In that case, we would have freed the context after the first call and would reuse it for the second call.

        Instead, keep a map of pending requests and pass to registerMDNSNameCallback an identifier to that map.
        If the map has no value for that identifier, return early.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::~NetworkMDNSRegister):
        (WebKit::pendingRegistrationRequests):
        (WebKit::registerMDNSNameCallback):
        (WebKit::NetworkMDNSRegister::clearPendingRequests):
        (WebKit::NetworkMDNSRegister::registerMDNSName):
        * NetworkProcess/webrtc/NetworkMDNSRegister.h:
        (): Deleted.

2018-06-28  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix Win Cairo build after r233310.

        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-28  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix Win Cairo build after r233310.

        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-28  Chris Dumez  <cdumez@apple.com>

        Split memory store logic out of WebResourceLoadStatisticsStore to clarify threading model
        https://bugs.webkit.org/show_bug.cgi?id=187055
        <rdar://problem/41584026>

        Unreviewed, temporarily disable main thread assertion added to flushAndDestroyPersistentStore()
        in r233310, until Bug 187143 is fixed.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):

2018-06-28  Youenn Fablet  <youenn@apple.com>

        Add sandbox to microdone plugin
        https://bugs.webkit.org/show_bug.cgi?id=187149
        rdar://problem/41538057

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/cn.microdone.cmb.safari: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-06-28  Brian Burg  <bburg@apple.com>

        Web Inspector: REGRESSION(r223770): "Open Link" context menu action on a linkified URL doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=187146
        <rdar://problem/41369591>

        Reviewed by Joseph Pecoraro.

        When Web Inspector's page receives a navigation request, it's supposed to redirect any
        non-Inspector navigations to be loaded in the inspected page. When I refactored to use
        modern a policy delegate, the one line that redirects the loads was left out.

        No new tests, because inspector tests can't navigate the inspector or inspected pages.

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

2018-06-28  Jeremy Jones  <jeremyj@apple.com>

        Crash when _topConstraint is null in element fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=187075

        Reviewed by Eric Carlson.

        NSArray can't contain a null pointer, so check for null before creating an array from a pointer.
        Use the recommended +deactivateConstraints: instead of -removeConstraints:.

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

2018-06-28  Chris Dumez  <cdumez@apple.com>

        Split memory store logic out of WebResourceLoadStatisticsStore to clarify threading model
        https://bugs.webkit.org/show_bug.cgi?id=187055
        <rdar://problem/41584026>

        Reviewed by Brent Fulgham.

        Split memory store logic out of WebResourceLoadStatisticsStore and into a ResourceLoadStatisticsMemoryStore class
        to clarify the threading model. Previously, some of the methods of the WebResourceLoadStatisticsStore had to be
        called on the main thread and some of them on the background queue, which was confusing and error prone. Now,
        all WebResourceLoadStatisticsStore methods (except for IPC ones which will be addressed in a follow-up) are called
        on the main thread. The ResourceLoadStatisticsMemoryStore objects is constructed / used and destroyed on the
        background queue, similarly to the ResourceLoadStatisticsPersistentStore. The WebResourceLoadStatisticsStore
        objects merely proxies calls from WebKit to those persistent / memory stores and takes care of hopping back and
        forth between the background thread and the work queue.

        While spliting code code, I found several instances where we were calling completion handlers on the wrong thread.
        I fixed those in this patch now that the model is clearer.

        We can likely clean up (organize the code a bit better) in a follow-up). This patch takes care of splitting the
        code as it was. Code that was called on the background queue was moved to ResourceLoadStatisticsMemoryStore class
        and code that was called on the main thread stays in WebResourceLoadStatisticsStore.

        * CMakeLists.txt:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm: Renamed from Source/WebKit/UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm.
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp: Added.
        (WebKit::appendWithDelimiter):
        (WebKit::OperatingDate::fromWallTime):
        (WebKit::OperatingDate::today):
        (WebKit::OperatingDate::secondsSinceEpoch const):
        (WebKit::OperatingDate::operator== const):
        (WebKit::OperatingDate::operator< const):
        (WebKit::OperatingDate::operator<= const):
        (WebKit::OperatingDate::OperatingDate):
        (WebKit::mergeOperatingDates):
        (WebKit::pruneResources):
        (WebKit::computeImportance):
        (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
        (WebKit::ResourceLoadStatisticsMemoryStore::~ResourceLoadStatisticsMemoryStore):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPersistentStorage):
        (WebKit::ResourceLoadStatisticsMemoryStore::calculateAndSubmitTelemetry):
        (WebKit::ResourceLoadStatisticsMemoryStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::ResourceLoadStatisticsMemoryStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::ResourceLoadStatisticsMemoryStore::setShouldSubmitTelemetry):
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain):
        (WebKit::ResourceLoadStatisticsMemoryStore::markAsPrevalentIfHasRedirectedToPrevalent):
        (WebKit::ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
        (WebKit::ResourceLoadStatisticsMemoryStore::setResourceLoadStatisticsDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::scheduleStatisticsProcessingRequestIfNecessary):
        (WebKit::ResourceLoadStatisticsMemoryStore::cancelPendingStatisticsProcessingRequest):
        (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
        (WebKit::ResourceLoadStatisticsMemoryStore::logUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::logNonRecentUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResource):
        (WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentResource const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isVeryPrevalentResource const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubFrameUnder):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsRedirectingTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearPrevalentResource):
        (WebKit::ResourceLoadStatisticsMemoryStore::setGrandfathered):
        (WebKit::ResourceLoadStatisticsMemoryStore::isGrandfathered const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubframeUnderTopFrameOrigin):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTimeToLiveUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTimeToLiveCookiePartitionFree):
        (WebKit::ResourceLoadStatisticsMemoryStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::ResourceLoadStatisticsMemoryStore::setGrandfatheringTime):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveDataRecords const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setDataRecordsBeingRemoved):
        (WebKit::ResourceLoadStatisticsMemoryStore::ensureResourceStatisticsForPrimaryDomain):
        (WebKit::ResourceLoadStatisticsMemoryStore::createEncoderFromData const):
        (WebKit::ResourceLoadStatisticsMemoryStore::mergeWithDataFromDecoder):
        (WebKit::ResourceLoadStatisticsMemoryStore::clear):
        (WebKit::ResourceLoadStatisticsMemoryStore::wasAccessedAsFirstPartyDueToUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::mergeStatistics):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldPartitionCookies):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldBlockCookies):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookiePartitioning):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookiePartitioningForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearPartitioningStateForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::resetCookiePartitioningState):
        (WebKit::ResourceLoadStatisticsMemoryStore::processStatistics const):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUnexpiredRecentUserInteraction const):
        (WebKit::ResourceLoadStatisticsMemoryStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        (WebKit::ResourceLoadStatisticsMemoryStore::includeTodayAsOperatingDateIfNecessary):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasStatisticsExpired const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setMaxStatisticsEntries):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPruneEntriesDownTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::pruneStatisticsIfNeeded):
        (WebKit::ResourceLoadStatisticsMemoryStore::resetParametersToDefaultValues):
        (WebKit::ResourceLoadStatisticsMemoryStore::logTestingEvent):
        (WebKit::ResourceLoadStatisticsMemoryStore::setLastSeen):
        (WebKit::ResourceLoadStatisticsMemoryStore::setVeryPrevalentResource):
        (WebKit::ResourceLoadStatisticsMemoryStore::removeAllStorageAccess):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h: Added.
        (WebKit::ResourceLoadStatisticsMemoryStore::isEmpty const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setStorageAccessPromptsEnabled):
        (WebKit::ResourceLoadStatisticsMemoryStore::setDebugLogggingEnabled):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebResourceLoadStatisticsStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setShouldSubmitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        (WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
        (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):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningStateReset):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToPartitionOrBlockCookiesHandler):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        (WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
        (WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
        (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
        (WebKit::WebResourceLoadStatisticsStore::logTestingEvent):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::sortedPrevalentResourceTelemetry):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        * UIProcess/WebResourceLoadStatisticsTelemetry.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-06-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) when dragging file into webview
        https://bugs.webkit.org/show_bug.cgi?id=175602

        Reviewed by Carlos Garcia Campos.

        We check using the GdkDragContext to ensure the DroppingContext is still alive (present in
        m_droppingContexts), but access it via the pointer to the DroppingContext that could be
        dangling. This happens on every drag. I can't actually reproduce the original assertion
        since I'm currently working with an asan build, but I imagine it's probably the same issue
        that I'm fixing here.

        * UIProcess/gtk/DragAndDropHandler.cpp:
        (WebKit::DragAndDropHandler::dragLeave):

2018-06-27  Timothy Hatcher  <timothy@apple.com>

        Don't expose new semantic -apple-system color keywords on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=187080
        rdar://problem/41505699

        Reviewed by Tim Horton.

        * DerivedSources.make: Use gnu++14, since gnu++17 is giving errors on macOS 10.12.

2018-06-27  Megan Gardner  <megan_gardner@apple.com>

        Fix IBeam issues with iPad apps on Mac
        https://bugs.webkit.org/show_bug.cgi?id=186900

        Reviewed by Wenson Hsieh.

        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        (WebKit::InteractionInformationAtPosition::decode):

        Add functionality to determine what a caret rect should be, but as it is
        expensive, it should only be done for this platform.
        
        * Shared/ios/InteractionInformationRequest.cpp:
        (WebKit::InteractionInformationRequest::isApproximateForRequest):
        * Shared/ios/InteractionInformationRequest.h:

        As there is no way to premptively request information on hover, we need to use 
        the last cached information, but only if it is close to the point we are about
        to request information for. So having a way to determine if a point is very close
        to a previous point is a good idea.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _currentPositionInformationIsApproximateForRequest:]):
        (-[WKContentView closestPositionToPoint:]):

        UIKit is using this function to determine if we should show an Ibeam or not.
        So we need to implement it, at least for this platform. 

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

        Pass up the calculated caret rect, but only for iPad apps on Mac.

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

        [GTK][WPE] Use LazyNeverDestroyed<XErrorTrapper> to remove static initializers
        https://bugs.webkit.org/show_bug.cgi?id=187089

        Reviewed by Michael Catanzaro.

        Use LazyNeverDestroyed<XErrorTrapper> instead of global std::unique_ptr<XErrorTrapper>.
        Since this variable's exit time destructor is not important in this code, using
        LazyNeverDestroyed<XErrorTrapper> is fine. This removes the last static initializer
        of libwebkit2gtk.so.

        * PluginProcess/unix/PluginProcessMainUnix.cpp:

2018-06-27  Youenn Fablet  <youenn@apple.com>

        Add a sandbox profile for some additional bank plugins
        https://bugs.webkit.org/show_bug.cgi?id=187105

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/cfca.com.npCryptoKit.CGB.MAC.sb: Added.
        * Resources/PlugInSandboxProfiles/cfca.com.npP11CertEnroll.MAC.CGB.sb: Added.
        * Resources/PlugInSandboxProfiles/com.apple.BocomSubmitCtrl.sb: Added.
        * Resources/PlugInSandboxProfiles/com.apple.NPSafeInput.sb: Added.
        * Resources/PlugInSandboxProfiles/com.apple.NPSafeSubmit.sb: Added.
        * Resources/PlugInSandboxProfiles/com.cfca.npSecEditCtl.MAC.BOC.plugin.sb: Added.
        * Resources/PlugInSandboxProfiles/com.cmbchina.CMBSecurity.sb: Added.
        * Resources/PlugInSandboxProfiles/com.ftsafe.NPAPI-Core-Safe-SoftKeybaord.plugin.rfc1034identifier.sb: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-06-27  Youenn Fablet  <youenn@apple.com>

        NetworkLoadChecker should not need to hard ref NetworkConnectionToWebProcess
        https://bugs.webkit.org/show_bug.cgi?id=186551

        Reviewed by Daniel Bates.

        Removed the need for NetworkLoadChecker to reference a NetworkConnectionToWebProcess.
        Instead a CSP client is given to NetworkLoadChecker when needed.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::check):
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::contentSecurityPolicy):
        (WebKit::NetworkLoadChecker::addConsoleMessage): Deleted.
        (WebKit::NetworkLoadChecker::sendCSPViolationReport): Deleted.
        (WebKit::NetworkLoadChecker::enqueueSecurityPolicyViolationEvent): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::PingLoad::willPerformHTTPRedirection):
        * NetworkProcess/PingLoad.h:

2018-06-27  Stephan Szabo  <stephan.szabo@sony.com>

        [Wincairo] Add support for context menus to non-legacy minibrowser
        https://bugs.webkit.org/show_bug.cgi?id=186815.

        Reviewed by Ryosuke Niwa.

        * UIProcess/WebPageProxy.h:
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::viewWidget):
        * UIProcess/win/PageClientImpl.h:
        * UIProcess/win/WebContextMenuProxyWin.cpp:
        (WebKit::WebContextMenuProxyWin::show):
        (WebKit::createMenu):
        (WebKit::createMenuItem):
        (WebKit::populate):
        (WebKit::WebContextMenuProxyWin::showContextMenuWithItems):
        (WebKit::WebContextMenuProxyWin::WebContextMenuProxyWin):
        (WebKit::WebContextMenuProxyWin::~WebContextMenuProxyWin):
        * UIProcess/win/WebContextMenuProxyWin.h:
        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::viewWidget):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::wndProc):
        (WebKit::WebView::onMenuCommand):
        * UIProcess/win/WebView.h:

2018-06-27  Youenn Fablet  <youenn@apple.com>

        Disable content blockers in NetworkLoadChecker except for ping loads
        https://bugs.webkit.org/show_bug.cgi?id=187083
        <rdar://problem/41440083>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::enableContentExtensionsCheck):
        * NetworkProcess/PingLoad.cpp:

2018-06-27  Simon Fraser  <simon.fraser@apple.com>

        https://hackernoon.com/ uses lots of layer backing store
        https://bugs.webkit.org/show_bug.cgi?id=186909
        rdar://problem/40257540

        Reviewed by Tim Horton.
        
        PlatformCALayerRemote was actually holding onto backing stores for layers with
        backing store detached, which could increase memory use. When told that backing stores
        are not attached, explicitly throw away the backing, and re-create it (via setNeedsDisplay)
        when attached. This is now similar to what PlatformLayerCACocoa does.

        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::setNeedsDisplayInRect):
        (WebKit::PlatformCALayerRemote::setNeedsDisplay):
        (WebKit::PlatformCALayerRemote::hasContents const):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

2018-06-27  Jonathan Bedard  <jbedard@apple.com>

        Enable WebKit iOS 12 build
        https://bugs.webkit.org/show_bug.cgi?id=187024
        <rdar://problem/39759057>

        Reviewed by David Kilzer.

        * Platform/spi/ios/PDFKitSPI.h: Added PDFKit SPI.
        * Platform/spi/ios/UIKitSPI.h: Add new UIKit SPI and UICompositingMode enumeration.
        * UIProcess/ios/WKPDFView.mm: Use PDFKitSPI header.
        * UIProcess/ios/WKSystemPreviewView.mm: Use CoreGraphicsSPI.h.
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm: Use QuartzCoreSPI.h.

2018-06-27  Timothy Horton  <timothy_horton@apple.com>

        CSS Animation Triggers is not an experimental feature, should be globally off by default

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-06-27  Timothy Horton  <timothy_horton@apple.com>

        Promote the Secure Context API feature from experimental-yet-on-by-default to always-on

        Reviewed by Dan Bates.

        * Shared/WebPreferences.yaml:
        Secure Context API is on by default, it's not experimental anymore.

2018-06-27  Timothy Horton  <timothy_horton@apple.com>

        Make Link Preload an on-by-default feature
        https://bugs.webkit.org/show_bug.cgi?id=187104

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:
        This should be on, not experimental. It already shipped on in the past.

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

        Regression(r233208): Completion handler does not get called on GTK port
        https://bugs.webkit.org/show_bug.cgi?id=187099

        Reviewed by Antti Koivisto.

        Make sure UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler's completion handler
        gets called on non-COCOA ports.

        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-27  Tim Horton  <timothy_horton@apple.com>

        When trying to print a very long email on iOS, the print preview is blank
        https://bugs.webkit.org/show_bug.cgi?id=187077
        <rdar://problem/41107013>

        Reviewed by Timothy Hatcher.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):
        ChildProcessProxy::sendSync has a (surprising) default timeout of 1 second,
        (as opposed to Connection::sendSync's default timeout of ∞ seconds).
        The printing path already waits ∞ seconds for the final PDF, but currently
        uses the default 1 second timeout for page count computation. If page
        count computation takes more than 1 second, the preview will be blank.
        Since the print preview is generated asynchronously, we really want
        to wait until it's done, and not give up after 1 second.

2018-06-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iPad apps on macOS] Unable to interact with video elements that have started playing
        https://bugs.webkit.org/show_bug.cgi?id=187073
        <rdar://problem/40591107>

        Reviewed by Tim Horton.

        On iOS, we currently force remote hosting contexts to be non-interactive by passing in `kCAContextIgnoresHitTest`
        when creating the CAContext. However, this flag is not respected by CoreAnimation when running iOS apps on macOS.
        This means all HID events dispatched over a video that has been played (which causes WebKit to insert a
        CALayerHost-backed WKRemoteView in the view hierarchy) will be routed to the context ID of the video's CAContext
        rather than the context ID of the key window containing the WKWebView.

        This subsequently causes all gesture recognizers (hover, touch, tap, long press) to fail recognition when
        running iOS apps on macOS. To address this, we set a flag on WKRemoteView's CALayerHost to prevent hit-testing
        to the remote layer. This allows us to avoid routing HID events to the wrong context, and instead target the
        main UIWindow.

        Manually verified that click, touch, and mouseenter/mouseleave events are dispatched when interacting over a
        video element.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (-[WKRemoteView initWithFrame:contextID:]):

2018-06-26  Commit Queue  <commit-queue@webkit.org>

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

        "This is breaking launching some plugins" (Requested by youenn
        on #webkit).

        Reverted changeset:

        "Remove quarantine for Webex plugin"
        https://bugs.webkit.org/show_bug.cgi?id=187050
        https://trac.webkit.org/changeset/233232

2018-06-26  Timothy Horton  <timothy_horton@apple.com>

        Rearrange some WebPreferences; move two experimental prefs into the experimental section

        * Shared/WebPreferences.yaml:

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

        Deal better with the network process crashing on startup
        https://bugs.webkit.org/show_bug.cgi?id=187065
        <rdar://problem/41451622>

        Reviewed by Geoffrey Garen.

        When a network process crashes on startup, we would not attempt to relaunch it. If there were web
        processes waiting for a connection to this network process, we would send them an invalid connection
        identifier which would cause them to forcefully crash.

        Instead, we now apply the same policy whether a network process crashes on startup or later:
        - We attempt to relaunch the network process
        - If there were pending connections from WebContent processes, we ask the new Network process instead.

        As a result, WebContent processes no longer crash in this case. Instead, they wait for a valid
        connection to the network process.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _makeNextNetworkProcessLaunchFailForTesting]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getLaunchOptions):
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessCrashed):
        * UIProcess/WebProcessPool.h:

2018-06-26  Daniel Bates  <dabates@apple.com>

        REGRESSION (r231479): Unable to buy Odeon cinema tickets in STP (bogus 'X-Frame-Options' to 'SAMEORIGIN')
        https://bugs.webkit.org/show_bug.cgi?id=186090
        <rdar://problem/40692595>

        Reviewed by Andy Estes.

        Fixes an issue where a page P delivered with "X-Frame-Options: SAMEORIGIN" loaded in a sub-
        frame would be blocked if we were redirected to it in response to the cross-origin POST
        request regardless of whether P is same-origin with its parent document.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForXFrameOptions): Compare the origin
        of the top frame's document as opposed to the source origin. The latter represents the
        origin of the document that initiated the navigation, which can be cross-origin, and
        should not be considered when applying "X-Frame-Options: SAMEORIGIN". This check exists
        as a performance optimization to avoid traversing over all frame ancestors only to find
        out that the innermost frame (the one that made this request) is cross-origin with the
        top-most frame.
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): Exclude the origin of the
        frame that is making the load request from the list of ancestor origins. This makes the
        X-Frame-Options algorithm in WebKit2 match the logic we do in FrameLoader::shouldInterruptLoadForXFrameOptions().

2018-06-26  Youenn Fablet  <youenn@apple.com>

        Remove quarantine for Webex plugin
        https://bugs.webkit.org/show_bug.cgi?id=187050
        rdar://problem/41478189

        Reviewed by Brent Fulgham.

        Update the Plugin Info.plist to not do quarantine of downloaded files by default.
        Update PluginProcess implementation to reenable quarantine for all plug-ins except cisco webex plug-in.

        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * PluginProcess/PluginProcess.h:
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::shouldOverrideQuarantine):
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::shouldOverrideQuarantine):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::initializeSandbox):

2018-06-26  Jeremy Jones  <jeremyj@apple.com>

        Ensure element fullscreen animation is always visible.
        https://bugs.webkit.org/show_bug.cgi?id=187068
        rdar://problem/36187369

        Reviewed by Eric Carlson.

        The fullscreen animation is important for communicating to users that they are no longer in inline mode.
        If fullscreen animation's inline rect is not visible, animate from a point in the middle of the screen.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (WebKit::safeInlineRect):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):

2018-06-26  Youenn Fablet  <youenn@apple.com>

        Add a sandbox profile for com.google.o1dbrowserplugin plugin
        https://bugs.webkit.org/show_bug.cgi?id=187067

        Reviewed by Brent Fulgham.

        * Resources/PlugInSandboxProfiles/com.google.o1dbrowserplugin.sb: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-06-26  Tim Horton  <timothy_horton@apple.com>

        Promote two more experimental features to traditional features
        https://bugs.webkit.org/show_bug.cgi?id=187063

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:
        Promote some shipped/default-on features to non-experimental.

2018-06-26  Jiewen Tan  <jiewen_tan@apple.com>

        Rollout macOS sandbox change in r232276
        https://bugs.webkit.org/show_bug.cgi?id=186904
        <rdar://problem/41350969>

        Reviewed by Brent Fulgham.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

2018-06-26  Aditya Keerthi  <akeerthi@apple.com>

        Tap highlight displayed when tapping a field that is already focussed
        https://bugs.webkit.org/show_bug.cgi?id=187004
        <rdar://problem/41428008>
        Reviewed by Tim Horton.

        In the case where fast-clicking is enabled, _singleTapCommited: could be invoked
        before the tap highlight request, causing _potentialTapInProgress to be set to NO.
        This results in the early return for preventing multiple tap highlights on an
        assisted node to be skipped. Since a tap highlight should never be shown for an
        input field that is already focussed, _potentialTapInProgress can be removed from
        the early return condition.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]):

2018-06-26  Timothy Horton  <timothy_horton@apple.com>

        Rearrange some WebPreferences; move two non-experimental prefs out of the experimental section

        * Shared/WebPreferences.yaml:

2018-06-26  Tim Horton  <timothy_horton@apple.com>

        Promote some experimental features to traditional features
        https://bugs.webkit.org/show_bug.cgi?id=187047

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:
        Reindent.
        Promote some shipped/default-on features to non-experimental.

2018-06-26  Eric Carlson  <eric.carlson@apple.com>

        [Mac] AirPlay picker uses incorrect theme in Dark mode
        https://bugs.webkit.org/show_bug.cgi?id=187054
        <rdar://problem/41291093>

        Reviewed by Timothy Hatcher.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::showPlaybackTargetPicker): Pass m_defaultAppearance.

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

        Resource Load Statistics: Make WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains() wait for the network process before calling its callback
        https://bugs.webkit.org/show_bug.cgi?id=186903
        <rdar://problem/41350182>

        Reviewed by Brady Eidson.

        Follow-up fix after r233180 to address an API test crash. We need to keep the
        NetworkProcessProxy alive during the async updatePrevalentDomainsToPartitionOrBlockCookies
        request to make sure it completes.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToPartitionOrBlockCookies):

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

        Provide a way for Injected Bundles to indicate classes approved for NSSecureCoding
        https://bugs.webkit.org/show_bug.cgi?id=186788
        <rdar://problem/41094167>

        Reviewed by Chris Dumez.

        InjectedBundles support a mechanism to serialize data between the UIProcess and the
        WebContent process hosting the bundle. In some cases, we want to be able to serialize
        a custom data object that is not part of WebKit's native data types.

        After switching to strict NSSecureCoding, WebKit clients attempting to serialize these
        custom objects trigger a failure.

        This patch makes it possible for the InjectedBundle author to specify one (or more) data
        classes that are allowed to be serialized between the two processes.
        
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleExtendClassesForParameterCoder): Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (createWKArray): Added.
        (-[WKWebProcessPlugInController extendClassesForParameterCoder:]): Added.
        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::extendClassesForParameterCoder): Added.
        (WebKit::InjectedBundle::classesForCoder): New helper function.
        (WebKit::InjectedBundle::setBundleParameter): Modified to use the new set of valid
        classes for NSSecureCoding.

2018-06-26  Eric Carlson  <eric.carlson@apple.com>

        Enable mock capture devices on the iOS simulator
        https://bugs.webkit.org/show_bug.cgi?id=186846
        <rdar://problem/41289134>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml: Use DEFAULT_MOCK_CAPTURE_DEVICES_ENABLED.
        * Shared/WebPreferencesDefaultValues.h: Define DEFAULT_MOCK_CAPTURE_DEVICES_ENABLED, set to
        true in the iOS simulator only.

2018-06-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] 'deref': is not a member of 'WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains::<lambda_9d761a6dc12d95db7fa2d6f3f5aa26fa>'
        https://bugs.webkit.org/show_bug.cgi?id=187035

        Unreviewed build fix.

        MSVC can't compile the code using `this` in a generalized lambda
        capture in another lambda.

        In this case, there is no need to copy `protectedThis` for the
        inner lambda. Move `protectedThis` of the outer lambda to the
        inner as well as `completionHandler`.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        Moved `protectedThis` from the outer lambda to the inner.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        Ditto.

2018-06-26  Miguel Gomez  <magomez@igalia.com>

        [GTK] Many webpages can crash the browser in WebCore::CoordinatedGraphicsLayer::transformedVisibleRect
        https://bugs.webkit.org/show_bug.cgi?id=179304

        Reviewed by Michael Catanzaro.

        Add a way to attach to the CompositingCoordinator layers that were not created by it.

        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::attachLayer):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

2018-06-25  Tim Horton  <timothy_horton@apple.com>

        WKThumbnailView fallback background is blindingly bright in Dark Mode
        https://bugs.webkit.org/show_bug.cgi?id=187017
        <rdar://problem/41036209>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        (-[_WKThumbnailView initWithFrame:]):
        (-[_WKThumbnailView wantsUpdateLayer]):
        (-[_WKThumbnailView updateLayer]):
        Use a semantic color for the WKThumbnailView background color
        instead of flat white.

2018-06-25  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains() wait for the network process before calling its callback
        https://bugs.webkit.org/show_bug.cgi?id=186903
        <rdar://problem/41350182>

        Reviewed by Chris Dumez.

        This patch stores the callback sent to
        WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains(),
        sets up a context ID, and sends that ID to the network process when
        asking it to update cookie partitioning and blocking. The network
        process then tells the UI process when it's done, at which point the
        callback is called.

        This change is meant to address layout test flakiness.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToPartitionOrBlockCookies):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToPartitionOrBlockCookies):
        (WebKit::NetworkProcessProxy::didUpdatePartitionOrBlockCookies):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToPartitionOrBlockCookies):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-06-25  Brent Fulgham  <bfulgham@apple.com>

        Allow access to APTDevice in iOS WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=187021
        <rdar://problem/41339769>

        Reviewed by Youenn Fablet.

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

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

        Causes 5% Mac PLT regression.

        Reverted changeset:

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

2018-06-25  Youenn Fablet  <youenn@apple.com>

        Add a sandbox profile to Hangout plug-in
        https://bugs.webkit.org/show_bug.cgi?id=187005
        <rdar://problem/41428391>

        Reviewed by Brent Fulgham.

        Add a sandbox profile so that this plug-in can be run when UIProcess is sandboxed.

        * Resources/PlugInSandboxProfiles/com.google.googletalkbrowserplugin.sb: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-06-25  Youenn Fablet  <youenn@apple.com>

        NetworkLoadChecker should not check CORS for 304 responses triggered by WebProcess revalidation
        https://bugs.webkit.org/show_bug.cgi?id=186939
        <rdar://problem/40941725>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::validateResponse):

2018-06-25  Keith Rollin  <krollin@apple.com>

        Adjust UNEXPORTED_SYMBOL_LDFLAGS for LTO
        https://bugs.webkit.org/show_bug.cgi?id=186949
        <rdar://problem/41386438>

        Reviewed by David Kilzer.

        When building with LTO, WebKit's
        'check-for-weak-vtables-and-externals' script reports weak external
        symbols:

        ERROR: WebKit has a weak external symbol in it (.../OpenSource/WebKitBuild/Release/WebKit.framework/Versions/A/WebKit)
        ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.
        ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.
        ERROR: symbol __ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE
        ERROR: symbol __ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_14basic_iostreamIcS2_EE
        ERROR: symbol __ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE16_NS_13basic_ostreamIcS2_EE
        ERROR: symbol __ZTTNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE
        ERROR: symbol __ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE
        ERROR: symbol __ZTVNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE
        Command /bin/sh failed with exit code 1

        Address these by adding those symbols to UNEXPORTED_SYMBOL_LDFLAGS in
        WebKit.xcconfig.

        * Configurations/WebKit.xcconfig:

2018-06-25  Chris Dumez  <cdumez@apple.com>

        Make sure API::IconLoadingClient::getLoadDecisionForIcon()'s completion handler gets called
        https://bugs.webkit.org/show_bug.cgi?id=187007
        <rdar://problem/41293989>

        Reviewed by Brady Eidson.

        Make sure API::IconLoadingClient::getLoadDecisionForIcon()'s completion handler gets called by
        switching its type to WTF::CompletionHandler instead of WTF::Function. This also has the benefit
        of destroying our captured objects when the completion handler gets called by the client on the
        main thread instead of whatever thread the ObjC block gets released on.

        * UIProcess/API/APIIconLoadingClient.h:
        (API::IconLoadingClient::getLoadDecisionForIcon):
        * UIProcess/API/glib/WebKitIconLoadingClient.cpp:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView maybeInstallIconLoadingClient]):
        * UIProcess/Cocoa/IconLoadingDelegate.h:
        * UIProcess/Cocoa/IconLoadingDelegate.mm:
        (WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):

2018-06-25  Youenn Fablet  <youenn@apple.com>

        Add API to control mock media devices
        https://bugs.webkit.org/show_bug.cgi?id=186958

        Reviewed by Eric Carlson.

        Add API to clear, set, remove and reset mock media devices.
        The mock media center of UIProcess and all WebProcesses are updated.

        * CMakeLists.txt:
        * UIProcess/API/C/WKMockMediaDevice.cpp: Added.
        (typeFromString):
        (WKAddMockMediaDevice):
        (WKClearMockMediaDevices):
        (WKRemoveMockMediaDevice):
        (WKResetMockMediaDevices):
        * UIProcess/API/C/WKMockMediaDevice.h: Added.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addMockMediaDevice):
        (WebKit::WebProcessPool::clearMockMediaDevices):
        (WebKit::WebProcessPool::removeMockMediaDevice):
        (WebKit::WebProcessPool::resetMockMediaDevices):
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::addMockMediaDevice):
        (WebKit::WebProcess::clearMockMediaDevices):
        (WebKit::WebProcess::removeMockMediaDevice):
        (WebKit::WebProcess::resetMockMediaDevices):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-06-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iPad apps on macOS] Click events are broken in WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=186964
        <rdar://problem/41369145>

        Reviewed by Tim Horton.

        Tapping in WKWebView currently does not dispatch click events to the page. This is because the long press loupe
        gesture (in the text interaction assistant) has a delay of 0 when running iOS apps on macOS, but on iOS, it's
        0.5. The zero delay on macOS means that the loupe gesture will be recognized before the synthetic click gesture;
        this, in turn, causes the synthetic click gesture to be excluded by the loupe gesture. To address this, we
        simply allow the click and loupe gesture to recognize simultaneously.

        Additionally, a new hover gesture was added recently to handle macOS cursor types when hovering over selectable
        text. This patch also allows other gestures to recognize alongside hover gestures, which matches macOS behavior.

        We don't have the capacity to write automated tests for this yet; I manually tested text selection, editing in
        some text form controls, as well as clicking on links, buttons, and other elements with click event handlers.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):

2018-06-23  Brian Burg  <bburg@apple.com>

        [Mac] Web Automation: include correct key code with synthesized NSEvents used for keystrokes
        https://bugs.webkit.org/show_bug.cgi?id=186937

        Reviewed by Timothy Hatcher.

        In some cases, a missing keyCode for an ASCII letter/number can cause synthesized
        NSEvents to not be converted into a key equivalent action like copy: or paste:.

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        Drive by, always initialize keyCode.

        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        (WebKit::keyCodeForCharKey): Compute the keyCode as defined by HLTB headers.
        This only needs to be computed for characters with physical keys, excluding the
        number pad and some traditional virtual keys that do not usually have glyphs.

2018-06-24  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix GTK debug build after r233131
        https://bugs.webkit.org/show_bug.cgi?id=186899
        <rdar://problem/38222248>

        This assertion was intended to be removed.

        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):

2018-06-21  Brian Burg  <bburg@apple.com>

        Web Automation: key actions should support multiple pressed virtual keys
        https://bugs.webkit.org/show_bug.cgi?id=186899
        <rdar://problem/38222248>

        Reviewed by Timothy Hatcher.

        This patch changes the protocol to allow multiple virtual keys per input source state.
        Chords like Cmd-Shift-A and Shift-F12 must be represented this way as they are encoded
        in the VirtualKey enum rather than as an ASCII char.

        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/SimulatedInputDispatcher.h:
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::simulateKeyboardInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        (WebKit::WebAutomationSession::performInteractionSequence):

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        Also clean up the signature of WebAutomationSession::platformSimulateKeyboardInteraction
        to use a variant instead of mutually exclusive optional values with different types.

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

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

        Reviewed by Darin Adler.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
        (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
        (WebKit::NetworkCORSPreflightChecker::wasBlocked):
        (WebKit::NetworkCORSPreflightChecker::cannotShowURL):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::suggestedFilename const):
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        (WebKit::PingLoad::didReceiveChallenge):
        (WebKit::PingLoad::timeoutTimerFired):
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::PreconnectTask):
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::initialize):
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::toRecordInformation):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::cachesListFilename):
        (WebKit::CacheStorage::cachesOriginFilename):
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::initialize):
        (WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache):
        (WebKit::NetworkCache::Statistics::queryWasEverRequested):
        (WebKit::NetworkCache::Statistics::clear):
        (WebKit::NetworkCache::Statistics::addHashesToDatabase):
        (WebKit::NetworkCache::Statistics::addStoreDecisionsToDatabase):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
        * Shared/Plugins/Netscape/PluginInformation.cpp:
        (WebKit::pluginInformationBundleIdentifierKey):
        (WebKit::pluginInformationBundleVersionKey):
        (WebKit::pluginInformationBundleShortVersionKey):
        (WebKit::pluginInformationPathKey):
        (WebKit::pluginInformationDisplayNameKey):
        (WebKit::pluginInformationDefaultLoadPolicyKey):
        (WebKit::pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey):
        (WebKit::pluginInformationHasSandboxProfileKey):
        (WebKit::pluginInformationFrameURLKey):
        (WebKit::pluginInformationMIMETypeKey):
        (WebKit::pluginInformationPageURLKey):
        (WebKit::pluginInformationPluginspageAttributeURLKey):
        (WebKit::pluginInformationPluginURLKey):
        (WebKit::plugInInformationReplacementObscuredKey):
        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):
        * Shared/linux/WebMemorySamplerLinux.cpp:
        (WebKit::WebMemorySampler::sampleWebKit const):
        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
        (debuggableTypeString):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_preferred_languages):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::setSessionPermissions):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didStart):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::selectorExceptionMap):
        * UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp:
        (WebKit::WebCredentialsMessengerProxy::makeCredential):
        (WebKit::WebCredentialsMessengerProxy::getAssertion):
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::pluginsDirectories):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
        (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream):
        (WebKit::UserMediaProcessManager::endedCaptureSession):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::goToItem):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadHTMLString):
        (WebKit::WebPageProxy::loadPlainTextString):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getLaunchOptions):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        * UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::notifyPages):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView copyForWebView:]):
        (-[WKContentView cutForWebView:]):
        (-[WKContentView pasteForWebView:]):
        (-[WKContentView selectAllForWebView:]):
        (-[WKContentView deleteBackward]):
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):
        * UIProcess/ios/WKLegacyPDFView.mm:
        (-[WKLegacyPDFView _URLForLinkAnnotation:]):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::elementForNodeHandle):
        (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::connectionToServerLost):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
        (webkit_dom_document_get_ready_state):
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
        (WebKit::uniqueWorldName):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        (WebKit::WebMediaKeyStorageManager::getMediaKeyOrigins):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::pluginInfo):
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::validateResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
        * WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
        (WebKit::WebContextMenuClient::searchWithGoogle):
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::showPaintRect):
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::initialize):
        (WebKit::RemoteWebInspectorUI::didSave):
        (WebKit::RemoteWebInspectorUI::didAppend):
        (WebKit::RemoteWebInspectorUI::frontendLoaded):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openInNewTab):
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::setDockSide):
        (WebKit::WebInspectorUI::setDockingUnavailable):
        (WebKit::WebInspectorUI::setIsVisible):
        (WebKit::WebInspectorUI::showConsole):
        (WebKit::WebInspectorUI::showResources):
        (WebKit::WebInspectorUI::showTimelines):
        (WebKit::WebInspectorUI::showMainResourceForFrame):
        (WebKit::WebInspectorUI::startPageProfiling):
        (WebKit::WebInspectorUI::stopPageProfiling):
        (WebKit::WebInspectorUI::startElementSelection):
        (WebKit::WebInspectorUI::stopElementSelection):
        (WebKit::WebInspectorUI::didSave):
        (WebKit::WebInspectorUI::didAppend):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadStringImpl):
        (WebKit::WebPage::loadAlternateHTMLString):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::computeAutocorrectionContext):
        * WebProcess/WebProcess.cpp:
        (WebKit::getWebCoreMemoryCacheStatistics):
        (WebKit::WebProcess::getWebCoreStatistics):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):

2018-06-22  Chris Dumez  <cdumez@apple.com>

        Regression(r230211): Crash under WebInspectorClient::~WebInspectorClient()
        https://bugs.webkit.org/show_bug.cgi?id=186950
        <rdar://problem/40602069>

        Reviewed by Darin Adler.

        Re-introduce null-check that was accidentally dropped in r230211.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::~WebInspectorClient):

2018-06-22  Timothy Hatcher  <timothy@apple.com>

        Corner of two scroll bars is white with dark mode enabled.
        https://bugs.webkit.org/show_bug.cgi?id=186819
        rdar://problem/40434350

        Reviewed by Tim Horton.

        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView drawRect:]): Added LocalDefaultSystemAppearance.
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage): Ditto.
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::paintControlForLayerInContext): Ditto. Dropped ScrollView argument.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect): Added LocalDefaultSystemAppearance.

2018-06-22  Tim Horton  <timothy_horton@apple.com>

        Make it possible to add a border around loading or failed-to-load images
        https://bugs.webkit.org/show_bug.cgi?id=186614
        <rdar://problem/39050152>

        Reviewed by Zalan Bujtas.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setColorFilterEnabled:]):
        (-[WKWebViewConfiguration _incompleteImageBorderEnabled]):
        (-[WKWebViewConfiguration _setIncompleteImageBorderEnabled:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Plumb the setting to WebKit2.

2018-06-22  Brady Eidson  <beidson@apple.com>

        WKURLSchemeHandler doesn't handle sync XHR.
        <rdar://problem/40955884> and https://bugs.webkit.org/show_bug.cgi?id=186902

        Reviewed by Chris Dumez.

        This patch allows WebProcesses to block on sync loads to a custom scheme,
        and teaches WebURLSchemeTasks how to buffer up data and the response if 
        operating synchronously.

        * Shared/WebErrors.cpp:
        (WebKit::failedCustomProtocolSyncLoad):
        * Shared/WebErrors.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        * UIProcess/WebURLSchemeHandler.h:

        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::create):
        (WebKit::WebURLSchemeTask::WebURLSchemeTask):
        (WebKit::WebURLSchemeTask::didPerformRedirection):
        (WebKit::WebURLSchemeTask::didReceiveResponse):
        (WebKit::WebURLSchemeTask::didReceiveData):
        (WebKit::WebURLSchemeTask::didComplete):
        (WebKit::WebURLSchemeTask::pageDestroyed):
        (WebKit::WebURLSchemeTask::stop):
        * UIProcess/WebURLSchemeTask.h:
        (WebKit::WebURLSchemeTask::isSync const):

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        * WebProcess/Network/WebLoaderStrategy.h:

        * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
        (WebKit::WebURLSchemeHandlerProxy::loadSynchronously):
        * WebProcess/WebPage/WebURLSchemeHandlerProxy.h:

2018-06-22  Chris Dumez  <cdumez@apple.com>

        Implement IPC throttling to keep the main thread responsive when a process misbehaves
        https://bugs.webkit.org/show_bug.cgi?id=186607
        <rdar://problem/41073205>

        Reviewed by Geoff Garen and Brady Eidson.

        Implement IPC throttling to keep the main thread responsive when a process misbehaves.
        Instead of doing one main runloop dispatch per incoming message, we now do a single
        runloop dispatch and process incoming messages in batch. We put a limit on the number
        of messages to be processed in a batch (600). If the queue is larger that this limit,
        we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
        to process other events. Additionally, if an IPC connection keeps hitting this maximum
        batch size limit, we implement back off and we'll further decrease the number of messages
        we process in each batch (going as low as 60). This keeps Safari responsive enough to
        allow the user to close the bad tab (even on older devices such as iPhone 5s).

        Finally, if the incoming message queue becomes too large (50000), we go one step further
        and kill the IPC connection in order to maintain performance / battery life.

        Every time we apply throttling or terminate a connection due to throttling, we do a
        RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
        in the future.

        For now, incoming IPC messages throttling is only enabled on the UIProcess' connections
        to the WebProcesses.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::Connection):
        (IPC::Connection::enqueueIncomingMessage):
        (IPC::Connection::MessagesThrottler::MessagesThrottler):
        (IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
        (IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
        (IPC::Connection::dispatchIncomingMessages):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::kill):

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

        REGRESSION (r231850): Cookie file cannot be read or written by network process
        https://bugs.webkit.org/show_bug.cgi?id=186806
        <rdar://problem/41113791>

        Unreviewed. Fix failure after r233084 by adding missing initialization.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-06-22  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Home indicator should show and hide with status bar
        https://bugs.webkit.org/show_bug.cgi?id=186942
        <rdar://problem/41302190>

        Reviewed by Tim Horton.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController showUI]):
        (-[WKFullScreenViewController hideUI]):
        (-[WKFullScreenViewController setPrefersHomeIndicatorAutoHidden:]):

2018-06-22  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Add a pinch-to-exit gesture
        https://bugs.webkit.org/show_bug.cgi?id=186821

        Reviewed by Tim Horton.

        Add a pinch gesture recognizer that overrides the pan gesture recognizer when active. Hide the
        WKFullscreenViewController's controls while a dismiss gesture is active.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController setAnimating:]):
        (-[WKFullScreenViewController prefersStatusBarHidden]):
        (-[WKFullScreenViewController gestureRecognizer:shouldReceiveTouch:]):
        (-[WKFullScreenViewController _touchDetected:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController context]):
        (-[WKFullscreenAnimationController updateWithProgress:scale:translation:anchor:]):
        (-[WKFullScreenInteractiveTransition animator]):
        (-[WKFullScreenInteractiveTransition updateInteractiveTransition:withScale:andTranslation:]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController interactionControllerForDismissal:]):
        (-[WKFullScreenWindowController _startToDismissFullscreenChanged:]):
        (-[WKFullScreenWindowController _dismissFullscreenViewController]):
        (-[WKFullScreenWindowController _interactiveDismissChanged:]):
        (-[WKFullScreenWindowController _interactivePinchDismissChanged:]):

2018-06-22  Brian Burg  <bburg@apple.com>

        [Cocoa] REGRESSION(W3C): actions for key equivalents are not respected
        https://bugs.webkit.org/show_bug.cgi?id=186936

        Reviewed by Timothy Hatcher.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::isSimulatingUserInteraction const):
        This erroneously reported false unless there was both a mouse and key interaction
        being dispatched, which is not possible in the current serial event simulation model.
        As a result, Safari could not tell whether the action came from a simulated event
        or the user, and thus rejected all key equivalents like Cmd-A,V,C,X.

2018-06-22  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Exit fullscreen when opening a new tab
        https://bugs.webkit.org/show_bug.cgi?id=186826
        <rdar://problem/40853211>

        Reviewed by Brent Fulgham.

        Make the fullscreen placeholder view a custom UIView, and exit fullscreen when the
        placeholder is removed from its superview.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenPlaceholderView willMoveToSuperview:]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController placeholderWillMoveToSuperview:]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):

2018-06-22  Timothy Horton  <timothy_horton@apple.com>

        Fix the build after r233089

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setColorFilterEnabled:]):
        (-[WKPreferences _colorFilterEnabled]):

2018-06-22  Chris Dumez  <cdumez@apple.com>

        Crash under WebResourceLoadStatisticsStore::mergeStatistics(WTF::Vector<WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul>&&)
        https://bugs.webkit.org/show_bug.cgi?id=186905
        <rdar://problem/41266775>

        Reviewed by Brent Fulgham.

        I believe the crash was caused by the WebResourceLoadStatisticsStore object being dead
        when mergeStatistics() is called. In particular, the crash was happening when the
        ResourceLoadStatisticsPersistentStorage's FileMonitor would detect a file change and
        we would re-sync statistics from the disk. The FileMonitor's lambda function was
        capturing |this| without ref'ing it, and the FileMonitor monitors the disk and
        calls the lambda on the background queue, while it gets destroyed on the main thread.

        To make lifetime management less complex, the following changes were made:
        - The ResourceLoadStatisticsPersistentStorage object is now always constructed / used
          and destroyed on the background queue. We no longer have to worry about being on
          the right thread in a given method.
        - Now that ResourceLoadStatisticsPersistentStorage is always used from the background
          queue and no longer needs to be thread-safe, drop its ref() / deref() methods and
          use weak pointers instead to make sure the ResourceLoadStatisticsPersistentStorage
          is still alive when a lamdba gets called on the background queue.
        - For write scheduling use WorkQueue::dispatchAfter() and a WeakPtr instead of a
          RunLoop::Timer. This is more convenient to use as the RunLoop::Timer has to be used
          on the main thread.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage):
        (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics):
        (WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-21  Jer Noble  <jer.noble@apple.com>

        CRASH in WebCore::VideoFullscreenInterfaceMac::~VideoFullscreenInterfaceMac()
        https://bugs.webkit.org/show_bug.cgi?id=186892

        Reviewed by Eric Carlson.

        Protect against m_contentMap being mutated while its contents are being invalidated
        by moving the map into a local variable and iterating over it instead.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionManagerProxy::invalidate):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::invalidate):

2018-06-22  Luming Yin  <luming_yin@apple.com>

        Expose colorFilterEnabled SPI in WKPreferencesPrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=186935
        <rdar://problem/41109387>

        Reviewed by Tim Horton.

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

2018-06-22  Timothy Hatcher  <timothy@apple.com>

        Recalc styles every time defaultAppearance changes.
        https://bugs.webkit.org/show_bug.cgi?id=186866
        rdar://problem/41309805

        Reviewed by Tim Horton.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setDefaultAppearance):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setDefaultAppearance):

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

        REGRESSION (r231850): Cookie file cannot be read or written by network process
        https://bugs.webkit.org/show_bug.cgi?id=186806
        <rdar://problem/41113791>

        Reviewed by Geoffrey Garen.

        Add defaultSessionPendingCookies to NetworkProcessCreationParameters, so pending cookies of default session 
        can be added right after default session is set. This improves the fix r231850 as it does not send additional 
        message and avoids the regression.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-06-22  Brent Fulgham  <bfulgham@apple.com>

        [iOS Debug] Multiple resourceLoadStatistics redirect tests are flaky timeouts
        https://bugs.webkit.org/show_bug.cgi?id=183216
        <rdar://problem/37992317>

        Reviewed by Chris Dumez.

        Improve consistency of test results by make sure that completion handlers written to run
        on the main thread are only called on the main thread. Add additional assertions to help
        catch any cases where this invariant is not being honored.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess): Use Completion handler and assert
        we are on the right thread.
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate): 
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningStateReset):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent): Update to perform callbacks
        on the main thread (as intended). This function was doing them on a work queue.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::clearPartitioningStateForDomains): Ditto.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r230950): [GTK] WebKit::CoordinatedBackingStoreTile::setBackBuffer(): WebKitWebProcess killed by SIGSEGV (ASSERTION FAILED: it != m_tiles.end())
        https://bugs.webkit.org/show_bug.cgi?id=186206

        Unreviewed manual rollout of r230950

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::layerShouldHaveBackingStore):

2018-06-20  Darin Adler  <darin@apple.com>

        [Cocoa] Use the isDirectory: variants of NSURL methods more to eliminate unnecessary file system activity
        https://bugs.webkit.org/show_bug.cgi?id=186875

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::tempDirectoryFileSystemRepresentation): Use isDirectory:YES to create a URL
        to the temporary directory.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::namesOfPromisedFilesDroppedAtDestination): Use isDirectory:NO to create a URL
        pointing to the write location.
        * UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
        (WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const): Use isDirectory:YES to
        create a URL for the local storage directory.
        * UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm:
        (WebKit::ResourceLoadStatisticsPersistentStorage::excludeFromBackup const): Use isDirectory:NO to
        create a URL for the storage directory.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _prepareToDragPromisedBlob:]): Use isDirectory:NO to create a URL for the temporary
        file location.
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _uploadItemForImageData:imageName:successBlock:failureBlock:]): Use isDirectory:NO
        to create a URL for the image file to upload.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectorPageURL): Use isDirectory:NO to create a URL for the HTML file.
        (WebKit::WebInspectorProxy::inspectorTestPageURL): Ditto.
        (WebKit::WebInspectorProxy::inspectorBaseURL): Ditto.
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::createIconForFiles): Use isDirectory:NO to create a URL for the image file.
        * WebProcess/WebPage/mac/WebInspectorUIMac.mm:
        (WebKit::webInspectorUILocalizedStringsURL): Use isDirectory:NO to create a URL for the localized
        strings file.

2018-06-21  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r232995.

        Seems to have caused flakiness

        Reverted changeset:

        "Implement IPC throttling to keep the main thread responsive
        when a process misbehaves"
        https://bugs.webkit.org/show_bug.cgi?id=186607
        https://trac.webkit.org/changeset/232995

2018-06-15  Jer Noble  <jer.noble@apple.com>

        Address fullscreen api CSS env feedback
        https://bugs.webkit.org/show_bug.cgi?id=186684

        Reviewed by Simon Fraser.

        + Update the phishing alert text to be more explicit about the specific threats
          phishing sites represent.
        + Make the top inset static, rather than dynamic.
        + Add bottom, left, and right insets for completeness.
        + Set the fullscreen animation duration as well as delay.
        + Notify the page when the controls show and hide.

        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::setFullscreenInsets):
        (WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideTiming):
        (WebKit::WebFullScreenManagerProxy::setFullscreenControlsHidden):
        (WebKit::WebFullScreenManagerProxy::setFullscreenInsetTop): Deleted.
        (WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDelay): Deleted.
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController showUI]):
        (-[WKFullScreenViewController hideUI]):
        (-[WKFullScreenViewController viewWillAppear:]):
        (-[WKFullScreenViewController _effectiveFullscreenInsets]):
        (-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
        (-[WKFullScreenViewController _showPhishingAlert]):
        (-[WKFullScreenViewController _effectiveFullscreenInsetTop]): Deleted.
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::didExitFullScreen):
        (WebKit::WebFullScreenManager::setFullscreenInsets):
        (WebKit::WebFullScreenManager::setFullscreenAutoHideTiming):
        (WebKit::WebFullScreenManager::setFullscreenControlsHidden):
        (WebKit::WebFullScreenManager::setFullscreenInsetTop): Deleted.
        (WebKit::WebFullScreenManager::setFullscreenAutoHideDelay): Deleted.
        * WebProcess/FullScreen/WebFullScreenManager.h:
        * WebProcess/FullScreen/WebFullScreenManager.messages.in:

2018-06-21  Commit Queue  <commit-queue@webkit.org>

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

        "Introduced assertion failure in ~DisplayRefreshMonitorMac()."
        (Requested by perarne on #webkit).

        Reverted changeset:

        "DisplayRefreshMonitorMac should hold a weak pointer to
        WebPage."
        https://bugs.webkit.org/show_bug.cgi?id=186683
        https://trac.webkit.org/changeset/232884

2018-06-21  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Page sometimes ends up with an incorrect zoom level after entering fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=186822

        Reviewed by Simon Fraser.

        Set the minimum zoom, maximum zoom, zoom bouncing, and user scalability settings of the
        WKWebView's UIScrollView upon entering fullscreen, and restore those same settings upon
        exit. Override the viewport arguments upon entering fullscreen, restore them upon exit.

        * Platform/IPC/ArgumentCoder.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ViewportArguments>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::forceAlwaysUserScalable const):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setOverrideViewportArguments):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (WebKit::WKWebViewState::applyTo):
        (WebKit::WKWebViewState::store):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::forceAlwaysUserScalable const):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setOverrideViewportArguments):

2018-06-21  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Use secondary glyph style for fullscreen controls
        https://bugs.webkit.org/show_bug.cgi?id=186862
        <rdar://problem/41212210>

        Reviewed by Tim Horton.

        Adopt AVBackgroundView, and use its predefined enums to set the material and tint styles for
        the fullscreen controls.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController loadView]):
        * UIProcess/ios/fullscreen/WKFullscreenStackView.h:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        (-[WKFullscreenStackView init]):
        (-[WKFullscreenStackView dealloc]):
        (-[WKFullscreenStackView addArrangedSubview:applyingMaterialStyle:tintEffectStyle:]):
        (-[WKFullscreenStackView layoutSubviews]):
        (+[WKFullscreenStackView baseEffects]): Deleted.
        (+[WKFullscreenStackView configureView:forTintEffectWithColor:filterType:]): Deleted.
        (+[WKFullscreenStackView configureView:withBackgroundFillOfColor:opacity:filter:]): Deleted.
        (+[WKFullscreenStackView secondaryMaterialOverlayView]): Deleted.
        (+[WKFullscreenStackView applyPrimaryGlyphTintToView:]): Deleted.
        (+[WKFullscreenStackView applySecondaryGlyphTintToView:]): Deleted.
        (-[WKFullscreenStackView initWithArrangedSubviews:axis:]): Deleted.
        (-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]): Deleted.
        (-[WKFullscreenStackView contentView]): Deleted.
        (-[WKFullscreenStackView _setArrangedSubviews:axis:]): Deleted.
        (-[WKFullscreenStackView setBounds:]): Deleted.
        (-[WKFullscreenStackView updateConstraints]): Deleted.

2018-06-21  Jer Noble  <jer.noble@apple.com>

        [Fullscreen] Suspend page (and pause video) while phishing warning is presented
        https://bugs.webkit.org/show_bug.cgi?id=186856
        <rdar://problem/41212444>

        Reviewed by Tim Horton.

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

2018-06-21  David Fenton  <david_fenton@apple.com>

        Unreviewed, rolling out r232989.

        Causes API regressions on macOS

        Reverted changeset:

        "REGRESSION (r231850): Cookie file cannot be read or written
        by network process"
        https://bugs.webkit.org/show_bug.cgi?id=186806
        https://trac.webkit.org/changeset/232989

2018-06-21  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] WebDriver: allow applying host-specific TLS certificates for automated sessions
        https://bugs.webkit.org/show_bug.cgi?id=186884

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        (webkitAutomationSessionCreate): Handle any host-certificate pair that's
        been set for this session, creating a GTlsCertificate object through
        loading from the specified certificate path and marking that certificate
        as allowed for the specified host through the
        webkit_web_context_allow_tls_certificate_for_host() API.

2018-06-21  Chris Dumez  <cdumez@apple.com>

        Regression(r226990) : Crash under WebCore::Page::applicationWillResignActive
        https://bugs.webkit.org/show_bug.cgi?id=186850
        <rdar://problem/37394469>

        Reviewed by Eric Carlson.

        Make sure m_page is not null before calling applicationWillResignActive(). m_page
        gets nulled out when WebPage::close() is called. The crash trace seems to indicate
        we're calling applicationWillResignActive() on a Page that is dead since we crash
        accessing Page::mainFrame().

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

2018-06-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK] http/tests/misc/bubble-drag-events.html crashes
        https://bugs.webkit.org/show_bug.cgi?id=182352

        Reviewed by Carlos Garcia Campos.

        PingLoad::didFinish was called twice if it is used with
        NetworkDataTaskSoup. PingLoad is not a ref-counted object. It is
        destructed when PingLoad::didFinish is called.

        PingLoad::didReceiveChallenge calls the ChallengeCompletionHandler
        with AuthenticationChallengeDisposition::Cancel to cancel the
        challenge and calls PingLoad::didFinish.

        NetworkDataTaskSoup::continueAuthenticate calls
        didReceiveChallenge with a ChallengeCompletionHandler which calls
        didCompleteWithError. PingLoad::didCompleteWithError calls
        PingLoad::didFinish.

        didCompleteWithError callback should not be called in the
        ChallengeCompletionHandler.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::continueAuthenticate): Do not call
        didFail() in the ChallengeCompletionHandler. Call
        invalidateAndCancel() instead.

2018-06-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Fixed position elements sometimes flicker when scrolling
        https://bugs.webkit.org/show_bug.cgi?id=186860
        <rdar://problem/39953563>

        Reviewed by Tim Horton.

        Remove conditional guards that are no longer necessary, now that the oldest iOS version our builders support is
        iOS 11. Conditionalizing this logic only for iOS 11+ meant that on watchOS, we're always falling down the path
        where we don't schedule a visible content rect update until the next runloop, which makes it possible for a
        remote layer tree transaction to arrive and cause us to update the scrolling tree with stale viewport geometry.

        Test: WKScrollViewTests.PositionFixedLayerAfterScrolling

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

2018-06-20  Megan Gardner  <megan_gardner@apple.com>

        Restrict Selection in contenteditable the extent of that contenteditable
        https://bugs.webkit.org/show_bug.cgi?id=186792

        Reviewed by Wenson Hsieh.

        We have not been checking to make sure that when we make a selection that it is restricted to 
        a single content editable on iOS. There is functionality to ensure this on mac, so it has been
        exposed and utilized for restricting the extent of a selection.

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

2018-06-19  Dean Jackson  <dino@apple.com>

        Blank viewer comes up and then auto-dismisses when device is not connected to Internet
        https://bugs.webkit.org/show_bug.cgi?id=186825
        <rdar://problem/40294170>

        Reviewed by Tim Horton.

        Handle the case where the network load fails, and send that
        error onto QuickLook.

        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveResponse): Check for success.
        (WebKit::DownloadClient::processDidCrash): Cancel in the case of a crash.
        (WebKit::DownloadClient::didFail): Propagate the error onto QuickLook.
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource failWithError:]): New method that calls
        the completion handler with the error data.
        (WebKit::SystemPreviewController::fail): New API method.
        * UIProcess/SystemPreviewController.h:

2018-06-19  Chris Dumez  <cdumez@apple.com>

        Implement IPC throttling to keep the main thread responsive when a process misbehaves
        https://bugs.webkit.org/show_bug.cgi?id=186607
        <rdar://problem/41073205>

        Reviewed by Geoffrey Garen.

        Implement IPC throttling to keep the main thread responsive when a process misbehaves.
        Instead of doing one main runloop dispatch per incoming message, we now do a single
        runloop dispatch and process incoming messages in batch. We put a limit on the number
        of messages to be processed in a batch (600). If the queue is larger that this limit,
        we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
        to process other events. Additionally, if an IPC connection keeps hitting this maximum
        batch size limit, we implement back off and we'll further decrease the number of messages
        we process in each batch (going as low as 60). This keeps Safari responsive enough to
        allow the user to close the bad tab (even on older devices such as iPhone 5s).

        Finally, if the incoming message queue becomes too large (50000), we go one step further
        and kill the IPC connection in order to maintain performance / battery life.

        Every time we apply throttling or terminate a connection due to throttling, we do a
        RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
        in the future.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::Connection):
        (IPC::Connection::enqueueIncomingMessage):
        (IPC::Connection::MessagesThrottler::MessagesThrottler):
        (IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
        (IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
        (IPC::Connection::dispatchIncomingMessages):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::kill):

2018-06-18  Jiewen Tan  <jiewen_tan@apple.com>

        Make SecItemShim to not send return value for SecItemAdd
        https://bugs.webkit.org/show_bug.cgi?id=186789
        <rdar://problem/40892596>

        Reviewed by Brent Fulgham.

        Return value of SecItemAdd is often ignored. Even if it isn't, we don't have the ability to serialize SecKeychainItemRef.
        Otherwise, it would go through the weird route of serializing SecKeychainItemRef by asking Keychain for its persistent
        reference. This route contradicts the purpose of SecItemShim, which is to proxy all Keychain operations to UIProcess.

        Also, this patch removes the release assertion on encode(Encoder&, SecAccessControlRef) and decode(Decoder&, RetainPtr<SecAccessControlRef>&)
        as they don't query Keychain.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/mac/SecItemShim.cpp:
        (WebKit::sendSecItemRequest):
        (WebKit::webSecItemAdd):
        * UIProcess/mac/SecItemShimProxy.cpp:
        (WebKit::SecItemShimProxy::secItemRequest):
        * UIProcess/mac/SecItemShimProxy.h:
        * UIProcess/mac/SecItemShimProxy.messages.in:

2018-06-19  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION (r231850): Cookie file cannot be read or written by network process
        https://bugs.webkit.org/show_bug.cgi?id=186806
        <rdar://problem/41113791>

        Reviewed by Geoffrey Garen.

        Default websiteDataStore may be added wrongly to network process before default session was 
        set, as messages were asynchronous, so the cookie storage could be improperly set.   

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-06-19  Don Olmstead  <don.olmstead@sony.com>

        Use getCurrentProcessID over getpid
        https://bugs.webkit.org/show_bug.cgi?id=186813

        Reviewed by Alex Christensen.

        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::initializeTimers):
        (WebKit::WebMemorySampler::stop):
        (WebKit::WebMemorySampler::writeHeaders):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):

2018-06-19  Don Olmstead  <don.olmstead@sony.com>

        WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations does not invoke callback when Service Workers disabled
        https://bugs.webkit.org/show_bug.cgi?id=186809

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):

2018-06-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Vend username text content type when using scribble in login fields
        https://bugs.webkit.org/show_bug.cgi?id=186791
        <rdar://problem/41226935>

        Reviewed by Beth Dakin.

        Vend additional context to Quickboard when focusing an element that is likely to be a username field.

        Test: fast/forms/watchos/username-text-content-type.html

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

        Add a new flag to tell the UI process when the currently focused element is an autofillable username input
        field (using existing app autofill heuristics).

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

        Add new testing SPI to grab the computed text content type for the focused element.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (contentTypeFromFieldName):

        If `autocomplete="username"` is specified, return a username text content type. This was not originally added in
        r197626 because UITextContentTypeUsername was only introduced later, in iOS 11.

        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView textContentTypeForTesting]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getAssistedNodeInformation):

2018-06-19  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r232947.

        Caused an API test to time out

        Reverted changeset:

        "Implement IPC throttling to keep the main thread responsive
        when a process misbehaves"
        https://bugs.webkit.org/show_bug.cgi?id=186607
        https://trac.webkit.org/changeset/232947

2018-06-19  Chris Dumez  <cdumez@apple.com>

        HTTPHeaderMap wastes 226KB of HashTable capacity on cnn.com
        https://bugs.webkit.org/show_bug.cgi?id=186735
        <rdar://problem/41189164>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/cache/NetworkCacheCoders.cpp:
        (WTF::Persistence::Coder<WebCore::HTTPHeaderMap>::decode):

2018-06-19  Youenn Fablet  <youenn@apple.com>

        Network Preflights do not show in WebInspector after moving CORS checks to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=186312
        <rdar://problem/40495434>

        Reviewed by Chris Dumez.

        Add buffering of all request/response of a given load, including redirections and preflights.
        This buffering is switched on/off by a boolean which is switched on in case Web Inspector is launched.

        Buffering is done in NetworkLoadChecker.
        We add ways to retrieve preflight information from NetworkCORSPreflightChecker.

        Implement LoaderStrategy new methods through sync IPC.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::NetworkCORSPreflightChecker):
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        (WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession):
        (WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
        (WebKit::NetworkCORSPreflightChecker::takeInformation):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationRequest):
        (WebKit::NetworkConnectionToWebProcess::takeNetworkLoadIntermediateInformation):
        (WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformation):
        (WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
        (WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationResponse): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::check):
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::checkResponse):
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
        (WebKit::NetworkLoadChecker::storeRedirection):
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::takeNetworkLoadInformation):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * Scripts/webkit/messages.py:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):
        * WebProcess/Network/WebLoaderStrategy.h:

2018-06-19  Brent Fulgham  <bfulgham@apple.com>

        MAP_JIT is not present for minimal simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=186608

        Reviewed by Darin Adler.

        * Configurations/WebContent-iOS-minimalsimulator.entitlements:

2018-06-18  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make sure to call callbacks even if there is no store (test infrastructure)
        https://bugs.webkit.org/show_bug.cgi?id=186777
        <rdar://problem/41216181>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
        (WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):

2018-06-18  Chris Dumez  <cdumez@apple.com>

        Crash under WebProcessPool::networkProcessFailedToLaunch():
        https://bugs.webkit.org/show_bug.cgi?id=186784
        <rdar://problem/33535377>

        Reviewed by Brady Eidson.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (+[WKProcessPool _allProcessPoolsForTesting]):
        Add SPI to retrieve all WebProcessPool for testing purposes.

        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::clearCallbackStates):
        Make iteration over completion handlers robust against completion handlers
        getting removed while we iterate.

        (WebKit::NetworkProcessProxy::didClose):
        Ref the WebProcessPool (which keeps the NetworkProcessProxy alive too)
        as several calls within this method might cause the WebProcessPool /
        NetworkProcessProxy to get destroyed.

2018-06-18  Chris Dumez  <cdumez@apple.com>

        Implement IPC throttling to keep the main thread responsive when a process misbehaves
        https://bugs.webkit.org/show_bug.cgi?id=186607

        Reviewed by Geoffrey Garen.

        Implement IPC throttling to keep the main thread responsive when a process misbehaves.
        Instead of doing one main runloop dispatch per incoming message, we now do a single
        runloop dispatch and process incoming messages in batch. We put a limit on the number
        of messages to be processed in a batch (600). If the queue is larger that this limit,
        we'll schedule a 0-timer to process remaining messages, giving the main runloop a chance
        to process other events. Additionally, if an IPC connection keeps hitting this maximum
        batch size limit, we implement back off and we'll further decrease the number of messages
        we process in each batch (going as low as 60). This keeps Safari responsive enough to
        allow the user to close the bad tab (even on older devices such as iPhone 5s).

        Finally, if the incoming message queue becomes too large (50000), we go one step further
        and kill the IPC connection in order to maintain performance / battery life.

        Every time we apply throttling or terminate a connection due to throttling, we do a
        RELEASE_LOG_ERROR() with useful information in order to help diagnose potential issues
        in the future.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::Connection):
        (IPC::Connection::enqueueIncomingMessage):
        (IPC::Connection::MessagesThrottler::MessagesThrottler):
        (IPC::Connection::MessagesThrottler::scheduleMessagesDispatch):
        (IPC::Connection::MessagesThrottler::numberOfMessagesToProcess):
        (IPC::Connection::dispatchIncomingMessages):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::kill):

2018-06-18  Jiewen Tan  <jiewen_tan@apple.com>

        Add a graceful exit for AuthenticationManager::initializeConnection
        https://bugs.webkit.org/show_bug.cgi?id=186632
        <rdar://problem/41041033>

        Reviewed by Brent Fulgham.

        Add a graceful exit for AuthenticationManager::initializeConnection when the provided IPC connection
        is null or the underlying xpc connection is null.

        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection):

2018-06-18  Youenn Fablet  <youenn@apple.com>

        Validate Cross-Origin-Resource-Policy for resources cached in the MemoryCache
        https://bugs.webkit.org/show_bug.cgi?id=186639
        <rdar://problem/41106984>

        Reviewed by Geoffrey Garen.

        Make use of WebCore method to check CORP.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::validateResponse):
        * NetworkProcess/NetworkLoadChecker.h:

2018-06-18  Karl Leplat  <karl.leplat_ext@softathome.com>

        [Threaded paintingEngine] Fix rendering glitches
        https://bugs.webkit.org/show_bug.cgi?id=186764

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
        (WebKit::CoordinatedBackingStoreTile::swapBuffers):
        We call Nicosia::Buffer function waitUntilPaintingComplete()
        in order to synchronize of using Nicosia:buffer between MainThread
        and ThreadedCompositor.


2018-06-17  Chris Dumez  <cdumez@apple.com>

        Crash under SuspendedPageProxy::~SuspendedPageProxy()
        https://bugs.webkit.org/show_bug.cgi?id=186688
        <rdar://problem/41060769>

        Reviewed by Darin Adler.

        Ref the WebProcessProxy before calling suspendedPageWasDestroyed() on it as this
        might cause the WebProcessProxy / WebProcessPool to get destroyed otherwise, and
        we would crash trying to call unregisterSuspendedPageProxy() on the WebProcessPool
        on the next line.

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

2018-06-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Upstream watchOS source additions to OpenSource (Part 3)
        https://bugs.webkit.org/show_bug.cgi?id=186442
        <rdar://problem/40879364>

        Reviewed by Darin Adler.

        Rename a category referencing "Extra zoom mode".

        * UIProcess/ios/WKContentViewInteraction.mm:

2018-06-12  Darin Adler  <darin@apple.com>

        [Cocoa] Make some RetainPtr refinements to get more ready for ARC
        https://bugs.webkit.org/show_bug.cgi?id=186526

        Reviewed by Anders Carlsson.

        * Platform/cf/ModuleCF.cpp:
        (WebKit::Module::load): Use move assignment instead of adoptCF/leakRef.

        * Shared/Cocoa/WKNSURLExtras.mm:
        (+[NSURL _web_URLWithWTFString:]): Cast to NSURL * instead of doing the autorelease
        here, since the NSURL * operator already does what we want.
        (+[NSURL _web_URLWithWTFString:relativeToURL:]): Ditto.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _wk_printedDocument]): Get rid of incorrect use of
        RetainPtr::autorelease. We don't want to null out _printedDocument each time this
        function is called.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
        (collectIcons): Get rid of unnecessary use of RetainPtr::autorelease in a function
        that returns a RetainPtr.

2018-06-15  Chris Dumez  <cdumez@apple.com>

        Add API test coverage for SW RegistrationDatabase destruction and fix issues found by the test
        https://bugs.webkit.org/show_bug.cgi?id=186681

        Reviewed by Brady Eidson.

        Make sure StorageProcess::unregisterSWServerConnection() does not unnecessarily
        create a SWServer. Otherwise, we were in quick session destroying the SWServer
        and then re-constructing it for the same sessionID, merely to try ot unregister
        a SWServerConnection.

        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::existingSWOriginStoreForSession const):
        (WebKit::StorageProcess::unregisterSWServerConnection):
        * StorageProcess/StorageProcess.h:

2018-06-15  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [WinCairo] Move unrelated features of WorkQueueWin into IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=186582

        Add EventListener private class to handle signaled tasks for I/O.
        Originally they were in WTF::WorkQueueWin, but those features were not related
        to WorkQueue and only used in IPC::ConnectionWin. Moved logic is more specialized
        than old generalized logic. That was unneeded generalization.

        Reviewed by Brent Fulgham.

        * Platform/IPC/Connection.h:
        (IPC::Connection::EventListener::state):
        * Platform/IPC/win/ConnectionWin.cpp:
        (IPC::Connection::platformInitialize):
        (IPC::Connection::platformInvalidate):
        (IPC::Connection::readEventHandler):
        (IPC::Connection::writeEventHandler):
        (IPC::Connection::invokeReadEventHandler):
        (IPC::Connection::invokeWriteEventHandler):
        (IPC::Connection::open):
        (IPC::Connection::sendOutgoingMessage):
        (IPC::Connection::EventListener::open):
        (IPC::Connection::EventListener::callback):
        (IPC::Connection::EventListener::close):

2018-06-15  Brady Eidson  <beidson@apple.com>

        Crash in both StorageProcess and UIProcess when using custom WKWebsiteDataStores for data management.
        <rdar://problem/41019893> and https://bugs.webkit.org/show_bug.cgi?id=186682

        Reviewed by Chris Dumez.

        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::didClose): Protect this and the process pool as the cleanup that follows
          might cause either to get destroyed.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply): Protect the operating WebsiteDataStore while async operations
          are in flight. Otherwise if the data store is destroyed, the SessionIDs for those operations will get
          destroyed before they complete.
        (WebKit::WebsiteDataStore::removeData): Ditto.

2018-06-15  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed build fix after r232634.

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

2018-06-15  Per Arne Vollan  <pvollan@apple.com>

        DisplayRefreshMonitorMac should hold a weak pointer to WebPage.
        https://bugs.webkit.org/show_bug.cgi?id=186683

        Reviewed by Brent Fulgham.

        Instead of DisplayRefreshMonitorMac having a RefPtr to WebPage, it should have a weak pointer.
        Having a RefPtr could in theory create reference cycles. This potential problem has not been
        observed in practice, but it is safer to use a weak pointer.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/DrawingAreaMac.cpp:
        (WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback):

2018-06-15  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WKE] Disable memory pressure handling when running layout tests (WTR)
        https://bugs.webkit.org/show_bug.cgi?id=186663

        Reviewed by Michael Catanzaro.

        r196943 added a mechanism to disable the memory pressure handling
        on Mac. This patch enables using that mechanism also for GTK/WPE.
        To do that the environment variable WEBKIT_DISABLE_MEMORY_PRESSURE_MONITOR
        should bet set to 1.
        We want to use this on the layout tests to avoid flaky tests caused
        by accumulated leaks on the WebProcess by different tests.

        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-06-15  Per Arne Vollan  <pvollan@apple.com>

        Rollout r231818, as it introduced regression on tickets.com.
        https://bugs.webkit.org/show_bug.cgi?id=186675

        Unreviewed, rolling out.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::pause): Deleted.
        (WebKit::DisplayLink::resume): Deleted.
        * UIProcess/mac/DisplayLink.h:

2018-06-15  Thibault Saunier  <tsaunier@igalia.com>

        [GTK][WPE]: Avoid using uninitialized launchOptions in getLaunchOptions
        https://bugs.webkit.org/show_bug.cgi?id=185611

        Reviewed by Chris Dumez.

        Otherwise we might segfault.

        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getLaunchOptions):

2018-06-14  Youenn Fablet  <youenn@apple.com>

        Make NetworkProcess get cache storage parameters at creation of the CacheStorage engine
        https://bugs.webkit.org/show_bug.cgi?id=186166

        Reviewed by Alex Christensen.

        Make CacheStorage::Engine creation asynchronous.
        Update Engine public methods be static methods taking a SessionID, which will be used to create the engine.

        Add IPC methods to retrieve cache storage parameters from NetworkProcess to UIProcess.

        Add NetworkProcessProxy ability to compute the cache storage parameters based on the SessionID.
        For that purpose, make NetworkProcessProxy store a map of SessionID-to-WebsiteDataStore.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::cacheStorageParameters):
        (WebKit::NetworkProcess::setCacheStorageParameters):
        (WebKit::NetworkProcess::cacheStorageDirectory const): Deleted.
        (WebKit::NetworkProcess::cacheStoragePerOriginQuota const): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::fetchEntries):
        (WebKit::CacheStorage::Engine::open):
        (WebKit::CacheStorage::Engine::remove):
        (WebKit::CacheStorage::Engine::retrieveCaches):
        (WebKit::CacheStorage::Engine::retrieveRecords):
        (WebKit::CacheStorage::Engine::putRecords):
        (WebKit::CacheStorage::Engine::deleteMatchingRecords):
        (WebKit::CacheStorage::Engine::lock):
        (WebKit::CacheStorage::Engine::unlock):
        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
        (WebKit::CacheStorage::Engine::representation):
        (WebKit::CacheStorage::Engine::clearAllCaches):
        (WebKit::CacheStorage::Engine::clearCachesForOrigin):
        (WebKit::CacheStorage::Engine::Engine):
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        (WebKit::CacheStorage::Engine::defaultEngine): Deleted.
        * NetworkProcess/cache/CacheStorageEngine.h:
        (WebKit::CacheStorage::Engine::shouldPersist const):
        (WebKit::CacheStorage::Engine::weakPtrFactory):
        (WebKit::CacheStorage::Engine::create): Deleted.
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::~CacheStorageEngineConnection):
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::caches):
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
        (WebKit::CacheStorageEngineConnection::putRecords):
        (WebKit::CacheStorageEngineConnection::reference):
        (WebKit::CacheStorageEngineConnection::dereference):
        (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
        (WebKit::CacheStorageEngineConnection::engineRepresentation):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        (): Deleted.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::addSession):
        (WebKit::NetworkProcessProxy::removeSession):
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::~WebsiteDataStore):

2018-06-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Add IPC error case for broken pipe
        https://bugs.webkit.org/show_bug.cgi?id=186445

        Add error handling for ERROR_BROKEN_PIPE on IPC::Connection::readEventHandler.

        Reviewed by Ryosuke Niwa.

        * Platform/IPC/win/ConnectionWin.cpp:
        (IPC::Connection::readEventHandler):

2018-06-14  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Shortcut classification for redirect to prevalent resource
        https://bugs.webkit.org/show_bug.cgi?id=186627
        <rdar://problem/41132308>

        Reviewed by Brent Fulgham.

        This patch shortcuts classification of redirect collusion so that we more seldom
        have to rely on the recursive backtrace of the redirect graph. The initial
        implementation of Resource Load Statistics actually had this classification method.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::markAsPrevalentIfHasRedirectedToPrevalent):
            Iterates through a non-classified resource's data for where it has redirected
            and classifies it as prevalent if has redirected to 
        (WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
            Now calls WebResourceLoadStatisticsStore::markAsPrevalentIfHasRedirectedToPrevalent()
            before regular classification steps. 
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-06-14  Youenn Fablet  <youenn@apple.com>

        Apply CSP checks before Content blocker checks in NetworkLoadChecker as done by CachedResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=186550

        Reviewed by Alex Christensen.

        Do CSP checks and URL upgrade before content blocker checks.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::continueCheckingRequest):

2018-06-14  Brent Fulgham  <bfulgham@apple.com>

        Plug-in Process crashing on Mojave (affects Flash, others)
        https://bugs.webkit.org/show_bug.cgi?id=186628
        <rdar://problem/41120462>

        Reviewed by Eric Carlson.

        Add the missing “com.apple.security.cs.allow-unsigned-executable-memory” entitlement. Also alphabetize
        the entitlements file to make it easier to read.

        * Configurations/PluginService.entitlements:

2018-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] WebDriver: handle acceptInsecureCertificates capability
        https://bugs.webkit.org/show_bug.cgi?id=186560

        Reviewed by Brian Burg.

        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        (webkitAutomationSessionCreate): Check the acceptInsecureCertificates capability and set the TLS error policy in
        the WebContext accordingly if needed.
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/Cocoa/AutomationClient.h:
        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::requestAutomationSession): Use SessionCapabilities to fill the session configuration.
        (WebKit::AutomationClient::requestAutomationSessionWithCapabilities): Deleted.

2018-06-13  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Trying to access the remote inspector hits an assertion in the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=186588

        Reviewed by Carlos Garcia Campos.

        Make both the WPE and GTK+ ports use /org/webkit/inspector as base prefix
        for resource paths, which avoids needing a switcheroo depending on the port.

        * UIProcess/API/wpe/WebKit2InspectorGResourceBundle.xml:
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        * UIProcess/wpe/WebInspectorProxyWPE.cpp:
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        * WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp:
        (WebKit::WebInspectorUI::localizedStringsURL):
        (WebKit::RemoteWebInspectorUI::localizedStringsURL):

2018-06-13  Chris Dumez  <cdumez@apple.com>

        Crash under SWServer::unregisterConnection(Connection&)
        https://bugs.webkit.org/show_bug.cgi?id=186584
        <rdar://problem/40931680>

        Reviewed by Youenn Fablet.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::StorageToWebProcessConnection::unregisterSWConnections):
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection):
        * StorageProcess/StorageToWebProcessConnection.h:

2018-06-13  Dean Jackson  <dino@apple.com>

        Disable AR support in WKWebView clients
        https://bugs.webkit.org/show_bug.cgi?id=186611
        <rdar://problem/39544684>

        Reviewed by Jon Lee.

        Since it hasn't been adequately tested, System Preview (AR) should
        be disabled by default for WKWebViews.

        Add a new WebPreference, and SPI into WKWebViewConfiguration. Also
        don't register the WebViewContentProvider if the feature is
        disabled.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration encodeWithCoder:]):
        (-[WKWebViewConfiguration initWithCoder:]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _contentProviderRegistry]):
        (-[WKWebViewConfiguration _systemPreviewEnabled]):
        (-[WKWebViewConfiguration _setSystemPreviewEnabled:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry initWithConfiguration:]):
        (-[WKWebViewContentProviderRegistry init]): Deleted.

2018-06-13  Youenn Fablet  <youenn@apple.com>

        Supported plugin check should be based on plugin identifier
        https://bugs.webkit.org/show_bug.cgi?id=186578
        <rdar://problem/40523828>

        Reviewed by Darin Adler.

        Refactoring to move from Plugin name to Plugin identifier.
        Set built-in pdf plugin identifier.
        This allows making sure that the PDF plug-in check might not change according localization.

        * Scripts/webkit/messages.py:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<PluginInfo>::encode):
        (IPC::ArgumentCoder<PluginInfo>::decode):
        * UIProcess/Plugins/PluginInfoStore.cpp:
        (WebKit::PluginInfoStore::supportedPluginIdentifiers):
        (WebKit::PluginInfoStore::addSupportedPlugin):
        (WebKit::PluginInfoStore::supportedPluginNames): Deleted.
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getPlugins):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::pluginInfo):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::pluginInfo):
        (WebKit::WebPluginInfoProvider::webVisiblePluginInfo):
        (WebKit::WebPluginInfoProvider::populatePluginCache):
        * WebProcess/Plugins/WebPluginInfoProvider.h:

2018-06-13  Chris Dumez  <cdumez@apple.com>

        PSON: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html ASSERTS with process swap enabled
        https://bugs.webkit.org/show_bug.cgi?id=186545

        Reviewed by Brady Eidson.

        Move frame navigation logging for ITP purposes from the WebProcess to the UIProcess.
        This information was previously logged in DocumentLoader::willSendRequest() and was getting
        sync'd to the UIProcess at regular intervals or when the layout tests call testRunner's
        statisticsNotifyObserver(). We now do the logging directly in the UIProcess, in
        WebPageProxy::decidePolicyForNavigationAction (which was getting called via IPC from
        DocumentLoader::willSendRequest()).

        This is more efficient and will also be needed soon due to the way process swap on navigation 
        deals with cross-origin redirects. On cross-origin redirect of the main frame, PSON cancels
        the load and started a new load to the redirected to URL in the new WebProcess. As a result,
        the new WebProcess is not aware that the load is a redirect, which is information that ITP
        requires. By moving the ITP logging to the UIProcess, we still have access to this
        information.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        - We now pass the full redirect response the the delegate method instead of a simple
        isRedirect boolean.
        - Log the navigation in the WebResourceLoadStatisticsStore for ITP purposes.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::areDomainsAssociated):
        Equivalent of ResourceLoadObserver's areDomainsAssociated(). Most of the logic was moved
        to ResourceLoadStatistics::areDomainsAssociated() to avoid code duplication.

        (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
        This is called whenever a WebProcess sends new resource load statistics to the UIProcess.
        Whenever this happens, we call processStatisticsAndDataRecords() right away, which is
        sometimes the tests currently rely on. As a result, we can cancels any pending statistics
        processing request that was scheduled by logFrameNavigation().

        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsProcessingRequestIfNecessary):
        (WebKit::WebResourceLoadStatisticsStore::cancelPendingStatisticsProcessingRequest):
        Whenever a navigation is logged and statistics have been updated, we need to make sure we
        schedule a "timer" to process the new data. We do this at most every 5 seconds for performance
        reasons. This 5 second interval matches what the ResourceLoadObserver is using in the WebProcess
        to notify the UIProcess of new data.

        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        This code was moved from ResourceLoadObserver to WebResourceLoadStatisticsStore now that we
        do this logging in the UIProcess instead of the WebProcess. One difference with WebCore is
        that we use WebPageProxy::pageLoadState().url() as mainFrameURL instead of
        WebPageProxy::mainFrame().url(). The reason for that is that WebPageProxy::mainFrame().url()
        becomes empty in case of process swap but ITP still needs the actual main frame URL when the
        navigation was triggered. WebPageProxy::pageLoadState().url() gives us this information.

        * UIProcess/WebResourceLoadStatisticsStore.h:

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        We now pass the full redirect response the the delegate method instead of a simple
        isRedirect boolean.

2018-06-13  Brent Fulgham  <bfulgham@apple.com>

        Crash during interrupted process termination
        https://bugs.webkit.org/show_bug.cgi?id=185373
        <rdar://problem/40019480>

        Reviewed by Alex Christensen.

        It's possible to encounter a crash if a user agent feature (such as Safari's responsiveness timer) decides
        to kill a Web Process around the same time that a user decides to trigger a new page load. One of the two
        termination operations may attempt to call methods on a nulled process pointer.

        We can avoid this by holding our own reference to the terminating process until the termination steps have
        been completed.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageTerminate): Ref<> the active process while the termination call is performed.
        * UIProcess/API/Cocoa/WKWebView.mm:
        ([WKWebView _killWebContentProcessAndResetState]): Ditto.

2018-06-13  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: wrong modifiers sent for 'Help' virtual key
        https://bugs.webkit.org/show_bug.cgi?id=186600
        <rdar://problem/41088912>

        Reviewed by Timothy Hatcher.

        This fixes a hang when running W3C test:

            special_keys.py::test_webdriver_special_key_sends_keydown[HELP-expected2]

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::eventModifierFlagsForVirtualKey):
        The help modifier doesn't seem to be used when pressing the Help key.
        I verified this using the Help key on the Keyboard Viewer, since no
        keyboards from the past decade actually have this physical button.

2018-06-13  Thibault Saunier  <tsaunier@igalia.com>

        [WPE] Build getUserMedia support
        https://bugs.webkit.org/show_bug.cgi?id=186547

        Reviewed by Alejandro G. Castro.

        * SourcesWPE.txt: Compile files necessary for MediaStream/webrtc.

2018-06-13  Andy Estes  <aestes@apple.com>

        [iOS] Synchronize PDF resizing with device rotation
        https://bugs.webkit.org/show_bug.cgi?id=186587
        <rdar://problem/40922462>

        Reviewed by Darin Adler.

        Both -beginPDFViewRotation and -endPDFViewRotation need to be called as part of
        the transition coordinator's -animateAlongsideTransition: block to be synchronized
        with rotation. Additionally, updateBlock needs to be invoked between the two calls
        so that PDFKit can capture the frame geometry before and after the update.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_beginAnimatedResizeWithUpdates:]):
        (-[WKPDFView web_beginAnimatedResize]): Renamed to web_beginAnimatedResizeWithUpdates:.
        (-[WKPDFView web_endAnimatedResize]): Deleted.

2018-06-12  Brent Fulgham  <bfulgham@apple.com>

        Turn CSS Spring Animations and Link Preload off by default for production builds.
        https://bugs.webkit.org/show_bug.cgi?id=186548
        <rdar://problem/41023774>

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml: Switch these features from 'on' to
        DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.

2018-06-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Upstream watchOS source additions to OpenSource (Part 2)
        https://bugs.webkit.org/show_bug.cgi?id=186442
        <rdar://problem/40879364>

        Reviewed by Tim Horton.

        Upstream most of the work around form controls on watchOS. Also, rename WKFormControlListViewController.* to
        its intended name, WKQuickboardListViewController.*.

        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKDatePickerViewController.h:
        * UIProcess/ios/forms/WKDatePickerViewController.mm:
        (datePickerSetButtonHeight):
        (datePickerVerticalMargin):
        (-[WKDatePickerWheelLabel initWithFrame:]):
        (-[WKDatePickerWheelLabel lastSelectedDate]):
        (-[WKDatePickerWheelLabel setLastSelectedDate:]):
        (-[WKDatePickerWheelLabel needsUpdateForIndex:selectedDate:]):
        (-[WKDatePickerWheel initWithStyle:]):
        (-[WKDatePickerWheel initWithController:style:]):
        (-[WKDatePickerWheel gestureRecognized:]):
        (-[WKDatePickerWheel setDrawsFocusOutline:]):
        (-[WKDatePickerWheel drawsFocusOutline]):
        (-[WKDatePickerWheel gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKDatePickerViewController initWithDelegate:]):
        (-[WKDatePickerViewController viewDidLoad]):
        (-[WKDatePickerViewController prefersStatusBarHidden]):
        (-[WKDatePickerViewController viewWillAppear:]):
        (-[WKDatePickerViewController viewDidAppear:]):
        (-[WKDatePickerViewController viewDidDisappear:]):
        (-[WKDatePickerViewController _handleStatusBarNavigation]):
        (-[WKDatePickerViewController viewWillLayoutSubviews]):
        (-[WKDatePickerViewController becomeFirstResponder]):
        (-[WKDatePickerViewController defaultMinimumDate]):
        (-[WKDatePickerViewController defaultMaximumDate]):
        (-[WKDatePickerViewController _valueForInput]):
        (-[WKDatePickerViewController _dateFromInitialText]):
        (-[WKDatePickerViewController _setButtonPressed]):
        (-[WKDatePickerViewController _updateSelectedPickerViewIndices]):
        (-[WKDatePickerViewController _configurePickerView:]):
        (-[WKDatePickerViewController setMinimumDate:]):
        (-[WKDatePickerViewController minimumDate]):
        (-[WKDatePickerViewController setMaximumDate:]):
        (-[WKDatePickerViewController maximumDate]):
        (-[WKDatePickerViewController setDate:]):
        (-[WKDatePickerViewController setDateFromComponents:]):
        (-[WKDatePickerViewController setDay:month:year:era:]):
        (-[WKDatePickerViewController date]):
        (-[WKDatePickerViewController _dateComponentForDay:month:year:era:]):
        (-[WKDatePickerViewController _adjustDateToValidDateIfNecessary]):
        (-[WKDatePickerViewController _createAndConfigureGranularityLabelWithText:]):
        (-[WKDatePickerViewController _canonicalizeAndUpdateSelectedDate]):
        (-[WKDatePickerViewController numberOfItemsInPickerView:]):
        (-[WKDatePickerViewController pickerView:viewForItemAtIndex:]):
        (-[WKDatePickerViewController didBeginInteractingWithDatePicker:]):
        (-[WKDatePickerViewController pickerView:didSelectItemAtIndex:]):
        (-[WKDatePickerViewController pickerViewWillBeginSelection:]):
        (-[WKDatePickerViewController pickerViewDidEndSelection:]):
        (-[WKDatePickerViewController _dayFromIndex:]):
        (-[WKDatePickerViewController _eraAndYearFromIndex:]):
        (-[WKDatePickerViewController _monthFromIndex:]):
        (-[WKDatePickerViewController _indexFromDay:]):
        (-[WKDatePickerViewController _indexFromYear:era:]):
        (-[WKDatePickerViewController _indexFromMonth:]):
        * UIProcess/ios/forms/WKFormControlListViewController.h: Removed.
        * UIProcess/ios/forms/WKFormControlListViewController.mm: Removed.
        * UIProcess/ios/forms/WKNumberPadViewController.h:
        * UIProcess/ios/forms/WKNumberPadViewController.mm:
        (inputLabelFontSize):
        (-[WKNumberPadViewController initWithDelegate:initialText:inputMode:]):
        (-[WKNumberPadViewController dealloc]):
        (-[WKNumberPadViewController viewDidLoad]):
        (-[WKNumberPadViewController viewWillDisappear:]):
        (-[WKNumberPadViewController viewWillLayoutSubviews]):
        (-[WKNumberPadViewController _reloadHeaderViewFromInputText]):
        (-[WKNumberPadViewController didSelectKey:]):
        (-[WKNumberPadViewController _handleKeyPress:]):
        (-[WKNumberPadViewController _cancelInput]):
        (-[WKNumberPadViewController _deleteLastInputCharacter]):
        (-[WKNumberPadViewController _deleteButtonPressed]):
        (-[WKNumberPadViewController _cancelDeletionTimers]):
        (-[WKNumberPadViewController _startDeletionTimer]):
        (-[WKNumberPadViewController _deletionTimerFired]):
        (-[WKNumberPadViewController addContentViewAnimations:]):
        * UIProcess/ios/forms/WKQuickboardListViewController.h: Added.
        * UIProcess/ios/forms/WKQuickboardListViewController.mm: Added.
        (-[WKQuickboardListItemCell topToLabelBaselineSpecValue]):
        (-[WKQuickboardListItemCell baselineToBottomSpecValue]):
        (-[WKQuickboardListViewController initWithDelegate:]):
        (-[WKQuickboardListViewController updateContextViewIfNeeded]):
        (-[WKQuickboardListViewController prefersStatusBarHidden]):
        (-[WKQuickboardListViewController viewDidLoad]):
        (-[WKQuickboardListViewController viewWillAppear:]):
        (-[WKQuickboardListViewController viewDidDisappear:]):
        (-[WKQuickboardListViewController _handleStatusBarNavigation]):
        (-[WKQuickboardListViewController reloadContextView]):
        (-[WKQuickboardListViewController actionController]):
        (-[WKQuickboardListViewController languageControllerDidChangePrimaryLanguage:]):
        (-[WKQuickboardListViewController headerContentViewHeight]):
        (-[WKQuickboardListViewController headerContentView]):
        (configureStatusBarForController):
        * UIProcess/ios/forms/WKSelectMenuListViewController.h:
        * UIProcess/ios/forms/WKSelectMenuListViewController.mm:
        (-[WKSelectMenuItemCell initWithStyle:reuseIdentifier:]):
        (-[WKSelectMenuItemCell imageView]):
        (-[WKSelectMenuListViewController initWithDelegate:]):
        (-[WKSelectMenuListViewController viewDidLoad]):
        (-[WKSelectMenuListViewController acceptButtonTappedWithCompletion:]):
        (-[WKSelectMenuListViewController shouldShowTrayView]):
        (-[WKSelectMenuListViewController didSelectListItem:]):
        (-[WKSelectMenuListViewController numberOfListItems]):
        (-[WKSelectMenuListViewController heightForListItem:width:]):
        (-[WKSelectMenuListViewController cellForListItem:]):
        (-[WKSelectMenuListViewController selectItemAtIndex:]):
        * UIProcess/ios/forms/WKTimePickerViewController.h:
        * UIProcess/ios/forms/WKTimePickerViewController.mm:
        (-[WKTimePickerViewController initWithDelegate:]):
        (-[WKTimePickerViewController dateFormatter]):
        (-[WKTimePickerViewController timeValueForFormControls]):
        (-[WKTimePickerViewController dateComponentsFromInitialValue]):
        (-[WKTimePickerViewController viewDidAppear:]):
        (-[WKTimePickerViewController viewDidLoad]):
        (-[WKTimePickerViewController becomeFirstResponder]):
        (-[WKTimePickerViewController setHour:minute:]):
        (-[WKTimePickerViewController leftButtonWOTAction]):
        (-[WKTimePickerViewController rightButtonWOTAction]):
        * WebKit.xcodeproj/project.pbxproj:

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

        Make Modern EME An Experimental Feature Again
        https://bugs.webkit.org/show_bug.cgi?id=186569
        <rdar://problem/41054402>

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-06-12  Andy Estes  <aestes@apple.com>

        [watchOS] Enable NetworkActivityTracker
        https://bugs.webkit.org/show_bug.cgi?id=186568
        <rdar://problem/41050624>

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkActivityTracker.h:

2018-06-12  Antti Koivisto  <antti@apple.com>

        Add performance logging for slow cache retrieves
        https://bugs.webkit.org/show_bug.cgi?id=186520
        <rdar://problem/41002070>

        Reviewed by Chris Dumez.

        We sometimes see slow cache retrieves in logs. Add some more logging to better analyze these cases.

        This patch adds timings to all cache storage retrieve operations and passes them up to the client.
        We then log the timings on NetworkResourceLoader levels if needed. Items logged include

        - total retrieve time
        - dispatch delay and number of resources dispatched before this one
        - record I/O time
        - blob I/O time
        - whether cache shrink was in progress
        - whether cache synchronization was in progress
        - cancellation

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::logSlowCacheRetrieveIfNeeded):

        Log if the retrieve took more than 1s.

        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::readRecord):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):
        (WebKit::NetworkCache::Cache::completeRetrieve):
        (WebKit::NetworkCache::Cache::retrieveData):
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):
        (WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry):

        SpeculativeLoadManager does not records specific timings yet but at least we do log when they occur.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::ReadOperation::cancel):
        (WebKit::NetworkCache::Storage::ReadOperation::finish):

        Record timing info in ReadOperations.

        (WebKit::NetworkCache::Storage::dispatchReadOperation):
        (WebKit::NetworkCache::retrieveFromMemory):
        (WebKit::NetworkCache::Storage::retrieve):
        * NetworkProcess/cache/NetworkCacheStorage.h:

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

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

        * gtk/NEWS: Add release notes for 2.21.4.

2018-06-11  Youenn Fablet  <youenn@apple.com>

        Improve error messages in case FetchEvent.respondWith has a rejected promise
        https://bugs.webkit.org/show_bug.cgi?id=186368

        Reviewed by Chris Dumez.

        Log in JS console in case of failures.
        Rely on ThreadableLoader to log which client actually failed.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didFail):

2018-06-11  Chris Dumez  <cdumez@apple.com>

        http/tests/security/xss-DENIED-script-inject-into-inactive-window2.html times out with PSON enabled
        https://bugs.webkit.org/show_bug.cgi?id=186546

        Reviewed by Brady Eidson.

        Disable process swap on navigation in frames that have opened other frames via
        window.open(). These new windows may have a WindowProxy to their opener, and it
        would therefore be unsafe to process swap at this point.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setHasOpenedFrames):
        (API::Navigation::hasOpenedFrames const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

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

        Add logging around internalError(const URL&)
        https://bugs.webkit.org/show_bug.cgi?id=186369
        <rdar://problem/40872046>

        Reviewed by Brent Fulgham.

        There are times when we receive bug reports where the user says that
        they are simply shown a page saying an internal error occurred. To
        help understand the circumstances of that error, add some logging to
        internalError() in WebErrors.cpp. This logging logs at the Error level
        that internalError() was called and then logs a backtrace.

        * Shared/WebErrors.cpp:
        (WebKit::internalError):

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

        Link drag image is inconsistently unreadable in dark mode
        https://bugs.webkit.org/show_bug.cgi?id=186472

        Reviewed by Timothy Hatcher.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::useDefaultAppearance):
        Make defaultAppearance accurate even if useSystemAppearance is false.
        Some parts of WebKit (like the link drag image, but also context menus)
        want to be able to follow the system appearance regardless of whether
        the view or content has opted in.

2018-06-11  Chris Dumez  <cdumez@apple.com>

        http/tests/security/cors-post-redirect-307.html fails with PSON enabled
        https://bugs.webkit.org/show_bug.cgi?id=186441

        Reviewed by Brady Eidson.

        Rename existing flag to something a bit more generic, now that it is used for
        more things than bypassing the navigation policy check.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::goToBackForwardItem):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-06-11  Nan Wang  <n_wang@apple.com>

        AX: [iOS] accessibility sometimes doesn't know process suspension is canceled
        https://bugs.webkit.org/show_bug.cgi?id=186450

        Reviewed by Chris Fleizach.

        There's some early return condition in WebProcess::cancelPrepareToSuspend() which
        could lead to accessibility failing to post process status notificaiton. Fixed it
        by moving the accessibility notification before the early return condition.

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

2018-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API run run javascript from a WebKitWebView in an isolated world
        https://bugs.webkit.org/show_bug.cgi?id=186192

        Reviewed by Michael Catanzaro.

        Add webkit_web_view_run_javascript_in_world() that receives a world name. Also add
        webkit_script_world_new_with_name() to create an isolated world with a name and webkit_script_world_get_name()
        to get the name of a WebKitScriptWorld.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_run_javascript):
        (webkit_web_view_run_javascript_finish):
        (webkit_web_view_run_javascript_in_world):
        (webkit_web_view_run_javascript_in_world_finish):
        * UIProcess/API/gtk/WebKitWebView.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
        * UIProcess/API/wpe/WebKitWebView.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld): Send RunJavaScriptInMainFrameScriptWorld message to
        the WebProcess.
        * UIProcess/WebPageProxy.h:
        * WebProcess/InjectedBundle/API/glib/WebKitScriptWorld.cpp:
        (webkitScriptWorldCreate):
        (webkit_script_world_new_with_name):
        (webkit_script_world_get_name):
        * WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.h:
        * WebProcess/InjectedBundle/API/wpe/WebKitScriptWorld.h:
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
        (WebKit::InjectedBundleScriptWorld::find): Find an InjectedBundleScriptWorld by its name.
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::runJavaScriptInMainFrameScriptWorld): Find the InjectedBundleScriptWorld for the given name
        and run the script in its js context.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in: Add RunJavaScriptInMainFrameScriptWorld message.

2018-06-10  Chris Dumez  <cdumez@apple.com>

        Reload the Web view in case of crash if the client does not implement webViewWebContentProcessDidTerminate delegate
        https://bugs.webkit.org/show_bug.cgi?id=186468

        Reviewed by Geoffrey Garen.

        We now attempt to reload the Web view if the web content process crashes and the client
        does not implement the webViewWebContentProcessDidTerminate delegate (or any of the similar
        delegates in our SPI).

        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::processDidCrash):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::processDidTerminate):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/glib/WebKitNavigationClient.cpp:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::processDidTerminate):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::shouldReloadAfterProcessTermination):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):
        (WebKit::WebPageProxy::tryReloadAfterProcessTermination):
        (WebKit::WebPageProxy::resetRecentCrashCountSoon):
        (WebKit::WebPageProxy::resetRecentCrashCount):
        (WebKit::m_configurationPreferenceValues): Deleted.
        * UIProcess/WebPageProxy.h:

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

        [Xcode] Clean up and modernize some build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=186463

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
        * Configurations/BaseTarget.xcconfig: Simplified the definition of WK_PRIVATE_FRAMEWORKS_DIR
          now that WK_XCODE_SUPPORTS_TEXT_BASED_STUBS is true for all supported Xcode versions.
        * Configurations/DebugRelease.xcconfig: Removed definition for macOS 10.11.
        * Configurations/FeatureDefines.xcconfig: Simplified the definitions of ENABLE_APPLE_PAY and
          ENABLE_VIDEO_PRESENTATION_MODE now macOS 10.12 is the earliest supported version.
        * Configurations/Version.xcconfig: Removed definition for macOS 10.11.
        * Configurations/WebKitTargetConditionals.xcconfig: Removed definitions for macOS 10.11.

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

        Added missing file references to the Configuration group.

        * WebKit.xcodeproj/project.pbxproj:

2018-06-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Upstream watchOS source additions to OpenSource (Part 1)
        https://bugs.webkit.org/show_bug.cgi?id=186442
        <rdar://problem/40879364>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dismissQuickboardViewControllerAndRevealFocusedFormOverlayIfNecessary:]):
        (-[WKContentView quickboard:textEntered:]):
        (-[WKContentView quickboardInputCancelled:]):
        (-[WKContentView viewController:inputContextViewHeightForSize:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView inputContextViewForViewController:]):
        (-[WKContentView inputLabelTextForViewController:]):
        (-[WKContentView initialValueForViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView textSuggestionsForListViewController:]):
        (-[WKContentView listViewController:didSelectTextSuggestion:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        * UIProcess/ios/WKScrollView.mm:
        (-[WKScrollView initWithFrame:]):
        (-[WKScrollView addGestureRecognizer:]):
        (-[WKScrollView _configureDigitalCrownScrolling]):
        (-[WKScrollView _puic_contentOffsetForCrownInputSequencerOffset:]):
        * UIProcess/ios/forms/WKFocusedFormControlView.h:
        * UIProcess/ios/forms/WKFocusedFormControlView.mm:
        (pathWithRoundedRectInFrame):
        (-[WKFocusedFormControlView initWithFrame:delegate:]):
        (-[WKFocusedFormControlView handleWheelEvent:]):
        (-[WKFocusedFormControlView show:]):
        (-[WKFocusedFormControlView hide:]):
        (-[WKFocusedFormControlView delegate]):
        (-[WKFocusedFormControlView setDelegate:]):
        (-[WKFocusedFormControlView dimmingMaskLayer]):
        (-[WKFocusedFormControlView handleTap]):
        (-[WKFocusedFormControlView _wheelChangedWithEvent:]):
        (-[WKFocusedFormControlView didDismiss]):
        (-[WKFocusedFormControlView didSubmit]):
        (-[WKFocusedFormControlView layoutSubviews]):
        (-[WKFocusedFormControlView setHighlightedFrame:]):
        (-[WKFocusedFormControlView computeDimmingViewCutoutPath]):
        (-[WKFocusedFormControlView disengageFocusedFormControlNavigation]):
        (-[WKFocusedFormControlView engageFocusedFormControlNavigation]):
        (-[WKFocusedFormControlView reloadData:]):
        (-[WKFocusedFormControlView setMaskLayerPosition:animated:]):
        (-[WKFocusedFormControlView setHighlightedFrame:animated:]):
        (-[WKFocusedFormControlView submitActionName]):
        (submitActionNameFontAttributes):
        (-[WKFocusedFormControlView setSubmitActionName:]):
        (-[WKFocusedFormControlView scrollViewForCrownInputSequencer]):
        (-[WKFocusedFormControlView updateViewForCurrentCrownInputSequencerState]):
        (-[WKFocusedFormControlView scrollOffsetForCrownInputOffset:]):
        (-[WKFocusedFormControlView _crownInputSequencerTimerFired]):
        (-[WKFocusedFormControlView cancelPendingCrownInputSequencerUpdate]):
        (-[WKFocusedFormControlView scheduleCrownInputSequencerUpdate]):
        (-[WKFocusedFormControlView crownInputSequencerOffsetDidChange:]):
        (-[WKFocusedFormControlView crownInputSequencerDidBecomeIdle:willDecelerate:]):
        (-[WKFocusedFormControlView crownInputSequencerIdleDidChange:]):
        (-[WKFocusedFormControlView suggestions]):
        (-[WKFocusedFormControlView setSuggestions:]):
        (-[WKFocusedFormControlView handleWebViewCredentialsSaveForWebsiteURL:user:password:passwordIsAutoGenerated:]):
        (-[WKFocusedFormControlView selectionWillChange:]):
        (-[WKFocusedFormControlView selectionDidChange:]):
        (-[WKFocusedFormControlView textWillChange:]):
        (-[WKFocusedFormControlView textDidChange:]):

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

        Only display refresh monitors having requested display refresh callback should get notified on screen updates.
        https://bugs.webkit.org/show_bug.cgi?id=186397
        <rdar://problem/40897835>

        Reviewed by Brent Fulgham.

        Since all display refresh monitors in the WebContent process share a single UI process display link,
        we should make sure that only the monitors having requested callback are getting notified on screen
        updates. I have not been able to reproduce a case where a monitor is being notified without having
        requested updates, but we should safeguard the code for future code changes.

        * WebProcess/WebPage/mac/DrawingAreaMac.cpp:

2018-06-08  Aditya Keerthi  <akeerthi@apple.com>

        [Datalist] Allow TextFieldInputType to show and hide suggestions
        https://bugs.webkit.org/show_bug.cgi?id=186151

        Reviewed by Tim Horton.

        Added WebDataListSuggestionPicker to send messages to the UIProcess in order to update the suggestions view.
        This object is also responsible for forwarding messages from WebKit into the DataListSuggestionsClient, which
        is the TextFieldInputType in this case. The client needs to know when the suggestions are hidden or if an
        suggestion has been selected.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createDataListSuggestionPicker): Responsible for creating WebDataListSuggestionPicker to send/receive messages.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp: Added. Responsible for sending messages to UIProcess and updating the DataListSuggestionsClient.
        (WebKit::WebDataListSuggestionPicker::WebDataListSuggestionPicker):
        (WebKit::WebDataListSuggestionPicker::~WebDataListSuggestionPicker):
        (WebKit::WebDataListSuggestionPicker::handleKeydownWithIdentifier):
        (WebKit::WebDataListSuggestionPicker::didSelectOption):
        (WebKit::WebDataListSuggestionPicker::didCloseSuggestions):
        (WebKit::WebDataListSuggestionPicker::close):
        (WebKit::WebDataListSuggestionPicker::displayWithActivationType):
        * WebProcess/WebCoreSupport/WebDataListSuggestionPicker.h: Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setActiveDataListSuggestionPicker):
        (WebKit::WebPage::didSelectDataListOption): Called by UIProcess when option selected.
        (WebKit::WebPage::didCloseSuggestions): Called by UIProcess if the suggestions view is closed.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-06-08  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Fix initial value of HANDLE to INVALID_HANDLE_VALUE
        https://bugs.webkit.org/show_bug.cgi?id=186405

        The handle was not initialized at all. Initialized with INVALID_HANDLE_VALUE.

        Reviewed by Per Arne Vollan.

        * Platform/IPC/Attachment.h:
        * Platform/IPC/win/AttachmentWin.cpp:
        (IPC::Attachment::decode):

2018-06-08  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: include browser name and version in listing for automation targets
        https://bugs.webkit.org/show_bug.cgi?id=186204
        <rdar://problem/36950423>

        Reviewed by Darin Adler.

        Add a new delegate method that allows the client to set the name and version
        of the browser as returned in the 'browserName' and 'browserVersion' capabilities.
        If the delegate methods are not implemented, try to get this information from
        the main bundle.

        In the RWI protocol, these fields are added to automation target listings.

        * UIProcess/API/Cocoa/_WKAutomationDelegate.h:
        * UIProcess/Cocoa/AutomationClient.h:
        * UIProcess/Cocoa/AutomationClient.mm:
        (WebKit::AutomationClient::AutomationClient):
        (WebKit::AutomationClient::browserName const):
        (WebKit::AutomationClient::browserVersion const):

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

        Run display links in the UI process when ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) is true.
        https://bugs.webkit.org/show_bug.cgi?id=186379

        Reviewed by Brent Fulgham.

        Replace __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 with ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/DisplayLink.cpp:
        * UIProcess/mac/DisplayLink.h:
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebProcess/WebPage/DrawingArea.cpp:
        * WebProcess/WebPage/mac/DrawingAreaMac.cpp:

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

        Send display link IPC message from display link thread.
        https://bugs.webkit.org/show_bug.cgi?id=186429

        Reviewed by Geoffrey Garen.

        When the display link callback is firing on the display link thread in the UI process,
        we schedule a function to be called on the main thread to send the IPC message to the
        WebContent process. Since Connection::send is thread-safe, we can just send the message
        from the display link thread, instead. This should be a small performance improvement.

        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::DisplayLink):
        (WebKit::DisplayLink::displayLinkCallback):
        * UIProcess/mac/DisplayLink.h:

2018-06-07  Chris Dumez  <cdumez@apple.com>

        Add base class to get WeakPtrFactory member and avoid some boilerplate code
        https://bugs.webkit.org/show_bug.cgi?id=186407

        Reviewed by Brent Fulgham.

        Add CanMakeWeakPtr base class to get WeakPtrFactory member and its getter, in
        order to avoid some boilerplate code in every class needing a WeakPtrFactory.
        This also gets rid of old-style createWeakPtr() methods in favor of the newer
        makeWeakPtr().

        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace):
        * NetworkProcess/PreconnectTask.h:
        * NetworkProcess/cache/CacheStorageEngine.h:
        * Shared/Authentication/AuthenticationManager.h:
        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::Attachment):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplicationStateTracker.h:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker):
        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::setAlternateBackForwardListSourcePage):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateWindowAndViewFrames):
        (WebKit::WebViewImpl::setTopContentInset):
        (WebKit::WebViewImpl::viewDidMoveToWindow):
        (WebKit::WebViewImpl::prepareForMoveToWindow):
        (WebKit::WebViewImpl::validateUserInterfaceItem):
        (WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded):
        (WebKit::WebViewImpl::interpretKeyEvent):
        (WebKit::WebViewImpl::firstRectForCharacterRange):
        (WebKit::WebViewImpl::performKeyEquivalent):
        (WebKit::WebViewImpl::keyUp):
        (WebKit::WebViewImpl::keyDown):
        * UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp:
        (WebKit::WebCredentialsMessengerProxy::makeCredential):
        (WebKit::WebCredentialsMessengerProxy::getAssertion):
        * UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h:
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::setOriginatingPage):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/ProcessAssertion.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * UIProcess/gtk/WaylandCompositor.cpp:
        (WebKit::WaylandCompositor::Surface::attachBuffer):
        * UIProcess/gtk/WaylandCompositor.h:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion):
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::displayLinkCallback):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
        (WebKit::RemoteLayerTreeDisplayRefreshMonitor::RemoteLayerTreeDisplayRefreshMonitor):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:

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

        Don’t install process-webcontent-entitlements.sh into the built XPC services.

        * WebKit.xcodeproj/project.pbxproj:

2018-06-07  Andy Estes  <aestes@apple.com>

        [iOS] Inform the client when PDFKit's extension process crashes
        https://bugs.webkit.org/show_bug.cgi?id=186418
        <rdar://problem/40175864>

        Reviewed by Tim Horton.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):

        Separated the dispatching of delegate methods from the rest of the web
        process-specific processDidTerminate logic.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):

        Minor style fix.

        (-[WKPDFView pdfHostViewControllerExtensionProcessDidCrash:]):

        Called WebPageProxy::dispatchProcessDidTerminate on the main thread.

2018-06-07  Andy Estes  <aestes@apple.com>

        [iOS] Unable to present the share sheet after saving a PDF to Files.app
        https://bugs.webkit.org/show_bug.cgi?id=186413
        <rdar://problem/39937488>

        Reviewed by Tim Horton.

        WKApplicationStateTrackingView (WKPDFView's superclass) keeps track of whether
        it's in a window so that it can suspend and resume the web process accordingly.
        However, in WKPDFView's case, PDFKit's host view is in the window instead of
        WKPDFView itself when a PDF is being displayed (WKPDFView is only in a window as a
        placeholder while the PDF loads). Since WKApplicationStateTrackingView doesn't
        think its in a window, it suspends the web process, preventing messages necessary
        to displaying the share sheet from being delivered.

        Fix this by teaching WKApplicationStateTrackingView to consider the in-windowness
        of the proper content view. For all cases other than WKPDFView, this is |self|.
        For WKPDFView, it is the PDFHostViewController's root view if it exists, otherwise
        it's |self|.

        * UIProcess/ios/WKApplicationStateTrackingView.h:
        * UIProcess/ios/WKApplicationStateTrackingView.mm:
        (-[WKApplicationStateTrackingView willMoveToWindow:]):
        (-[WKApplicationStateTrackingView didMoveToWindow]):
        (-[WKApplicationStateTrackingView _contentView]):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _contentView]):
        (-[WKPDFView web_contentView]):

2018-06-07  Dean Jackson  <dino@apple.com>

        Match HI spec for thumbnail view sizing and location
        https://bugs.webkit.org/show_bug.cgi?id=186412
        <rdar://problem/40226192>

        Reviewed by Tim Horton.

        Use the computed obscured inset to position the QuickLook
        view inside the WKSystemPreviewView.

        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):
        (-[WKSystemPreviewView _layoutThumbnailView]):

2018-06-07  Tadeu Zagallo  <tzagallo@apple.com>

        Don't try to allocate JIT memory if we don't have the JIT entitlement
        https://bugs.webkit.org/show_bug.cgi?id=182605
        <rdar://problem/38271229>

        Reviewed by Mark Lam.

        Remove processHasEntitlement, which was moved into WTF and update all call sites.

        * Shared/mac/SandboxUtilities.h:
        * Shared/mac/SandboxUtilities.mm:
        (WebKit::processHasEntitlement): Deleted.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::applicationType):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (applicationHasAppLinkEntitlements):

2018-06-07  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r232544): Pages are blank after homing out and then resuming on iPad
        https://bugs.webkit.org/show_bug.cgi?id=186408
        <rdar://problem/40907111>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _resizeWhileHidingContentWithUpdates:]):
        Clients who use _resizeWhileHidingContentWithUpdates don't call
        _endAnimatedResize; the former API is a one-shot. We can't wait for
        _endAnimatedResize to complete the animation (and don't need to, since
        the content is hidden), but instead should just finish it when the
        commit with the resized tiles arrives.

2018-06-07  Jiewen Tan  <jiewen_tan@apple.com>

        Use the same overloaded addInputString in WKContentViewInteraction
        https://bugs.webkit.org/show_bug.cgi?id=186376
        <rdar://problem/18498360>

        Reviewed by Brent Fulgham.

        Different overloaded variants of [UIKeyboardImpl -addInputString] behaves differently. We should use the same
        overloaded variant consistently: [UIKeyboardImpl -addInputString:withFlags:withInputManagerHint:].

        Sadly, there is no test case for this change as:
        1) UIScriptController has troubles simulating '\r' keyboard event, and
        2) API test couldn't simulate proper UI keyboard events.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):

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

        REGRESSION(r224134) Client certificate challenges don't always appear
        https://bugs.webkit.org/show_bug.cgi?id=186402
        <rdar://problem/35967150>

        Reviewed by Brian Weinstein.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::completeAuthenticationChallenge):
        Add an exception for all TLS-handshake-related challenges, not just server trust.

2018-06-07  Ryosuke Niwa  <rniwa@webkit.org>

        Release assert in Document::updateLayout() in WebPage::determinePrimarySnapshottedPlugIn()
        https://bugs.webkit.org/show_bug.cgi?id=186383
        <rdar://problem/40849498>

        Reviewed by Jon Lee.

        The release assert was hit because the descendent elemenet iterator, which instantiates ScriptDisallowedScope,
        was alive as determinePrimarySnapshottedPlugIn invoked Document::updateLayout. Avoid this by copying
        the list of plugin image elements into a vector first.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn): Fixed the release assert, and deployed Ref and RefPtr
        to make this code safe.

2018-06-07  Don Olmstead  <don.olmstead@sony.com>

        [CoordGraphics] Fix compilation errors around USE(COORDINATED_GRAPHICS)
        https://bugs.webkit.org/show_bug.cgi?id=186374

        Reviewed by Žan Doberšek.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::sceneUpdateFinished):

2018-06-07  Brent Fulgham  <bfulgham@apple.com>

        Remove unused debug mode conditions
        https://bugs.webkit.org/show_bug.cgi?id=186358
        <rdar://problem/39117121>

        Reviewed by Zalan Bujtas.

        Remove some unused code paths related to ResourceLoadStatistics debug mode.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies const):

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

        REGRESSION (r232520): Crash under IPC::ArgumentCoder<WebCore::Credential>::encodePlatformData
        https://bugs.webkit.org/show_bug.cgi?id=186385
        <rdar://problem/40853796>

        Reviewed by Daniel Bates.

        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<Credential>::encodePlatformData): Fixed an incorrect cast.

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

        Crash in lambda function WTF::Function<void ()>::CallableWrapper<WebKit::DisplayLink::displayLinkCallback
        https://bugs.webkit.org/show_bug.cgi?id=186370
        <rdar://problem/39791647>

        Reviewed by Brent Fulgham.

        When the display link is firing, the callback function is called on the display link thread, where a lambda function
        is created to be executed on the main thread. The WebPageProxy object is captured as a RefPtr in the lambda. This
        might crash when executing on the main thread, since the WebPageProxy object is possibly deleted then. Capturing
        the WebPageProxy will not prevent the object from being deleted if the destruction of the WebPageProxy object already
        has started on the main thread when the object is captured, which sometimes is the case. Instead, we can create a
        weak pointer to the object, which will work as intended, even if the WebPageProxy object is in the process of being
        deleted. This also matches the display link implementation used when the WebContent process has access to the
        WindowServer. This is not a frequent crash. I have not been able to reproduce it.
 
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::displayLinkCallback):

2018-06-06  Antoine Quint  <graouts@apple.com>

        Rename color-filter to -apple-color-filter and do not expose it to Web content
        https://bugs.webkit.org/show_bug.cgi?id=186306
        <rdar://problem/39874167>

        Reviewed by Simon Fraser.

        Change the ColorFilter setting to no longer be exposed as an experimental feature and ensure it's turned off by default.
        To allow internal clients to use the -apple-color-filter property, we expose a new _colorFilterEnabled property as SPI
        to WKWebViewConfigurationPrivate.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetColorFilterEnabled):
        (WKPreferencesGetColorFilterEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setAttachmentElementEnabled:]):
        (-[WKWebViewConfiguration _colorFilterEnabled]):
        (-[WKWebViewConfiguration _setColorFilterEnabled:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

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

        REGRESSION (r232301) - Unable to enter video fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=186357
        <rdar://problem/40838449>

        Reviewed by Jon Lee.

        Only set up the standby fullscreen element if we are in element fullscreen.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):

2018-06-06  Jeremy Jones  <jeremyj@apple.com>

        attenuationFactor should be in range [0,1]
        https://bugs.webkit.org/show_bug.cgi?id=186320
        rdar://problem/40821456

        Reviewed by Jer Noble.

        If attenuationFactor is outside of this range it can cause false positives.

        * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp:
        (WebKit::FullscreenTouchSecheuristic::attenuationFactor):

2018-06-06  Tim Horton  <timothy_horton@apple.com>

        Move animated resize into the layer tree transaction, and make it asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=186130
        <rdar://problem/38477288>

        Reviewed by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::setScrollPosition):
        (WebKit::RemoteLayerTreeTransaction::dynamicViewportSizeUpdateID const):
        (WebKit::RemoteLayerTreeTransaction::setDynamicViewportSizeUpdateID):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::willCommitLayerTree):
        Add scrollPosition to the transaction on all platforms, not just Mac.
        Add the optional dynamicViewportSizeUpdateID to the transaction, representing
        the most recent dynamicViewportSizeUpdate that commit contains, if any.

        * Shared/ios/DynamicViewportSizeUpdate.h:
        Added a typedef for DynamicViewportSizeUpdateID, and move the mode enum here.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::dynamicViewportUpdateChangedTarget): Deleted.
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::dynamicViewportSizeUpdate):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::synchronizeDynamicViewportUpdate): Deleted.
        (WebKit::WebPageProxy::dynamicViewportUpdateChangedTarget): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::synchronizeDynamicViewportUpdate): Deleted.
        Remove dynamicViewportUpdateChangedTarget and synchronizeDynamicViewportUpdate.
        Move dynamicViewportSizeUpdateID maintenance into WKWebView.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processDidExit]):
        Remove _resizeAnimationTransformTransactionID. We now instead pack
        the resize ID inside the transaction, instead of separately sending
        back a transaction ID to wait for.

        (-[WKWebView _didCommitLayerTreeDuringAnimatedResize:]):
        (-[WKWebView _didCommitLayerTree:]):
        Added, factored out of _didCommitLayerTree:.
        If the transaction includes the result of the most recently-sent resize,
        store the requisite adjustments required to counter the new scale and
        scroll offset, update the resizeAnimationView, and, if endAnimatedResize
        has already been called, call _didCompleteAnimatedResize to tear down
        the animation view and put things back together.

        Add some code so that if a commit arrives before the resize, we update
        the scale of the resize animation view to keep the width fitting.

        (activeMaximumUnobscuredSize):
        (activeOrientation):
        Move these because the code that depends on them moved.

        (-[WKWebView _didCompleteAnimatedResize]):
        Broken out of _endAnimatedResize. This can now be called from
        either endAnimatedResize or _didCommitLayerTreeDuringAnimatedResize,
        depending on which is called first.

        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        Don't create a new resize view if we still have one. Otherwise, we'll
        get the view ordering all wrong when making the second one. This
        didn't previously cause trouble, because we don't have a lot of
        WKScrollView subviews, but it totally could.

        Adopt _initialContentOffsetForScrollView just to make this code more clear.

        (-[WKWebView _endAnimatedResize]):
        (-[WKWebView _dynamicViewportUpdateChangedTargetToScale:position:nextValidLayerTreeTransactionID:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:


2018-06-05  Per Arne Vollan  <pvollan@apple.com>

        Move OpenGL display mask to screen data struct.
        https://bugs.webkit.org/show_bug.cgi?id=186198
        <rdar://problem/40724854>

        Reviewed by Brent Fulgham.

        Currently, the OpenGL display mask is a global in the WebContent process. This is not correct in all cases, since
        it is possible to have two Web views in the same WebContent process, displayed on different displays. This can be
        resolved by moving the OpenGL display mask to a new ScreenData struct, containing information specific to each
        display. The display ID of the host window is used to find the OpenGL display mask when needed. This patch makes
        the host window available when creating an IOSurface, in order to find the right OpenGL display mask. If no host
        window is available, the OpenGL display mask of the main display is used.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::windowScreenDidChange):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::screenPropertiesStateChanged):
        (WebKit::displayReconfigurationCallBack):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_credentialsMessenger):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::openGLDisplayMaskChanged): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::setScreenProperties):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

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

        Remove tracksResourceLoadMilestones support
        https://bugs.webkit.org/show_bug.cgi?id=186329
        <rdar://problem/40829898>

        Reviewed by Darin Adler.

        Remove the mechanism for enabling/disabling the tracking of
        resource-load milestones. This was initially added in order to enable
        the tracking only for Safari. However, the decision has been made to
        enable the tracking for all WebKit clients, so it's now enabled
        unconditionally.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::stopTrackingResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTracking):
        (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTrackingForPage):
        (WebKit::networkActivityTrackingEnabled): Deleted.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::tracksResourceLoadMilestones const): Deleted.
        * 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:
        (WKContextConfigurationTracksResourceLoadMilestones): Deleted.
        (WKContextConfigurationSetTracksResourceLoadMilestones): Deleted.
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration tracksResourceLoadMilestones]): Deleted.
        (-[_WKProcessPoolConfiguration setTracksResourceLoadMilestones:]): Deleted.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-06-05  Darin Adler  <darin@apple.com>

        [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers
        https://bugs.webkit.org/show_bug.cgi?id=186324

        Reviewed by Anders Carlsson.

        * NetworkProcess/cache/NetworkCacheData.h: Use OSObjectPtr instead of
        DispatchPtr and also use an rvalue reference in the constructor.
        * NetworkProcess/cache/NetworkCacheDataCocoa.mm:
        (WebKit::NetworkCache::Data::Data): Use adoptOSObject, rvalue reference
        and WTFMove.
        (WebKit::NetworkCache::Data::empty): Use OSObjectPtr.
        (WebKit::NetworkCache::Data::data const): Use adoptOSObject.
        (WebKit::NetworkCache::Data::subrange const): Ditto.
        (WebKit::NetworkCache::concatenate): Ditto.
        (WebKit::NetworkCache::Data::adoptMap): Ditto. Also use WTFMove.

        * NetworkProcess/cache/NetworkCacheIOChannel.h: Use OSObjectPtr.
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        (WebKit::NetworkCache::IOChannel::IOChannel): Use adoptOSObject.
        (WebKit::NetworkCache::IOChannel::read): Use OSObjectPtr.

2018-06-05  Brent Fulgham  <bfulgham@apple.com>

        Adjust compile and runtime flags to match shippable state of features
        https://bugs.webkit.org/show_bug.cgi?id=186319
        <rdar://problem/40352045>

        Reviewed by Maciej Stachowiak, Jon Lee, and others.

        Change the default state of various experimental features so that they are off by default in production
        builds, since they are still under development.

        Turn 'CacheAPIEnabled' and 'SubresourceIntegrityEnabled' on by default, since both features have been
        shipping for a full cycle and have proven to be stable in production.

        * Configurations/FeatureDefines.xcconfig: Don't build ENABLE_INPUT_TYPE_COLOR
        or ENABLE_INPUT_TYPE_COLOR_POPOVER.
        * Shared/WebPreferences.yaml: 
2018-06-05  Timothy Hatcher  <timothy@apple.com>

        Clean up LocalDefaultSystemAppearance and prefers-dark-interface media query

        https://bugs.webkit.org/show_bug.cgi?id=186323
        rdar://problem/38382252

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _defaultAppearance]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _defaultAppearance]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::useDefaultAppearance):

2018-06-05  Sihui Liu  <sihui_liu@apple.com>

        [iOS] TestWebKitAPI.WebKit.WKHTTPCookieStoreWithoutProcessPool fails because cookies aren't flushed to file
        https://bugs.webkit.org/show_bug.cgi?id=186303
        <rdar://problem/40468716>

        Reviewed by Geoffrey Garen.

        No matter there is an observer or not, cookies in UI process should always be flushed to 
        file when new process pool is created, such that cookies created via API can be synced to
        network process.

        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::HTTPCookieStore):
        (API::HTTPCookieStore::registerObserver):
        (API::HTTPCookieStore::cookieManagerDestroyed):
        (API::HTTPCookieStore::registerForNewProcessPoolNotifications):

2018-06-05  Jeremy Jones  <jeremyj@apple.com>

        secheuristic should only use touch began and ended, not changed.
        https://bugs.webkit.org/show_bug.cgi?id=186318
        rdar://problem/39781486

        Reviewed by Jer Noble.

        Filter out change events so swiping gestures don't trigger the heuristic.

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

2018-06-05  Darin Adler  <darin@apple.com>

        [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers
        https://bugs.webkit.org/show_bug.cgi?id=186314

        Reviewed by Anders Carlsson.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Use __bridge for cast.
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::overrideSystemProxies): Ditto.
        (WebKit::NetworkProcess::allowSpecificHTTPSCertificateForHost): Ditto.
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendMessage): Ditto.
        (IPC::readFromMachPort): Ditto.

        * Platform/mac/StringUtilities.mm:
        (WebKit::formattedPhoneNumberString): Use __bridge for cast and
        CFBridgingRelease instead of an explicit autorelease.

        * Shared/API/Cocoa/_WKRemoteObjectInterface.mm:
        (initializeMethods): Use auto instead of an explicit type so that we get
        the correct type for the result of protocol_copyProtocolList.

        * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:
        (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): Added a
        bridging cast to void* because that's needed to call _Block_signature
        under ARC and harmless outside ARC.

        * Shared/API/c/cf/WKStringCF.mm:
        (WKStringCreateWithCFString): Use __bridge for cast.
        * Shared/API/c/cf/WKURLCF.mm:
        (WKURLCreateWithCFURL): Ditto.
        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection): Ditto.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Ditto.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WKNSError.mm:
        (-[WKNSError _web_createTarget]): Ditto.
        * Shared/Cocoa/WKNSURLExtras.mm:
        (-[NSURL _web_originalDataAsWTFString]): Ditto.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer): Removed balanced calls to both
        adoptOSObject and xpc_retain and instead rely on the assignment
        operator just added to OSObjectPtr.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceEventHandler): Use __bridge for cast.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): Ditto.
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::decode): Ditto.
        * Shared/mac/ArgumentCodersMac.mm:
        (IPC::isSerializableValue): Ditto.
        (IPC::encode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::encodeNSError): Ditto. Also use CFSTR("")" instead of @""
        when we need a CFString.
        (IPC::decodeNSError): Ditto.
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
        (IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextIsPlugInUpdateAvailable): Ditto.
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (-[WKBrowsingContextController certificateChain]): Ditto.
        (didStartProvisionalLoadForFrame): Ditto.
        (didReceiveServerRedirectForProvisionalLoadForFrame): Ditto.
        (didFailProvisionalLoadWithErrorForFrame): Ditto.
        (didCommitLoadForFrame): Ditto.
        (didFinishLoadForFrame): Ditto.
        (didFailLoadWithErrorForFrame): Ditto.
        (canAuthenticateAgainstProtectionSpaceInFrame): Ditto.
        (didReceiveAuthenticationChallengeInFrame): Ditto.
        (didStartProgress): Ditto.
        (didChangeProgress): Ditto.
        (didFinishProgress): Ditto.
        (didChangeBackForwardList): Ditto.
        (processDidCrash): Ditto.
        (setUpPageLoaderClient): Ditto.
        (setUpPagePolicyClient): Ditto.
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        (createWKArray): Ditto.
        (-[WKBrowsingContextGroup addUserStyleSheet:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:mainFrameOnly:]): Ditto.
        (-[WKBrowsingContextGroup addUserScript:baseURL:whitelistedURLPatterns:blacklistedURLPatterns:injectionTime:mainFrameOnly:]): Ditto.
        * UIProcess/API/Cocoa/WKConnection.mm:
        (didReceiveMessage): Ditto.
        (didClose): Ditto.
        (setUpClient): Ditto.
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didCreateConnection): Ditto.
        (getInjectedBundleInitializationUserData): Ditto.
        (setUpInjectedBundleClient): Ditto.
        (-[WKProcessGroup _setAllowsSpecificHTTPSCertificate:forHost:]): Ditto.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setAllowsSpecificHTTPSCertificate:forHost:]): Ditto.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setProxyConfiguration:]): Ditto.
        (-[WKWebsiteDataStore _proxyConfiguration]): Ditto.
        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        (-[_WKThumbnailView _didTakeSnapshot:]): Ditto.

        * UIProcess/API/Cocoa/_WKUserContentFilter.mm: Added a missing include.

        * UIProcess/Authentication/mac/WebCredentialMac.mm:
        (WebKit::chain): Use __bridge for cast.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
        Use CFBridgingRelease instead of adoptNS.
        (WebKit::privateBrowsingSession): Use __bridge for cast.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::provideDataForPasteboard): Use __bridge for cast.
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::pluginPathsInDirectory): Ditto.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::recursivelyMapIOSurfaceBackingStore): Ditto.
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::beginSwipeGesture): Ditto.
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController enterFullScreen:]): Ditto.
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu): Ditto.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
        (didCreatePage): Ditto.
        (willDestroyPage): Ditto.
        (setUpBundleClient): Ditto.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didStartProvisionalLoadForFrame): Ditto.
        (didReceiveServerRedirectForProvisionalLoadForFrame): Ditto.
        (didFinishLoadForFrame): Ditto.
        (globalObjectIsAvailableForFrame): Ditto.
        (didRemoveFrameFromHierarchy): Ditto.
        (didCommitLoadForFrame): Ditto.
        (didFinishDocumentLoadForFrame): Ditto.
        (didFailProvisionalLoadWithErrorForFrame): Ditto.
        (didFailLoadWithErrorForFrame): Ditto.
        (didSameDocumentNavigationForFrame): Ditto.
        (didLayoutForFrame): Ditto.
        (didReachLayoutMilestone): Ditto.
        (didFirstVisuallyNonEmptyLayoutForFrame): Ditto.
        (didHandleOnloadEventsForFrame): Ditto.
        (userAgentForURL): Ditto.
        (setUpPageLoaderClient): Ditto.
        (willSendRequestForFrame): Ditto.
        (didInitiateLoadForResource): Ditto.
        (didFinishLoadForResource): Ditto.
        (didFailLoadForResource): Ditto.
        (setUpResourceLoadClient): Ditto.
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Ditto.
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::NetscapePlugin::popUpContextMenu): Ditto.

        * WebProcess/Plugins/PDF/PDFPlugin.h: Put functions that return NSData inside
        an #ifdef __OBJC__ and use __bridge for cast.

        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage): Use __bridge for cast.

        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::contents const): Added a bridging cast.
        (WebKit::PlatformCALayerRemoteCustom::setContents): Use __bridge for cast.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom): Ditto.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::setTopOverhangImage): Ditto.
        (WebKit::WebPage::setBottomOverhangImage): Ditto.

2018-06-05  Youenn Fablet  <youenn@apple.com>

        ServiceWorker registration should store any script fetched through importScripts
        https://bugs.webkit.org/show_bug.cgi?id=182444
        <rdar://problem/37164835>

        Reviewed by Chris Dumez.

        Add C API to kill storage process.
        In case a Storage Process is closed or crashed, ensure that all its related service worker processes also exit.

        * StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextTerminateStorageProcess):
        * UIProcess/API/C/WKContextPrivate.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::setScriptResource):
        * WebProcess/Storage/WebSWContextManagerConnection.h:

2018-06-05  Brent Fulgham  <bfulgham@apple.com>

        Revise DEFAULT_EXPERIMENTAL_FEATURES_ENABLED to work properly on Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=186286
        <rdar://problem/40782992>

        Reviewed by Dan Bernstein.

        Use the WK_RELOCATABLE_FRAMEWORKS flag (which is always defined for non-production builds)
        to define ENABLE(EXPERIMENTAL_FEATURES) so that we do not need to manually
        change this flag when preparing for a production release.

        * Configurations/FeatureDefines.xcconfig: Use WK_RELOCATABLE_FRAMEWORKS to determine whether
        experimental features should be enabled, and use it to properly define the feature flag.
        * Shared/WebPreferencesDefaultValues.h:

2018-06-04  Chris Dumez  <cdumez@apple.com>

        Rename "Cross-Origin-Options" HTTP header to "Cross-Origin-Window-Policy"
        https://bugs.webkit.org/show_bug.cgi?id=186287
        <rdar://problem/40783352>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::frameBecameRemote):

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

        Restored code signing behavior when WK_USE_RESTRICTED_ENTITLEMENTS isn’t set.

        * Configurations/DebugRelease.xcconfig: Use ad-hoc code signing when
          WK_USE_RESTRICTED_ENTITLEMENTS isn’t set.

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

        Removed a reference to a file that was deleted in r231190.

        * WebKit.xcodeproj/project.pbxproj: Removed the reference to WebProcessShim.xcconfig.

2018-06-04  Chris Dumez  <cdumez@apple.com>

        Update Fetch code to provide more useful exception messages
        https://bugs.webkit.org/show_bug.cgi?id=186156

        Reviewed by Youenn Fablet.

        Provide more useful error messages in our Loading / Fetch code.

        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::didFailFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFailFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didFail):
        (WebKit::ServiceWorkerClientFetch::continueLoadingAfterCheckingResponse):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

2018-06-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit on watchOS] Remove all uses of the EXTRA_ZOOM_MODE compiler flag
        https://bugs.webkit.org/show_bug.cgi?id=186279

        Reviewed by Tim Horton.

        Replaces uses of ENABLE(EXTRA_ZOOM_MODE) with PLATFORM(WATCHOS).

        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        * UIProcess/WebProcessProxy.cpp:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _willStartScrollingOrZooming]):
        (-[WKContentView _didEndScrollingOrZooming]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView reloadContextViewForPresentedListViewController]):
        (-[WKContentView _wheelChangedWithEvent:]):
        (-[WKContentView _simulateTextEntered:]):
        (-[WKContentView selectFormAccessoryPickerRow:]):
        (-[WKContentView formInputLabel]):
        (-[WKContentView setTimePickerValueToHour:minute:]):
        * UIProcess/ios/WKScrollView.mm:
        (-[WKScrollView initWithFrame:]):
        (-[WKScrollView addGestureRecognizer:]):
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel platformSupportsPickerViewController]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformPrefersTextLegibilityBasedZoomScaling const):

2018-06-04  Jeremy Jones  <jeremyj@apple.com>

        Disable keyboard in fullscreen ios.
        https://bugs.webkit.org/show_bug.cgi?id=186058

        Reviewed by Jer Noble.

        Disallow keyboard in ios fullscreen. This will still allow select keys useful for playback.

        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::supportsFullScreen):

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

        NetworkCORSPreflightChecker should set the preflight request User-Agent header
        https://bugs.webkit.org/show_bug.cgi?id=186254
        <rdar://problem/40293504>

        Reviewed by Chris Dumez.

        Some servers misbehave if the User-Agent header is not set properly on preflight requests.
        Set it to the same value as the request triggering the preflight.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):

2018-06-03  Andy Estes  <aestes@apple.com>

        [Wi-Fi Assertions] Resume assertions when NetworkProcess::cancelPrepareToSuspend is called
        https://bugs.webkit.org/show_bug.cgi?id=186247

        Reviewed by Tim Horton.

        Since we suspended assertions in prepareToSuspend, we need to resume them if
        cancelPrepareToSuspend is called.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::cancelPrepareToSuspend):

2018-06-03  Andy Estes  <aestes@apple.com>

        [iOS] Add a needed networking process entitlement
        https://bugs.webkit.org/show_bug.cgi?id=186246
        <rdar://problem/39578861>

        Reviewed by Brent Fulgham.

        Also sorted the existing entitlements.

        * Configurations/Network-iOS.entitlements:

2018-06-03  Brent Fulgham  <bfulgham@apple.com>

        Make sure that the fencePort received over IPC has the expected disposition (SEND)
        https://bugs.webkit.org/show_bug.cgi?id=186211
        <rdar://problem/37814171>

        Reviewed by Geoffrey Garen.

        It is possible (though very unlikely) for a message to be recevied that has the wrong mach port disposition.
        If this happens, we shouldn't manipulate the passed mach_port_t or pass it on to other API. We already
        drop messages that violate this expectation in the IPC layer, but code handling IPC::Attachment data types
        are not checking this value.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setTopContentInsetFenced):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::setVideoLayerFrameFenced):

2018-06-02  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r232275.

        May have caused a ~1% PLT regression on iOS

        Reverted changeset:

        "Store 0-lifetime stylesheets / scripts into the disk cache
        for faster history navigations"
        https://bugs.webkit.org/show_bug.cgi?id=186060
        https://trac.webkit.org/changeset/232275

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

        Make WKWebView firstResponder after entering or exiting fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=186088
        rdar://problem/40387859

        Reviewed by Jer Noble.

        Update first responder when WKWebView moves to a new window, otherwise there won't be a first responder.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):

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

        Exit fullscreen when javascript alerts are presented.
        https://bugs.webkit.org/show_bug.cgi?id=185619
        rdar://problem/35724264

        Reviewed by Jer Noble.

        Prevent users from being trapped in fullscreen by alert cycles.
        Prevent fullscreen from becoming unresponsive due to alerts hidden behind fullscreen.

        Fullscreen exit is initiated here in the UI process so that fullscreen UI is torn down immediately,
        before the alert is shown.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::exitFullscreenImmediately):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        * UIProcess/WebPageProxy.h:

2018-06-02  Youenn Fablet  <youenn@apple.com>

        Add a sandbox profile for com.cisco.webex.plugin.gpc64 plugin
        https://bugs.webkit.org/show_bug.cgi?id=186110

        Reviewed by Brent Fulgham.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: Webex needs to create some symlinks.
        * Resources/PlugInSandboxProfiles/com.cisco.webex.plugin.gpc64.sb: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-06-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] The user should always be able to double tap to zoom to a scale of at least 1
        https://bugs.webkit.org/show_bug.cgi?id=186209
        <rdar://problem/40529255>

        Reviewed by Tim Horton.

        Tweaks the way double-tap-to-zoom scales are determined in extra zoom mode. Rather than zooming to make the 50th
        and 90th percentiles of text in the document legible, only consider the 90th percentile of text size when
        determining zoom scale, and fix the other potential zoom scale at 1; additionally, if the zoom scales are close
        (within 0.3 of each other), snap the lower zoom scale to the higher value.

        This results in the following changes in behavior:
        -   Enables double tap to zoom in cases where all the text in the page is already legible.
        -   On pages with mobile viewports, usually allows the user to toggle between initial scale and a scale of 1.
        -   If a significant portion of text is unusually small, the zoomed-in scale may exceed 1.

        Test: fast/events/extrazoom/double-tap-to-zoom-with-large-text.html

        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales):

2018-06-01  Jeremy Jones  <jeremyj@apple.com>

        Keyboard focus should exit fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=185617
        rdar://problem/34697938

        Reviewed by Ryosuke Niwa.

        While in element fullscreen, initiating keyboard focus should exit fullscreen in iOS.

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

2018-06-01  Chris Dumez  <cdumez@apple.com>

        Regression(r230567): Unable to log into twitter.com in private sessions
        https://bugs.webkit.org/show_bug.cgi?id=186205
        <rdar://problem/40670799>

        Reviewed by Youenn Fablet.

        We were using the same SWServer for all private sessions and the SWServer's sessionID would
        be legacyPrivateSessionID(). As a result, the service worker's sessionID would be legacyPrivateSessionID()
        as well and would not match the sessionID of its client pages. This sessionID mismatch was 
        causing the breakage.

        Instead of using the same SWServer of all private sessions, we now go back to using a SWServer
        per private session. However, we now make sure that the SWServer gets destroyed whenever its
        corresponding session gets destroyed.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::destroySession):
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::destroySession):
        (WebKit::StorageProcess::swServerForSession):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::~WebsiteDataStore):

        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::weakPtrFactory const):
        Fix memory leak caused by a reference cycle between the WebsiteDataStore and its
        WebResourceLoadStatisticsStore, by using WeakPtr to break the cycle. This was causing
        us to leak WebsiteDataStore objects, which would prevent the destruction of sessions.


2018-06-01  Youenn Fablet  <youenn@apple.com>

        Add an option to restrict communication to localhost sockets
        https://bugs.webkit.org/show_bug.cgi?id=186208

        Reviewed by Eric Carlson.

        Implement restriction to localhost sockets by setting any IP address to 127.0.0.1.
        This is done on WebProcess side just before requesting to open the socket by NetworkProcess.

        * WebProcess/Network/webrtc/LibWebRTCNetwork.h:
        (WebKit::LibWebRTCNetwork::disableNonLocalhostConnections):
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCProvider::disableNonLocalhostConnections):
        (WebKit::LibWebRTCProvider::registerMDNSName):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:
        (WebKit::prepareSocketAddress):
        (WebKit::LibWebRTCSocketFactory::CreateServerTcpSocket):
        (WebKit::LibWebRTCSocketFactory::CreateUdpSocket):
        (WebKit::LibWebRTCSocketFactory::CreateClientTcpSocket):
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:

2018-06-01  Chris Dumez  <cdumez@apple.com>

        Regression(r230876): Swipe navigation snapshot may get removed too early
        https://bugs.webkit.org/show_bug.cgi?id=186168
        <rdar://problem/39743617>

        Reviewed by Tim Horton.

        The swipe navigation snapshot would get removed too early when receiving a paint
        event after requesting a history navigation but before the provisional load has
        actually started. This is because of the asynchronous navigation policy decision
        which occurs after requesting to navigate. To address the issue, we now start
        listening for events only after the provisional load has started.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didStartProvisionalLoadForMainFrame]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame):
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):

2018-06-01  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, build fix for r232276.

        iOS sandbox profiles don't preprocess macros. Therefore, remove the whole
        macro condition block.

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

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

        Stop using StorageTracker.db in LocalStorageDatabaseTracker
        https://bugs.webkit.org/show_bug.cgi?id=186104

        Reviewed by Geoffrey Garen.

        Stop using StorageTracker.db and stop caching origins in LocalStorageDatabaseTracker for efficiency 
        and simplicity. Since functions in LocalStorageDatabaseTracker are not frequently called, we get 
        little benefits from caching origins.

        * Platform/Logging.h:
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
        (WebKit::LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin):
        (WebKit::LocalStorageDatabaseTracker::deleteDatabaseWithOrigin):
        (WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
        (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
        (WebKit::LocalStorageDatabaseTracker::origins const):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        (WebKit::LocalStorageDatabaseTracker::databasePath const):
        (WebKit::fileCreationTime): Deleted.
        (WebKit::fileModificationTime): Deleted.
        (WebKit::LocalStorageDatabaseTracker::trackerDatabasePath const): Deleted.
        (WebKit::LocalStorageDatabaseTracker::openTrackerDatabase): Deleted.
        (WebKit::LocalStorageDatabaseTracker::importOriginIdentifiers): Deleted.
        (WebKit::LocalStorageDatabaseTracker::updateTrackerDatabaseFromLocalStorageDatabaseFiles): Deleted.
        (WebKit::LocalStorageDatabaseTracker::addDatabaseWithOriginIdentifier): Deleted.
        (WebKit::LocalStorageDatabaseTracker::removeDatabaseWithOriginIdentifier): Deleted.
        (WebKit::LocalStorageDatabaseTracker::pathForDatabaseWithOriginIdentifier): Deleted.
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/WebStorage/StorageManager.h:

2018-06-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Crash in WebKitFaviconDatabase when pageURL is unset
        https://bugs.webkit.org/show_bug.cgi?id=186164

        Reviewed by Carlos Garcia Campos.

        PageURL can legitimately be null here if JavaScript does something silly with window.open.

        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        (webkitFaviconDatabaseSetIconURLForPageURL):
        (webkitFaviconDatabaseSetIconForPageURL):

2018-05-31  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: use the session delegate to perform window maximize
        https://bugs.webkit.org/show_bug.cgi?id=186167
        <rdar://problem/40544391>

        Reviewed by Timothy Hatcher.

        Add plumbing to hand off window maximizing to the session delegate.

        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/Cocoa/AutomationSessionClient.h:
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::AutomationSessionClient):
        (WebKit::AutomationSessionClient::requestMaximizeWindowOfPage):

2018-06-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Try to fix GTK+ build with old versions of GTK+ after r232390.

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

2018-06-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Switch to use a popup window with a tree view instead of a menu for option menu default implementation
        https://bugs.webkit.org/show_bug.cgi?id=186146

        Reviewed by Michael Catanzaro.

        It's more convenient to use than the menu.

        * UIProcess/API/gtk/WebKitPopupMenu.cpp:
        (WebKit::menuCloseCallback):
        (WebKit::WebKitPopupMenu::activateItem):
        * UIProcess/API/gtk/WebKitPopupMenu.h:
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk):
        (WebKit::WebPopupMenuProxyGtk::selectItem):
        (WebKit::WebPopupMenuProxyGtk::activateItem):
        (WebKit::WebPopupMenuProxyGtk::activateItemAtPath):
        (WebKit::WebPopupMenuProxyGtk::treeViewRowActivatedCallback):
        (WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback):
        (WebKit::WebPopupMenuProxyGtk::buttonPressEventCallback):
        (WebKit::WebPopupMenuProxyGtk::keyPressEventCallback):
        (WebKit::WebPopupMenuProxyGtk::createPopupMenu):
        (WebKit::WebPopupMenuProxyGtk::show):
        (WebKit::WebPopupMenuProxyGtk::showPopupMenu):
        (WebKit::WebPopupMenuProxyGtk::hidePopupMenu):
        (WebKit::WebPopupMenuProxyGtk::cancelTracking):
        (WebKit::WebPopupMenuProxyGtk::typeAheadFindIndex):
        (WebKit::WebPopupMenuProxyGtk::typeAheadFind):
        * UIProcess/gtk/WebPopupMenuProxyGtk.h:

2018-05-31  Per Arne Vollan  <pvollan@apple.com>

        Add OpenGL display mask to WebPage creation parameters.
        https://bugs.webkit.org/show_bug.cgi?id=186163
        <rdar://problem/40634504>

        Reviewed by Brent Fulgham.

        To make sure the OpenGL display mask is always available, include it in the WebPage creation parameters.
        The OpenGL display mask is sent to the WebProcess when the platform display ID changes, but that is not
        early enough in all cases. If the OpenGL display mask is not set, only OpenGL software rendering is offered
        on some hardware configurations.

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

2018-05-31  Brent Fulgham  <bfulgham@apple.com>

        Add a rule to allow reading files with prefix /private/var/db/CVMS/cvmsCodeSignObj
        https://bugs.webkit.org/show_bug.cgi?id=186157
        <rdar://problem/40666437>

        Reviewed by Eric Carlson.

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

2018-05-31  Megan Gardner  <megan_gardner@apple.com>

        Add setting to allow override screen size to be disabled.
        https://bugs.webkit.org/show_bug.cgi?id=186109

        Reviewed by Andy Estes.

        Pipe the needed settings through to WebCore.

        * Shared/WebPreferences.yaml:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_configurationPreferenceValues):

2018-05-31  Brent Fulgham  <bfulgham@apple.com>

        [macOS] Add JIT entitlements to WebContent process and plugin process on macOS
        https://bugs.webkit.org/show_bug.cgi?id=184485
        <rdar://problem/37556535>

        Reviewed by Dan Bernstein.

        This patch builds on the changes from Bug 185526 to add support for a JIT entitlement. It makes the
        following changes:

        1. Adds a new 'WebContent-OSX.entitlements file that unconditionally adds the JIT entitlement for all builds.
        2. Modifies the PluginService.entitlements to unconditionally add the JIT entitlement.

        * Configurations/PluginService.entitlements: Updated to add the JIT entitlement.
        * Configurations/WebContent-OSX.entitlements: Updated to add the JIT entitlement.
        * Configurations/WebContentService.xcconfig: Updated to use the new 'WebContent-OSX.entitlements' file.
        * WebKit.xcodeproj/project.pbxproj:

2018-05-31  Brent Fulgham  <bfulgham@apple.com>

        Don't attempt to extend sandbox when running tests with mock media devices
        https://bugs.webkit.org/show_bug.cgi?id=186150
        <rdar://problem/40690875>

        Reviewed by Alexey Proskuryakov.

        Avoid attempting to issue a sandbox extension to actual media devices when
        running with Mock capture devices.

        Also handle the 'denyNextRequest' test state outside of the USE(APPLE_INTERNAL_SDK)
        guards, since it is needed for Open Source builds as well.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream):

2018-05-31  Antti Koivisto  <antti@apple.com>

        WebKit memory management: Safari jetsams on some websites when zooming and scrolling
        https://bugs.webkit.org/show_bug.cgi?id=186091
        <rdar://problem/36315010>

        Reviewed by Geoff Garen.

        When zooming a page rapidly the visible rect and the page zoom level may get momentarily out of sync.
        When this happens we may generate tiles for a much larger area than needed and run out of memory
        building the next layer tree transaction. Running out of memory is more likely if the page has lots of
        tiled layers in addition to the main content layer.

        We already have code for dealing with the scale mismatch for zoom-out case (where this would cause
        visibly missing tiles). This patch enables the same exact adjustment for zoom-in case (where the
        symptom is creating too many tiles).

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

        Do some renames to make it clear that this can both expand and contract the visible rect.
        Bail out if there is nothing to do.

        (WebKit::WebPage::updateVisibleContentRects):

        Call adjustExposedRectForNewScale directly and unconditionally.

        (WebKit::adjustExposedRectForBoundedScale): Deleted.

2018-05-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Pass VM& parameter as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=186085

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/NPJSObject.cpp:
        (WebKit::NPJSObject::hasMethod):
        (WebKit::NPJSObject::construct):
        (WebKit::NPJSObject::invoke):

2018-05-30  Brent Fulgham  <bfulgham@apple.com>

        [macOS] WebProcess needs TCC entitlements for media capture (Take 2)
        https://bugs.webkit.org/show_bug.cgi?id=185526
        <rdar://problem/36674649>

        Reviewed by Alexey Proskuryakov.

        In Bug 181995 I added TCC entitlements for media capture to the macOS entitlements used for
        relocatable builds. These changes also need to apply to system builds of WebKit.

        Previously we had not needed an entitlements file for system builds of WebKit, so only provided
        an entitlements file for our relocatable build targets. Now we need entitlements when building
        on recent macOS targets using internal SDKs.

        Since these various scenarios are beginning to multiple, this patch dynamically generates the
        entitlements file.

        This patch does the following:

        1. Changes the "WebContent-OSX.entitlements" to hold the TCC entitlements needed for media capture, and rename
           to "WebContent-OSX-restricted.entitlements".
        2. Removes the unneeded "com.apple.private.xpc.domain-extension" from WebContent-OSX.entitlement, and dynamically
           adds it using a new build step using the script 'process-webcontent-entitlements.sh'
        3. Updates DebugRelease.xcconfig to use the 'Safari Engineering' signing key for internal builds.
        4. Updates WebContentService.xcconfig to remove the CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_YES target
           since we no longer need a custom entitlement file for this case.
        5. Updates WebContentService.Development.xcconfig to remove CODE_SIGN_ENTITLEMENTS_COCOA_TOUCH_NO since it is no
           longer needed.
        6. Deletes the file Configurations/WebContent.Development.entitlements since it is no longer needed.
        7. Revises the WebContent process sandbox to allow camera and microphone access without needing TCC
           entitlements, since those cannot be applied without an internal SDK.
        8. Revises the UserMediaProcessManager to not pass dynamic sandbox extensions to the WebContent process
           when building with the public SDK since those entitlements cannot be added or consumed in Open
           Source builds.

        We want to use the TCC entitlements when building with the internal SDK on recent macOS builds.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/WebContent-OSX-restricted.entitlements: Renamed from Source/WebKit/Configurations/WebContent-OSX.entitlements.
        * Configurations/WebContent.Development.entitlements: Removed.
        * Configurations/WebContentService.Development.xcconfig:
        * Configurations/WebContentService.xcconfig:
        * Scripts/process-webcontent-entitlements.sh: Added.
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream): Don't bother creating and sending sandbox extensions for
        camera and microphone control for builds that cannot support them.
        * WebKit.xcodeproj/project.pbxproj:

2018-05-30  Daniel Bates  <dabates@apple.com>

        NavigationAction does not need to hold initiating DOM Event
        https://bugs.webkit.org/show_bug.cgi?id=185958
        <rdar://problem/40531539>

        Reviewed by Simon Fraser.

        Write in terms of NavigationAction::{keyStateEventData, mouseEventDataForFirstMouseEvent}().

        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
        (WebKit::mouseButtonForMouseEventData):
        (WebKit::syntheticClickTypeForMouseEventData):
        (WebKit::clickLocationInRootViewCoordinatesForMouseEventData):
        (WebKit::InjectedBundleNavigationAction::modifiersForNavigationAction):
        (WebKit::InjectedBundleNavigationAction::mouseButtonForNavigationAction):
        (WebKit::InjectedBundleNavigationAction::syntheticClickTypeForNavigationAction):
        (WebKit::InjectedBundleNavigationAction::clickLocationInRootViewCoordinatesForNavigationAction):
        (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
        (WebKit::mouseEventForNavigationAction): Deleted.
        (WebKit::mouseButtonForMouseEvent): Deleted.
        (WebKit::syntheticClickTypeForMouseEvent): Deleted.
        (WebKit::clickLocationInRootViewCoordinatesForMouseEvent): Deleted.

2018-05-30  Andy Estes  <aestes@apple.com>

        [Cocoa] Add an SPI to suppress connection termination errors from CFNetwork when network interfaces change
        https://bugs.webkit.org/show_bug.cgi?id=186107
        <rdar://problem/39338957>

        Reviewed by Brady Eidson.

        Added an SPI which configures a process pool's networking process to set the
        kCFStreamPropertyAutoErrorOnSystemChange to NO on its NSURLSessionConfigurations.
        This instructs CFNetwork to not terminate active connections when the system's
        network interfaces change.

        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration suppressesConnectionTerminationOnSystemChange]):
        (-[_WKProcessPoolConfiguration setSuppressesConnectionTerminationOnSystemChange:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2018-05-30  Youenn Fablet  <youenn@apple.com>

        Rename FromOrigin runtime flag to CrossOriginResourcePolicy and enable it by default
        https://bugs.webkit.org/show_bug.cgi?id=186082

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetCrossOriginResourcePolicyEnabled):
        (WKPreferencesGetCrossOriginResourcePolicyEnabled):
        (WKPreferencesSetFromOriginResponseHeaderEnabled): Deleted.
        (WKPreferencesGetFromOriginResponseHeaderEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRef.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

2018-05-30  Youenn Fablet  <youenn@apple.com>

        Rename CrossOriginResourcePolicy same to same-origin
        https://bugs.webkit.org/show_bug.cgi?id=186080

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::shouldCrossOriginResourcePolicyPolicyCancelLoad):

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

        [iOS] -[WKFullScreenViewController viewWillAppear:] should call [super viewWillAppeear:]
        <https://webkit.org/b/186103>
        <rdar://problem/40655695>

        Reviewed by Eric Carlson.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        Drive-by clean up.  For consistency, we always use the same
        variable in the body of the `if` statement that was used in the
        condition.
        (-[WKFullScreenViewController viewWillAppear:]): Call
        [super viewWillAppeear:] to fulfill API contract.

2018-05-30  Chris Dumez  <cdumez@apple.com>

        Take a background process assertion in WebPageProxy::callAfterNextPresentationUpdate()
        https://bugs.webkit.org/show_bug.cgi?id=186097
        <rdar://problem/40651225>

        Reviewed by Dan Bernstein.

        Refactor fix landed in r232298 so that we rely on the existing Callback infrastructure
        to take a background process assertion.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::callAfterNextPresentationUpdate):

2018-05-30  Aditya Keerthi  <akeerthi@apple.com>

        Fix the ENABLE(DATALIST_ELEMENT) build
        https://bugs.webkit.org/show_bug.cgi?id=186105

        Reviewed by Wenson Hsieh.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:

2018-05-30  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a quick build fix for r232276.

        Enabled SecItemShim again as it turns out to be useful for CFNetwork APIs that
        query Keychains underneath us.

        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):

2018-05-30  Jer Noble  <jer.noble@apple.com>

        Auto-pip should use main content heuristic.
        https://bugs.webkit.org/show_bug.cgi?id=186065
        <rdar://problem/35862502>

        Reviewed by Eric Carlson.

        Make the m_pipStandbyElement clearable, which will allow the auto-pip mechanism to be torn down. Add
        a WebProcess-side notification when the main content changes, to facilitate this.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):
        (WebKit::WebFullScreenManager::setPIPStandbyElement):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        * WebProcess/FullScreen/WebFullScreenManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::videoControlsManagerDidChange):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionManager::setUpPlaybackControlsManager):
        (WebKit::PlaybackSessionManager::clearPlaybackControlsManager):
        (WebKit::PlaybackSessionManager::currentPlaybackControlsElement const):

2018-05-30  Jer Noble  <jer.noble@apple.com>

        Fix a few issues in WKFullScreenViewController
        https://bugs.webkit.org/show_bug.cgi?id=186067
        <rdar://problem/40630944>

        Reviewed by Darin Adler.

        The check in setInterface() is checking the wrong pointer:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):

        The check in -_effectiveFullscreenInsetTop is backwards:
        (-[WKFullScreenViewController _effectiveFullscreenInsetTop]):

2018-05-30  Chris Dumez  <cdumez@apple.com>

        Take a background process assertion in WebPageProxy::callAfterNextPresentationUpdate()
        https://bugs.webkit.org/show_bug.cgi?id=186097
        <rdar://problem/40651225>

        Reviewed by Tim Horton.

        Take a background process assertion in WebPageProxy::callAfterNextPresentationUpdate(). Otherwise,
        apps may get stuck on _doAfterNextPresentationUpdate because the WebProcess got suspended.

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

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

        Fix the build
        https://bugs.webkit.org/show_bug.cgi?id=186078

        Unreviewed build fix.

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

2018-05-29  Andy Estes  <aestes@apple.com>

        [Wi-Fi Assertions] Track whether WiFiAssertionHolder should actually hold a Wi-Fi assertion
        https://bugs.webkit.org/show_bug.cgi?id=185983
        <rdar://problem/40205486>

        Reviewed by Tim Horton.

        * Configurations/Network-iOS.entitlements:

        Added a needed entitlement.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/WiFiAssertionHolder.h:
        (WebKit::WiFiAssertionHolder::shouldHoldWiFiAssertion const):

        Track whether WiFiAssertionHolder should actually hold a Wi-Fi assertion.

        * NetworkProcess/cocoa/WiFiAssertionHolder.mm: Renamed from Source/WebKit/NetworkProcess/cocoa/WiFiAssertionHolder.cpp.
        (holdWiFiAssertion):
        (releaseWiFiAssertion):
        (WebKit::WiFiAssertionHolder::WiFiAssertionHolder):
        (WebKit::WiFiAssertionHolder::~WiFiAssertionHolder):

        Changed holdWiFiAssertion() and releaseWiFiAssertion() to take the
        WiFiAssertionHolder as an argument.

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

        Added a needed sandbox extension.

        * WebKit.xcodeproj/project.pbxproj:

2018-05-29  Youenn Fablet  <youenn@apple.com>

        Add a consistency check between URL and CFURL
        https://bugs.webkit.org/show_bug.cgi?id=186057
        <rdar://problem/40258457>

        Reviewed by Geoff Garen.

        * Shared/Cocoa/WKNSURLExtras.mm:
        (+[NSURL _web_URLWithWTFString:relativeToURL:]):
        (urlWithWTFString): Deleted.
        (+[NSURL _web_URLWithWTFString:]): Deleted.

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

        Remove unused WebPage::dummy
        https://bugs.webkit.org/show_bug.cgi?id=186068

        Reviewed by Sam Weinig.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::dummy): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-05-29  Per Arne Vollan  <pvollan@apple.com>

        Create typedef for HashMap<PlatformDisplayID, ScreenProperties>
        https://bugs.webkit.org/show_bug.cgi?id=186056

        Reviewed by Brent Fulgham.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:

2018-05-25  Jiewen Tan  <jiewen_tan@apple.com>

        Tighten sandbox profiles for Networking Processes to restrict accesses to macOS/iOS Keychains
        https://bugs.webkit.org/show_bug.cgi?id=162948
        <rdar://problem/40558894>

        Reviewed by Brent Fulgham.

        The patch conditionally tighten sandbox profiles for Networking Processes to remove Keychain related
        permissions and some security permisssions that are not needed. Also it conditionally remove the
        Process Privilege for Networking Processes to access Credentials.

        In addition, it remove process privilege assertions for SecItemShim as it is supposed to work in processes
        that don't have privileges to access Keychains and delegate all operations to UI Process via IPC. Also,
        the patch disables SecItemShim for Networking Process conditionally.

        * Configurations/Network-iOS.entitlements:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        * Shared/mac/SecItemShim.cpp:
        (WebKit::sendSecItemRequest):
        (WebKit::webSecItemCopyMatching):
        (WebKit::webSecItemAdd):
        (WebKit::webSecItemUpdate):
        (WebKit::webSecItemDelete):
        (WebKit::initializeSecItemShim):

2018-05-29  Chris Dumez  <cdumez@apple.com>

        Store 0-lifetime stylesheets / scripts into the disk cache for faster history navigations
        https://bugs.webkit.org/show_bug.cgi?id=186060
        <rdar://problem/40627270>

        Reviewed by Geoffrey Garen.

        Tweak our storeUnconditionallyForHistoryNavigation logic to match resources whose priority
        is High, not just VeryHigh. Per logic in CachedResource::defaultPriorityForResourceType(Type),
        This now matches stylesheets and scripts in addition to main resources.

        I found that in case of a history navigation to apple.com, a significant number of scripts
        and stylesheets had to be loaded from the network because our previous heuristic decided
        not to store them (because their priority was not VeryHigh and because their max-age was
        0).

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeStoreDecision):

2018-05-28  Jeff Miller  <jeffm@apple.com>

        Expose additional WKMenuItemIdentifier strings
        https://bugs.webkit.org/show_bug.cgi?id=186041

        Reviewed by Dan Bernstein.

        Expose identifiers for media-related menu items.

        * UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:
        Define new identifiers.

        * UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
        Declare new identifiers.

        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::menuItemIdentifier):
        Map to new identifiers.

2018-05-29  Geoffrey Garen  <ggaren@apple.com>

        Removed some unused WebSQL trackers
        https://bugs.webkit.org/show_bug.cgi?id=186026

        Reviewed by Dan Bernstein.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::m_nonVisibleProcessCleanupTimer):
        (WebKit::m_webSQLiteDatabaseTracker): Deleted.
        * WebProcess/WebProcess.h:

2018-05-29  Per Arne Vollan  <pvollan@apple.com>

        Follow-up fixes after r228907.
        https://bugs.webkit.org/show_bug.cgi?id=183338

        Reviewed by Brent Fulgham.

        Add screen properties to the WebProcess creation parameters, instead of sending
        them in a message to the WebProcess just after starting it up.

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

2018-05-29  Sihui Liu  <sihui_liu@apple.com>

        Unable to remove IndexedDB Databases with Cocoa API removeDataOfTypes
        https://bugs.webkit.org/show_bug.cgi?id=185835
        <rdar://problem/39142257>

        Reviewed by Chris Dumez.

        Fix a wrong if condition: databases should be closed and deleted if websiteDataTypes contains 
        WebsiteDataType::IndexedDBDatabases.

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

2018-05-28  Sam Weinig  <sam@webkit.org>

        Modernize SVGRenderStyleDefs.h
        https://bugs.webkit.org/show_bug.cgi?id=186024

        Reviewed by Daniel Bates.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::applyPropertiesToLayer):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        Update for new enum names.

2018-05-28  Carlos Garcia Campos  <cgarcia@igalia.com>

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

        * gtk/NEWS: Add release notes for 2.21.3.

2018-05-27  Dan Bernstein  <mitz@apple.com>

        Reverted the changes made for https://webkit.org/b/186016

        They broke the USE(APPLE_INTERNAL_SDK) Sierra build.

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

        [iOS] Fix warnings about leaks found by clang static analyzer
        <https://webkit.org/b/186009>
        <rdar://problem/40574267>

        Reviewed by Daniel Bates.

        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::platformSimulateKeySequence): Fix
        leak of two WebEvent objects that happened in a loop.
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDelegate previewController:transitionImageForPreviewItem:contentRect:]):
        Fix leak of a UIImage.

2018-05-27  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016

        Reviewed by Sam Weinig.

        * Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and
          OTHER_CPLUSPLUSFLAGS.
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm: Import Carbon.h instead of an
          HIToolbox header.
        * UIProcess/Cocoa/WebViewImpl.mm: Ditto.
        * UIProcess/mac/WKPrintingView.mm: Import Quartz.h instead of a PDFKit header.
        * UIProcess/mac/WKTextInputWindowController.mm: Import Carbon.h instead of an HIToolbox
          header.
        * WebProcess/Plugins/PDF/PDFAnnotationTextWidgetDetails.h: Import Quartz.h instead of a
          PDFKit header.
        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h: Ditto.
        * WebProcess/Plugins/PDF/PDFPlugin.mm: Ditto.
        * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: Ditto.
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: Ditto.
        * WebProcess/Plugins/PDF/PDFPluginPasswordField.mm: Ditto.
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: Ditto.
        * WebProcess/WebPage/mac/WebPageMac.mm: Ditto.

2018-05-25  Timothy Hatcher  <timothy@apple.com>

        Setting drawsBackground to YES on a WKView doesn't take effect immediately
        https://bugs.webkit.org/show_bug.cgi?id=185885
        rdar://problem/39706506

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Removed setBackgroundExtendsBeyondPage(true)
        since it is now the default.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setDrawsBackground): Make sure updateLayer gets called on the web view
        by calling setNeedsDisplay:YES.
        (WebKit::WebViewImpl::setBackgroundColor): Ditto.
        (WebKit::WebViewImpl::updateLayer): Removed dead code.
        * UIProcess/WebPageProxy.h: Make m_backgroundExtendsBeyondPage default to true. WebKit was
        always turning this on during WKWebView initializtion, which would cause the scroll
        shadow layer to be created, flash black because of no background, then destroyed soon
        after once WebKit's message to turn it on got delivered.
        * WebProcess/WebPage/WebPage.cpp:
        (WebPage::WebPage): Call setBackgroundExtendsBeyondPage earlier to avoid creating the scroll
        shadow layer, since backgroundShouldExtendBeyondPage defautls to false in WebCore for WK1.
        (WebKit::WebPage::setDrawsBackground): Use updateBackgroundRecursively to propagate the
        correct base background color.

2018-05-25  Youenn Fablet  <youenn@apple.com>

        Migrate From-Origin to Cross-Origin-Resource-Policy
        https://bugs.webkit.org/show_bug.cgi?id=185840

        Reviewed by Chris Dumez.

        Do Cross-Origin-Resource-Policy (CORP) checks in NetworkLoadChecker instead of NetworkResourceLoader directly.
        Make sure CORP only applies to no-cors loads.
        Remove ancestor checks and only consider the document origin making the load.
        This means that in case of cross-origin redirection to same-origin, the redirection will be CORP-checked,
        the final response will not be CORP-checked but will be opaque.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::validateCrossOriginResourcePolicyPolicy):
        (WebKit::NetworkLoadChecker::validateResponse):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        (WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        Send ancestor information for navigation loads only.

2018-05-25  Daniel Bates  <dabates@apple.com>

        NavigationAction should not hold a strong reference to a Document
        https://bugs.webkit.org/show_bug.cgi?id=185712
        <rdar://problem/40320916>

        Reviewed by Brent Fulgham.

        Update code to make use of NavigationAction::requester().

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

2018-05-25  Tim Horton  <timothy_horton@apple.com>

        Ensure that the Web Content process doesn't sleep during initialization
        https://bugs.webkit.org/show_bug.cgi?id=185975
        <rdar://problem/40548159>

        Reviewed by Geoffrey Garen.

        WebProcessPool::warmInitialProcess isn't worth much (or at least, as much
        as it could be) if the Web Content process goes to sleep in the middle
        of initializeWebProcess.

        Keep the Web Content process alive until it has handled all messages
        sent from WebProcessPool::initializeNewWebProcess.

        This is a significant speedup on some benchmarks I've been running
        that involve prewarming a process long before any content is loaded.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):

2018-05-25  Chris Dumez  <cdumez@apple.com>

        WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback() unexpectedly constructs a process pool
        https://bugs.webkit.org/show_bug.cgi?id=185992

        Reviewed by Geoffrey Garen.

        Update enableResourceLoadStatisticsAndSetTestingCallback() to pass the right parameter to processPools()
        to avoid constructing a process pool when none exist. Also drop the 'resourceLoadStatisticsEnabled'
        flag on the WebProcessPool and have it query its data store instead to know if the feature is enabled.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::setResourceLoadStatisticsEnabled):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2018-05-25  Chris Dumez  <cdumez@apple.com>

        Drop support for NSURLCache in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=185990

        Reviewed by Geoffrey Garen.

        Drop support for NSURLCache in WebKit2 now that the WebKit network cache is stable.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::clearDiskCache):
        (WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
        (WebKit::clearNSURLCache): Deleted.
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        (): Deleted.
        (WebKit::NetworkSessionCocoa::setUsesNetworkCache): Deleted.
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
        (WebKit::WebProcessPool::isNetworkCacheEnabled): Deleted.
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::suggestedFilenameForResourceWithURL const):
        (WebKit::WebFrame::mimeTypeForResourceWithURL const):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getResourceDataFromFrame):
        (WebKit::WebPage::hasLocalDataForURL):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformHasLocalDataForURL): Deleted.
        (WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
        (WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
        (WebKit::WebPage::cachedResponseDataForURL): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformHasLocalDataForURL): Deleted.
        (WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
        (WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
        (WebKit::WebPage::cachedResponseDataForURL): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::accessibilityRemoteObject):
        (WebKit::WebPage::platformHasLocalDataForURL): Deleted.
        (WebKit::cachedResponseForURL): Deleted.
        (WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
        (WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
        (WebKit::WebPage::cachedResponseDataForURL): Deleted.
        * WebProcess/WebPage/win/WebPageWin.cpp:
        (WebKit::WebPage::platformHasLocalDataForURL): Deleted.
        (WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
        (WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
        (WebKit::WebPage::cachedResponseDataForURL): Deleted.
        * WebProcess/WebPage/wpe/WebPageWPE.cpp:
        (WebKit::WebPage::platformHasLocalDataForURL): Deleted.
        (WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
        (WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
        (WebKit::WebPage::cachedResponseDataForURL): Deleted.
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

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

        Fix internal iOS builds after r232198
        https://bugs.webkit.org/show_bug.cgi?id=185986

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

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

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

        Reviewed by Geoff Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::fetchDiskCacheEntries):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::areFrameAncestorsSameSite):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::overrideSystemProxies):
        * Shared/API/APIURL.h:
        (API::URL::host const):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::deleteAllCookies):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::pluginDidReceiveUserInteraction):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::populatePluginCache):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::needsHiddenContentEditableQuirk):
        (WebKit::needsPlainTextQuirk):
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn):

2018-05-25  Adrian Perez de Castro  <aperez@igalia.com>

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

        * wpe/NEWS: Add release notes for the 2.21.2 release.

2018-05-25  Chris Dumez  <cdumez@apple.com>

        Minor ApplicationCacheStorage clean up
        https://bugs.webkit.org/show_bug.cgi?id=185984

        Reviewed by Youenn Fablet.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCopyOriginsWithApplicationCache):

2018-05-25  Chris Dumez  <cdumez@apple.com>

        Avoid triggering network cache speculative revalidation for loads allowing expired content
        https://bugs.webkit.org/show_bug.cgi?id=185985

        Reviewed by Antti Koivisto.

        Avoid triggering network cache speculative revalidation for loads allowing expired content
        (e.g. history loads, restoring pages after crash or safari relaunch). This causes us to do
        unnecessary revalidations, it is both wasteful and bad for performance.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):

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

        Fix issues with -dealloc methods found by clang static analyzer
        <https://webkit.org/b/185887>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Drive-by fix
        to use `copy` for `mimeType` property.
        (-[_WKPreviewControllerDataSource initWithMIMEType:]): Drive-by
        fix to use `instancetype` instead of `id`.  Use -copy for
        `mimeType` argument to match property definition.
        (-[_WKPreviewControllerDataSource dealloc]): Add.  Release
        `_completionHandler` and `_mimeType` to fix leaks.
        * UIProcess/ios/WKPasswordView.mm:
        (-[WKPasswordView dealloc]): Add.  Release
        `_userDidEnterPassword` to fix leak.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.h:
        Drive-by clean-up to make `location` property `copy` instead of
        `retain`.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController dealloc]): Release `_target` and
        `_location` to fix leaks.
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController dealloc]): Add.  Release
        `_viewController` to fix leak.
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        (@property secondaryMaterialOverlayView): Mark explicitly as
        `assign` since this isn't a retained variable.
        (@property secondaryMaterialOverlayViewConstraints): Mark
        explicitly as `retain` since there is nothing to keep this
        object alive.
        (+[WKFullscreenStackView secondaryMaterialOverlayView]): Fix
        leak by autoreleasing the return value.
        (-[WKFullscreenStackView dealloc]): Release retained instance
        variables to fix leaks.  Note that `_stackView` and
        `_visualEffectView` are internally retained despite their
        @property declarations.
        (-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]):
        Retain @property targetViewForSecondaryMaterialOverlay to match
        its declaration.

2018-05-23  Antoine Quint  <graouts@apple.com>

        [Web Animations] Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED for Web Animations experimental features
        https://bugs.webkit.org/show_bug.cgi?id=185919

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-05-24  Dan Bernstein  <mitz@apple.com>

        ProcessLauncherMac.mm contains a couple of meaningless #ifndef directives
        https://bugs.webkit.org/show_bug.cgi?id=185973

        Reviewed by Tim Horton.

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess): Use #if !ASSERT_DISABLED to guard statements that
          are only needed for an assertion, instead of #ifndef _NDEBUG, which is always true.

2018-05-24  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Memory pressure monitor doesn't reliable notify all the subprocesses
        https://bugs.webkit.org/show_bug.cgi?id=184261

        Reviewed by Carlos Garcia Campos.

        On Linux we had two implementations for getting notifications about memory pressure events:
        - The memory cgroup (called systemd here).
        - The UIProcess memory monitor (which delivered events via a shared eventfd)

        The problem with the first is that it was usually not working on a standard machine due to
        the special permissions or configurations required for memory cgroups, so the second one
        (eventfd) was used as a fall-back in that case.
        But this eventfd method is racy with more than one WebKit child process and it wasn't
        reliably delivering the notifications.

        This patch removes the memory cgroup implementation and modifies the UIProcess memory monitor
        to deliver the events via WebKit IPC. This simplifies the code a lot and allows us to have
        only one implementation that should work in any Linux machine.

        The implementation now also triggers the event with information about the criticalness of it.

        Previously a critical event was triggered always at a 95% of pressure.
        Now a non-critical one is triggered at 90% and critical remains at a 95%.

        Start triggering events early should compensate the fact than triggering the event via WebKit IPC is
        a bit slower than doing that via an eventfd (or than listening on the memory cgroup event controller).

        The events are delivered to all WebKit childs: WebProcess, NetworkProcess, StorageProcess, PluginProcess.

        In the case of the StorageProcess a dummy controller is installed, which currently does nothing,
        but leaves a note for a future implementation and at least allows to trigger platformReleaseMemory()
        that on Linux/glibc should end calling malloc_trim()

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::didReceiveMessage):
        (WebKit::PluginProcess::initializePluginProcess):
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::didReceiveMemoryPressureEvent):
        * Shared/ChildProcess.h:
        * Shared/ChildProcess.messages.in:
        * Shared/Plugins/PluginProcessCreationParameters.cpp:
        (WebKit::PluginProcessCreationParameters::encode const):
        (WebKit::PluginProcessCreationParameters::decode):
        * Shared/Plugins/PluginProcessCreationParameters.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeProcess):
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::sendMemoryPressureEvent):
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::sendMemoryPressureEvent):
        (WebKit::PluginProcessProxy::didFinishLaunching):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendMemoryPressureEvent):
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToStorageProcess):
        * UIProcess/linux/MemoryPressureMonitor.cpp:
        (WebKit::pollIntervalForUsedMemoryPercentage): Fix equation for calculating the interval percentage.
        (WebKit::MemoryPressureMonitor::singleton):
        (WebKit::MemoryPressureMonitor::start):
        * UIProcess/linux/MemoryPressureMonitor.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2018-05-24  Youenn Fablet  <youenn@apple.com>

        Update plugin search path to look for user installed plugins
        https://bugs.webkit.org/show_bug.cgi?id=185960

        Reviewed by Brent Fulgham.

        Now that UIProcess may be sandboxed, the home directory is no longer the user home directory.
        Update the path to still look for plugins in the user home directory.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::pluginsDirectories):

2018-05-24  Jiewen Tan  <jiewen_tan@apple.com>

        Adopt SecKeyProxy SPI in certificate based challenge response code
        https://bugs.webkit.org/show_bug.cgi?id=185848
        <rdar://problem/34586181>

        Reviewed by Alex Christensen.

        This patch adopts SecKeyProxy SPI in HTTPS client certificate authentication code.
        1) SecKeyProxy is a new SPI to relay crypto operations from one process to another. The owner process of the proxy
        will behave like a server, and other owners of the SecKeys created from the proxy's endpoints will then behave
        like clients. This client-server model allows more restricted sandbox for client processes, and meanwhile permits
        them to relay crypto operations to the server process while maintaining the same SecKey interfaces as used for local operations.
        2) Because of the client-server model, the server process, i.e. the UI Process in our case, needs to keep the proxy
        object alive long enough for the client process, i.e. Network Processes in our case, to finish all operations, and then destroy
        the proxy object afterward. The ideal place to hold such a proxy is WebsiteDataStore such that proxies could live with the
        corresponding network session.
        3) A new class called SecKeyProxyStore is then created to bind the lifetime of SecKeyProxy to the WebsiteDataStore while initializing
        it correctly. At the time the authentication process reaches WebPageProxy::didReceiveAuthenticationChallengeProxy where we have
        accesses to the WebsiteDataStore, we haven't yet been able to determine the Credential to authenticate the challenge. Therefore, we
        have to reserve a place in the WebsiteDataStore ahead and then fill it with the right Credential. That's why SecKeyProxyStore exists.
        In WebPageProxy::didReceiveAuthenticationChallengeProxy, we create a strong reference of SecKeyProxyStore which will eventually hold
        a strong reference of the SecKeyProxy, and move it to the WebsiteDataStore. We also create a weak reference to SecKeyProxyStore
        and move it to the AuthenticationChallenge. In this way, we indirectly bind the lifetime of SecKeyProxy to the WebsiteDataStore through
        the strong reference and also we can initialize the proxy through the weak reference while a credential is finally determined.
        4) Endpoints of the SecKeyProxy will be passed to the Network Process for creating the 'remote' SecKey. However, those endpoints are
        of NSXPCListenerEndpoint type, which can only be passed with xpc connections and are not compatible with our IPC mechanism. In order
        to pass endpoints around, this patch reuses the xpc connection that is used to bootstrap Network Processes from the UI Process. To do
        so, it sends xpc messages at the place where original IPC messages are sent and overwrites the boostrap listener of the xpc connection
        when Network Process is initialized. From the listener, it continues the original authentication code path.
        5) Tests, again, are manually covered by tlstestwebkit.org. Noted, the prompting Keychain dialog in macOS should say Safari instead of
        "com.apple.WebKit.Networking*" now.

        * Shared/AuthenticationManagerCocoa.mm: Added.
        (WebKit::AuthenticationManager::initializeConnection):
        * Shared/Authentication/cocoa/AuthenticationManager.h:
        * Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h:
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::useCredential):
        (WebKit::AuthenticationChallengeProxy::setSecKeyProxyStore):
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        * UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm: Added.
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc const):
        * UIProcess/Authentication/cocoa/SecKeyProxyStore.h: Added.
        (WebKit::SecKeyProxyStore::create):
        (WebKit::SecKeyProxyStore::isInitialized const):
        (WebKit::SecKeyProxyStore::get const):
        (WebKit::SecKeyProxyStore::weakPtrFactory const):
        * UIProcess/Authentication/cocoa/SecKeyProxyStore.mm: Added.
        (WebKit::SecKeyProxyStore::initialize):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::addSecKeyProxyStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-05-24  Megan Gardner  <megan_gardner@apple.com>

        Fix Issues with Loupe Gesture
        https://bugs.webkit.org/show_bug.cgi?id=185926

        Reviewed by Tim Horton.

        The loupe gesture was not giving us the correct selection in some situations.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView setSelectedTextRange:]):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::clearSelection):

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

        Don't track resource load milestones in private sessions
        https://bugs.webkit.org/show_bug.cgi?id=185828
        <rdar://problem/40424197>

        Reviewed by Brent Fulgham.

        Bug 184838 adds the facility for tracing the beginning and ending of
        resources loads and reporting so that historical information can be
        gathered to assess the health of the networking stack. Disable this
        facility for private browsing sessions.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::stopTrackingResourceLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):

2018-05-24  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r224908): [macOS] Media playback not honoring custom caption styles
        https://bugs.webkit.org/show_bug.cgi?id=185955
        <rdar://problem/40339278>

        Reviewed by Eric Carlson.

        In r224908 I removed access to the MediaAccessibility mach port, as well as
        read/write access to various preferences associated with that process, as it
        was no longer needed by modern WebKit media routines.

        Detailed testing reveals that read access is still needed to these preferences
        to properly handle custom caption styles.

        This patch re-enables access to the media accessibility preferences.

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

2018-05-24  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r230269): ASSERTION FAILED: sendRightCount == 1 at ProcessLauncherMac.mm(218)
        https://bugs.webkit.org/show_bug.cgi?id=185687
        <rdar://problem/39386361>

        Reviewed by Brady Eidson.

        In r230269 I added an assertion to help identify cases where we were doing bad
        bookkeeping in our port send rights. I assumed that because we were adding
        one send right, that when we went to close down the connection that we should
        have only one send right.
        
        I have since discovered that this assumption is invalid, and that I should
        only be checking that we have AT LEAST ONE send right at the time we attempt
        to remove it.

        This patch changes the assertion to confirm that we have at least one send
        right before we remove the send right.

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

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

        Some of the work in initializeLogChannelsIfNecessary() is unnecessary for release builds
        https://bugs.webkit.org/show_bug.cgi?id=185951

        Reviewed by Geoffrey Garen.

        Some of the work in initializeLogChannelsIfNecessary() is unnecessary for release builds and slows down
        launch time. In particular, it is unnecessary to read NSDefaults to figure out which logging channels
        should be enabled.

        * Platform/foundation/LoggingFoundation.mm:
        (WebKit::logLevelString):
        * Platform/unix/LoggingUnix.cpp:
        (WebKit::logLevelString):
        * Platform/win/LoggingWin.cpp:
        (WebKit::logLevelString):

2018-05-24  Per Arne Vollan  <pvollan@apple.com>

        Crash under WebKit::PluginProxy::destroy()
        https://bugs.webkit.org/show_bug.cgi?id=185841
        <rdar://problem/39936896>

        Reviewed by Brent Fulgham.

        A release assert in Connection::sencSync is failing since scripts are not allowed in this context,
        and the WebKit process is allowed to process incoming messages while waiting for the sync reply.
        In this context, scripts are disallowed in the method Element::addShadowRoot. To make sure the
        WebContent process will not wait indefinitely for a reply from the Plugin process, use a timeout
        of 1 second when sending the message.

        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::destroy):

2018-05-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ input method unit tests after r232049.

        Unit tests don't use a WebPageProxy.

        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::isViewFocused const):
        (WebKit::InputMethodFilter::setEnabled):
        * UIProcess/gtk/InputMethodFilter.h:

2018-05-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement maximize, minimize and fullscreen window commands
        https://bugs.webkit.org/show_bug.cgi?id=180398

        Reviewed by Brian Burg.

        * UIProcess/API/APIAutomationSessionClient.h:
        (API::AutomationSessionClient::requestMaximizeWindowOfPage): Added to allow clients maximize the window.
        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (WindowStateEvent::WindowStateEvent): Struct to handle window state events.
        (WindowStateEvent::~WindowStateEvent): Complete the event.
        (WindowStateEvent::complete): Call the completion handler is not called already.
        (windowStateEventCallback): Handle window state event changes.
        (webkitWebViewMaximizeWindow): Try to maximize the window and wait for the event.
        (webkitWebViewMinimizeWindow): Try to minimize the window and wait for the event.
        (webkitWebViewRestoreWindow): Try to unmaximize or unminimize the window and wait for the event.
        * UIProcess/API/wpe/WebKitWebViewWPE.cpp:
        (webkitWebViewMaximizeWindow):
        (webkitWebViewMinimizeWindow):
        (webkitWebViewRestoreWindow):
        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::maximizeWindowOfBrowsingContext): Exit fullscreen, restore the window and then
        maximize it.
        (WebKit::WebAutomationSession::maximizeWindowForPage): Ask the client to maximize the window of page.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/atoms/EnterFullscreen.js:
        (enterFullscreen): Return early if fullscreen is disabled or if window is already in fullscreen.

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

        Avoid loading AVFoundation to check supported MIME types if possible
        https://bugs.webkit.org/show_bug.cgi?id=185839
        <rdar://problem/40182010>

        Reviewed by Jer Noble.
        
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Encode mediaMIMETypes.
        (WebKit::WebProcessCreationParameters::decode): Decode mediaMIMETypes.
        * Shared/WebProcessCreationParameters.h:

        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::mediaTypeCache): Static Vector of media MIME types.
        (WebKit::WebProcessProxy::cacheMediaMIMETypes): Cache the type list and pass it to every other
        process proxy.
        (WebKit::WebProcessProxy::cacheMediaMIMETypesInternal): Cache the type list and pass it to the
        web process.
        (WebKit::WebProcessProxy::mediaMIMETypes): Return the cached type list.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Set parameters.mediaMIMETypes.

        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in: Add CacheMediaMIMETypes.

        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in: Add SetMediaMIMETypes.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess): Cache the MIME types if the list isn't
        empty, else register with AVFoundationMIMETypeCache to be notified when it loads types.
        AVFoundationMIMETypeCache to 
        (WebKit::WebProcess::platformTerminate): Unregister with AVFoundationMIMETypeCache.
        (WebKit::WebProcess::setMediaMIMETypes): Pass list of types to AVFoundationMIMETypeCache.

2018-05-23  Brian Burg  <bburg@apple.com>

        Web Automation: disable process swap on navigation when an automation session is active
        https://bugs.webkit.org/show_bug.cgi?id=185552

        Reviewed by Tim Horton.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        This is not intended to work right now. Opt out to avoid crashing
        later when a process is deallocated unexpectedly.

2018-05-23  Youenn Fablet  <youenn@apple.com>

        NetworkLoadChecker should check cached redirections
        https://bugs.webkit.org/show_bug.cgi?id=185849

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRedirection):
        Set the resource error url as done by WebCore SubresourceLoader.
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        Pass the resource request to dispatchWillSendRedirectedRequest now needs it.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        Make sure that m_networkLoad is not null before cancelling it since we might be checking a cached redirection.
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
        Ensure the redirect response is coming from the Network before adding it to the cache.
        (WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
        Call willSendRedirectedRequest to make sure the cached redirect is validated.
        * NetworkProcess/NetworkResourceLoader.h:

2018-05-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: implement AutomationSessionClient::didDisconnectFromRemote
        https://bugs.webkit.org/show_bug.cgi?id=185866

        Reviewed by Brian Burg.

        To handle the case of the session being closed by the browser, for example in case of a network process
        crash. This is currently causing WebDriver tests to timeout in the bot.

        * UIProcess/API/glib/WebKitAutomationSession.cpp: Add an implementation of didDisconnectFromRemote() to notify
        the WebContext that the session will be closed.
        * UIProcess/API/glib/WebKitWebContext.cpp: Remove the automation session when closed.
        * UIProcess/API/glib/WebKitWebContextPrivate.h:

2018-05-22  Brent Fulgham  <bfulgham@apple.com>

        Close access to "lsopen" for non-UI process
        https://bugs.webkit.org/show_bug.cgi?id=185890
        <rdar://problem/39686511>

        Reviewed by Alexey Proskuryakov.

        Close down access to 'lsopen' in the iOS sandboxes. These operations are
        performed by the UIProcess on behalf of these helper processes.

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

2018-05-22  Dean Jackson  <dino@apple.com>

        Optimized path zoom animation needs a valid UIImage and CGRect
        https://bugs.webkit.org/show_bug.cgi?id=185883
        <rdar://problem/40306056>

        Reviewed by Jon Lee.

        Take the rectangle that was passed into the ResourceRequest and
        use it for the origin of an animation into QuickLook.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceRequest>::encode):
        (IPC::ArgumentCoder<ResourceRequest>::decode):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didStart):
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDelegate initWithSystemPreviewController:fromRect:]):
        (-[_WKPreviewControllerDelegate presentingViewController]):
        (-[_WKPreviewControllerDelegate previewController:frameForPreviewItem:inSourceView:]):
        (-[_WKPreviewControllerDelegate previewController:transitionImageForPreviewItem:contentRect:]):
        (WebKit::SystemPreviewController::start):
        (-[_WKPreviewControllerDelegate initWithSystemPreviewController:]): Deleted.
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::systemPreviewDownloadRect const):
        * UIProcess/SystemPreviewController.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::syncRootViewToScreen):
        * UIProcess/WebPageProxy.h:

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

        [iOS] TestWebKitAPI.WebKit.WKHTTPCookieStoreWithoutProcessPool fails because cookies use different files with/without processpool
        https://bugs.webkit.org/show_bug.cgi?id=185831

        Reviewed by Chris Dumez.

        Started to use uiProcessCookieStorageIdentifier for iOS: make sure cookies handled without 
        processpool would use the same storage file as when processpool exists.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

        Regression(AsyncPolicyDelegates): Box.app login Window is blank
        https://bugs.webkit.org/show_bug.cgi?id=185832
        <rdar://problem/40307871>

        Reviewed by Geoffrey Garen.

        Moved WeakObjCPtr.h header from WebKit/ to wtf/ so that it can be used in
        WebKitLegacy code.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextControllerInternal.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        * UIProcess/API/Cocoa/WKScriptMessage.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        * UIProcess/ApplicationStateTracker.h:
        * UIProcess/Cocoa/AutomationClient.h:
        * UIProcess/Cocoa/AutomationSessionClient.h:
        * UIProcess/Cocoa/DiagnosticLoggingClient.h:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/FindClient.h:
        * UIProcess/Cocoa/FullscreenClient.h:
        * UIProcess/Cocoa/IconLoadingDelegate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/mac/WKInspectorViewController.mm:
        * UIProcess/mac/WKInspectorWKWebView.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

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

        Conversion between SecurityOriginData and DatabaseIdentifier is asymmetric when port is null
        https://bugs.webkit.org/show_bug.cgi?id=185715

        Reviewed by Geoffrey Garen.

        Add getter for origins in WKWebsiteDataRecord for testing.

        * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
        (-[WKWebsiteDataRecord _originsString]):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:


2018-05-22  Brady Eidson  <beidson@apple.com>

        Rename the "Web content is visible" process assertion.
        https://bugs.webkit.org/show_bug.cgi?id=185878

        Reviewed by Chris Dumez.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion):

2018-05-22  Andy Estes  <aestes@apple.com>

        [Wi-Fi Assertions] Drop assertions on process suspension
        https://bugs.webkit.org/show_bug.cgi?id=185844
        <rdar://problem/40352319>

        Reviewed by Daniel Bates.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::actualPrepareToSuspend):
        (WebKit::NetworkProcess::processDidResume):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformPrepareToSuspend):
        (WebKit::NetworkProcess::platformProcessDidResume):

2018-05-22  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r229093): Re-enable Network Extension support in the WebContent process (Take 2)
        https://bugs.webkit.org/show_bug.cgi?id=185874
        <rdar://problem/40454404>

        Reviewed by Eric Carlson.

        Add back a necessary XPC connection after locking down the network features in r229093.

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

2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r232052.

        Breaks internal builds.

        Reverted changeset:

        "Use more C++17"
        https://bugs.webkit.org/show_bug.cgi?id=185176
        https://trac.webkit.org/changeset/232052

2018-05-22  Alberto Garcia  <berto@igalia.com>

        [CMake] Properly detect compiler flags, needed libs, and fallbacks for usage of 64-bit atomic operations
        https://bugs.webkit.org/show_bug.cgi?id=182622
        <rdar://problem/40292317>

        Reviewed by Michael Catanzaro.

        Move the test to determine whether we need to link against
        libatomic to the common file WebKitCompilerFlags.cmake so it can
        also be used for JavaScriptCore.

        * CMakeLists.txt:

2018-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r231843.

        Broke cross build

        Reverted changeset:

        "[CMake] Properly detect compiler flags, needed libs, and
        fallbacks for usage of 64-bit atomic operations"
        https://bugs.webkit.org/show_bug.cgi?id=182622
        https://trac.webkit.org/changeset/231843

2018-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Crash when loading a SVG image
        https://bugs.webkit.org/show_bug.cgi?id=185819

        Reviewed by Brent Fulgham.

        This is happening in WebLoaderStrategy::scheduleLoad() when getting the value of
        FrameLoaderClient::pageID(). SVGImage uses the empty clients for the loader, and
        EmptyFrameLoaderClient::pageID() returns std::nullopt. The same happens with the frameID. This changed in
        r225934, when pageID() and frameID() were changed to return std::optional, EmptyFrameLoaderClient was updated to
        return std::nullopt instead of 0.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad): Use value_or(0) instead of value() to get pageID and frameID from
        FrameLoaderClient.

2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use more C++17
        https://bugs.webkit.org/show_bug.cgi?id=185176

        Reviewed by JF Bastien.

        * Configurations/Base.xcconfig:
        * DerivedSources.make:

2018-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] UI process crash when closing the window
        https://bugs.webkit.org/show_bug.cgi?id=185818

        Reviewed by Michael Catanzaro.

        This happens when a page containing a text field is loaded but the focus remains in the url bar when the window
        is closed. This is because we are sending a notify-in to the IM context, but the focus is still in the URL
        bar. That confuses the wayland input method manager that tries to free the text of the web view IM context that has
        already been deleted.

        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::setEnabled): Only send notify-in if the view is actually focused.

2018-05-21  Ryosuke Niwa  <rniwa@webkit.org>

        Remove unused and no-op WKContextSetCookieStorageDirectory
        https://bugs.webkit.org/show_bug.cgi?id=185857

        Reviewed by Youenn Fablet.

        Deleted C API which didn't do anything useful, and consequently not used by anyone.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetCookieStorageDirectory): Deleted.
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.h:

2018-05-21  Chris Nardi  <cnardi@chromium.org>

        Remove dead exception in MediaList.appendMedium
        https://bugs.webkit.org/show_bug.cgi?id=185278

        Reviewed by Chris Dumez.

        Remove code pertaining to an exception being thrown by appendMedium().

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
        (webkit_dom_media_list_append_medium):

2018-05-21  Aditya Keerthi  <akeerthi@apple.com>

        [iOS] Click events only fire once when editing
        https://bugs.webkit.org/show_bug.cgi?id=185777

        Reviewed by Tim Horton.

        gestureRecognizerShouldBegin: was returning false for the single tap gesture when a node was being
        edited. This is an artifact of how the gesture was previously handled with the text selection assistant.
        This condition is now removed, allowing the single tap gesture to go through and correctly propagate the
        click event.

        Also added an early return to _didGetTapHighlightForRequest: in order to prevent the tap highlight from
        being shown when the node is already being assisted.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):

2018-05-21  Daniel Bates  <dabates@apple.com>

        REGRESSION (r231107): CSP report-only policies are ignored for beacon, importScripts, fetch(), EventSource, and XHR
        https://bugs.webkit.org/show_bug.cgi?id=185789
        <rdar://problem/40380175>

        Reviewed by Andy Estes.

        Have NetworkLoadChecker implement the ContentSecurityPolicyClient interface and support logging
        console messages, sending CSP reports, and dispatching SecurityPolicyViolation events.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker): Modified to take a reference to the NetworkConnectionToWebProcess,
        the web page ID, the web frame ID, and the resource load identifier. These details are necessary
        in order to implement the ContentSecurityPolicyClient interface.
        (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy): Added.
        (WebKit::NetworkLoadChecker::continueCheckingRequest): Write in terms of isAllowedByContentSecurityPolicy().
        (WebKit::NetworkLoadChecker::contentSecurityPolicy): Pass ourself as the client so that we receive
        delegate callbacks.
        (WebKit::NetworkLoadChecker::addConsoleMessage): Added.
        (WebKit::NetworkLoadChecker::sendCSPViolationReport): Added.
        (WebKit::NetworkLoadChecker::enqueueSecurityPolicyViolationEvent): Added.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (NetworkResourceLoader::enqueueSecurityPolicyViolationEvent): Added.
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad): Modified to take a reference to the NetworkConnectionToWebProcess and pass
        this through to the NetworkLoadChecker along with the web page ID, web frame ID and resource load identifier.
        * NetworkProcess/PingLoad.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::enqueueSecurityPolicyViolationEvent): Added.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in: Add message EnqueueSecurityPolicyViolationEvent.

2018-05-21  Brian Burg  <bburg@apple.com>

        Web Automation: always return an empty cookie list if document.cookieURL() is empty
        https://bugs.webkit.org/show_bug.cgi?id=185838
        <rdar://problem/37737526>

        Reviewed by Tim Horton.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::getCookiesForFrame):
        This crashes in CFNetwork code because an empty cookie URL is not a valid input.
        Just return an empty list since there couldn't be any cookies returned.

2018-05-21  Brian Burg  <bburg@apple.com>

        Web Automation: terminate the automation session if the network or storage process crashes
        https://bugs.webkit.org/show_bug.cgi?id=185827
        <rdar://problem/40424020>

        Reviewed by Tim Horton.

        If one of the processes crashes, the page may be in an undefined state and
        automation will fail in unpredictable ways. It's better to just give up immediately.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessFailedToLaunch):
        (WebKit::WebProcessPool::storageProcessCrashed):

2018-05-21  Sihui Liu  <sihui_liu@apple.com>

        Add a diskCacheSizeOverride accessor function on WKContextConfigurationRef
        https://bugs.webkit.org/show_bug.cgi?id=185826
        <rdar://problem/39732113>

        Reviewed by Alex Christensen.

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationDiskCacheSizeOverride):
        (WKContextConfigurationSetDiskCacheSizeOverride):
        * UIProcess/API/C/WKContextConfigurationRef.h:

2018-05-21  Jer Noble  <jer.noble@apple.com>

        Complete fix for enabling modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=185770
        <rdar://problem/40368220>

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2018-05-21  Sam Weinig  <sam@webkit.org>

        Modernize RenderStyleConstants.h - Part 1
        https://bugs.webkit.org/show_bug.cgi?id=185809

        Reviewed by Yusuke Suzuki.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::rangeForWebSelectionAtPosition):
        (WebKit::WebPage::getPositionInformation):
        Update for new enum names.

2018-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

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

        * gtk/NEWS: Add release notes for 2.21.2.

2018-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed, rolling out r222967.

        It's not ready yet

        Reverted changeset:

        "[GTK][WPE] Add API to configure and enable resource load
        statistics"
        https://bugs.webkit.org/show_bug.cgi?id=177943
        https://trac.webkit.org/changeset/222967

2018-05-18  Commit Queue  <commit-queue@webkit.org>

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

        Caused layout test failures (Requested by realdawei on
        #webkit).

        Reverted changeset:

        "Complete fix for enabling modern EME by default"
        https://bugs.webkit.org/show_bug.cgi?id=185770
        https://trac.webkit.org/changeset/231982

2018-05-18  Brian Burg  <bburg@apple.com>

        [Cocoa] Add missing nullability annotations to _WKAutomationSessionDelegate
        https://bugs.webkit.org/show_bug.cgi?id=185791
        <rdar://problem/40279891>

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: If there is no dialog shown,
        then the delegate methods to return the dialog text may return a nil NSString.

2018-05-18  Youenn Fablet  <youenn@apple.com>

        NetworkLoadChecker should cancel its content extension retrieval task when being destroyed
        https://bugs.webkit.org/show_bug.cgi?id=185661
        <rdar://problem/39985509>

        Reviewed by Chris Dumez.

        Make sure that the Content Extension retrieval callback checks that NetworkLoadChecker is alive.
        This allows stopping NetworkLoadChecker be ref counted.
        This in turns allows NetworkResourceLoader to delete its NetworkLoadChecker when being deleted as well.
        By doing so, we simplify the memory management of NetworkResourceLoader and NetworkLoadChecker.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::weakPtrFactory):
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * NetworkProcess/PingLoad.h:

2018-05-18  Per Arne Vollan  <pvollan@apple.com>

        WebProcess fails to launch
        https://bugs.webkit.org/show_bug.cgi?id=185140

        Reviewed by Geoffrey Garen.

        If the NSApplication runloop is not used in the WebContent process, launchServicesCheckIn() needs to be called
        in order for enableSandboxStyleFileQuarantine() to succeed. Determine at runtime if launchServicesCheckIn()
        should be called by checking if the NSApplication event loop is running.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeProcess):

2018-05-18  Jer Noble  <jer.noble@apple.com>

        Complete fix for enabling modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=185770
        <rdar://problem/40368220>

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2018-05-18  Brent Fulgham  <bfulgham@apple.com>

        Convert ProcessPrivilege assertions to regular debug-only assertions
        https://bugs.webkit.org/show_bug.cgi?id=185775
        <rdar://problem/40372286>

        Reviewed by Geoffrey Garen.

        In Bug 184322 I added a number of RELEASE_ASSERT checks that certain
        UI-only calls were not being made in the WebContent process.

        Measurements have shown that these RELEASE_ASSERTs have regressed performance
        by around 1% on some benchmarks, so we should convert them to normal asserts.

        This patch changes the RELEASE_ASSERTs into ASSERTs.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::becomeFirstResponder):
        (WebKit::WebViewImpl::pluginFocusOrWindowFocusChanged):
        (WebKit::WebViewImpl::validateUserInterfaceItem):
        (WebKit::WebViewImpl::startSpeaking):
        (WebKit::WebViewImpl::stopSpeaking):
        (WebKit::applicationFlagsForDrag):
        (WebKit::WebViewImpl::doneWithKeyEvent):
        * UIProcess/Gamepad/mac/UIGamepadProviderMac.mm:
        (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::enterFullscreen):
        (WebKit::PluginProcessProxy::beginModal):
        (WebKit::PluginProcessProxy::endModal):
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::DisplayLink):
        (WebKit::DisplayLink::~DisplayLink):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::getIsSpeaking):
        (WebKit::WebPageProxy::speak):
        (WebKit::WebPageProxy::stopSpeaking):
        (WebKit::WebPageProxy::startDisplayLink):
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):

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

        Handle failure to extend sandbox gracefully
        https://bugs.webkit.org/show_bug.cgi?id=185779
        <rdar://problem/40316349>

        Reviewed by Brent Fulgham.

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

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Don't append
        the request to m_grantedRequests if it failed.
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess): Deny request if willCreateMediaStream
        fails.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream): Don't try to extend sandbox if
        we fail to allocate all necessary handles.
        * UIProcess/UserMediaProcessManager.h:
        (WebKit::UserMediaProcessManager::denyNextUserMediaRequest): New, for testing.

2018-05-18  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on for test runners
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Unreviewed. Rolling out the patch for this bug, it caused some flaky timeouts for animation suspension tests.

        * Shared/WebPreferences.yaml:

2018-05-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] Clearing text fields should dispatch input events of type "deleteContent"
        https://bugs.webkit.org/show_bug.cgi?id=185769
        <rdar://problem/40368261>

        Reviewed by Tim Horton.

        When setting the text of the currently focused element to the empty string, just delete the text instead of
        pretending to insert an empty string. This mimics deleting content using the delete key on macOS, and fires an
        input event with inputType "deleteContent" instead of "insertText".

        Test: fast/forms/extrazoom/delete-content-in-text-field.html

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

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

        Renamed "trackNetworkActivity" to "tracksResourceLoadMilestones"
        https://bugs.webkit.org/show_bug.cgi?id=185523
        <rdar://problem/40136361>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::networkActivityTrackingEnabled):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::tracksResourceLoadMilestones const):
        (WebKit::NetworkProcess::trackNetworkActivity const): Deleted.
        * 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:
        (WKContextConfigurationTracksResourceLoadMilestones):
        (WKContextConfigurationSetTracksResourceLoadMilestones):
        (WKContextConfigurationTrackNetworkActivity): Deleted.
        (WKContextConfigurationSetTrackNetworkActivity): Deleted.
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration tracksResourceLoadMilestones]):
        (-[_WKProcessPoolConfiguration setTracksResourceLoadMilestones:]):
        (-[_WKProcessPoolConfiguration trackNetworkActivity]): Deleted.
        (-[_WKProcessPoolConfiguration setTrackNetworkActivity:]): Deleted.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-05-18  Chris Dumez  <cdumez@apple.com>

        Avoid keeping the frame alive when ref'ing a WindowProxy
        https://bugs.webkit.org/show_bug.cgi?id=185737
        <rdar://problem/40004666>

        Reviewed by Sam Weinig.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::windowScriptNPObject):

2018-05-18  Youenn Fablet  <youenn@apple.com>

        -Wmemset-elt-size warning in LibWebRTCSocket constructor
        https://bugs.webkit.org/show_bug.cgi?id=185555
        <rdar://problem/40217250>

        Reviewed by Darin Adler.

        GetOption implementation was broken in that it was not initializing properly its array of options.
        This patch fixes it by using an array of optional<int> which are initialized by default.
        When no value is set, we return the error code -1.
        In theory, we should go to NetworkProcess to get the actual value.
        Since GetOption is not used in practice, we just do this best effort implementation of storing previously set values.

        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::LibWebRTCSocket):
        (WebKit::LibWebRTCSocket::GetOption):
        * WebProcess/Network/webrtc/LibWebRTCSocket.h:

2018-05-18  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on for test runners
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Reviewed by Jon Lee.

        * Shared/WebPreferences.yaml: Leave Web Animations off by default, it's up to clients
        to turn it on.

2018-05-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Curl] Remove unused SystemProxyWin.cpp
        https://bugs.webkit.org/show_bug.cgi?id=185224

        Reviewed by Antti Koivisto.

        SystemProxyWin is not used at the moment. Remove it.

        * NetworkProcess/win/SystemProxyWin.cpp: Removed.
        * NetworkProcess/win/SystemProxyWin.h: Removed.
        * PlatformWin.cmake: Removed SystemProxyWin.cpp.

2018-05-17  Nan Wang  <n_wang@apple.com>

        AX: [macOS] Expose the primary screen height through AX API
        https://bugs.webkit.org/show_bug.cgi?id=185742

        Reviewed by Chris Fleizach.

        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject accessibilityAttributeNames]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):

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

        Use CompletionHandlers for DelayedReplies
        https://bugs.webkit.org/show_bug.cgi?id=182269

        Reviewed by Youenn Fablet.

        DelayedReplies should be a noncopyable, non-refcountable type.  They should be
        called once and only once.  This is what CompletionHandlers are for.

        No change in behavior.  Just cleaner code.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::SynchronousLoadData::SynchronousLoadData):
        (WebKit::sendReplyToSynchronousRequest):
        (WebKit::NetworkResourceLoader::NetworkResourceLoader):
        * NetworkProcess/NetworkResourceLoader.h:
        * Platform/IPC/HandleMessage.h:
        (IPC::callMemberFunctionImpl):
        (IPC::callMemberFunction):
        (IPC::handleMessageDelayed):
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::setInitializationReply):
        (WebKit::PluginControllerProxy::takeInitializationReply):
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::destroyPlugin):
        (WebKit::WebProcessConnection::createPlugin):
        (WebKit::WebProcessConnection::createPluginAsynchronously):
        * PluginProcess/WebProcessConnection.h:
        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        (Messages::WebPage::GetPluginProcessConnection::send):
        (Messages::WebPage::TestMultipleAttributes::send):
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): Deleted.
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::~DelayedReply): Deleted.
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::~DelayedReply): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): Deleted.
        * Scripts/webkit/LegacyMessages-expected.h:
        * Scripts/webkit/MessageReceiver-expected.cpp:
        (Messages::WebPage::GetPluginProcessConnection::send):
        (Messages::WebPage::TestMultipleAttributes::send):
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): Deleted.
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::~DelayedReply): Deleted.
        (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::~DelayedReply): Deleted.
        (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): Deleted.
        * Scripts/webkit/Messages-expected.h:
        * Scripts/webkit/messages.py:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        (WebKit::NetworkProcessProxy::networkProcessFailedToLaunch):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::getPluginProcessConnection):
        * UIProcess/Plugins/PluginProcessManager.h:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getPluginProcessConnection):
        (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
        (WebKit::PluginProcessProxy::didCreateWebProcessConnection):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::didClose):
        (WebKit::StorageProcessProxy::didCreateStorageToWebProcessConnection):
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::ExceededDatabaseQuotaRecords::createRecord):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::webGLPolicyForURL):
        (WebKit::WebPageProxy::resolveWebGLPolicyForURL):
        (WebKit::WebPageProxy::getToolbarsAreVisible):
        (WebKit::WebPageProxy::getMenuBarIsVisible):
        (WebKit::WebPageProxy::getStatusBarIsVisible):
        (WebKit::WebPageProxy::getWindowFrame):
        (WebKit::WebPageProxy::screenToRootView):
        (WebKit::WebPageProxy::rootViewToScreen):
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::reachedApplicationCacheOriginQuota):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessCrashed):
        (WebKit::WebProcessPool::getNetworkProcessConnection):
        (WebKit::WebProcessPool::getStorageProcessConnection):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getPluginProcessConnection):
        (WebKit::WebProcessProxy::getNetworkProcessConnection):
        (WebKit::WebProcessProxy::getStorageProcessConnection):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::syncTerminateWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::computePagesForPrintingAndDrawToPDF):

2018-05-17  Jer Noble  <jer.noble@apple.com>

        CRASH in -[WKFullScreenViewController _manager]
        https://bugs.webkit.org/show_bug.cgi?id=185745
        <rdar://problem/39195241>

        Reviewed by Eric Carlson.

        Protect against WKFullScreenViewController outliving WKWebView by making its
        _webView property weak. Additionally, add a sanity-check RetainPtr where _webView
        is referenced multiple times within a function.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController initWithWebView:]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController close]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _isSecure]):
        (-[WKFullScreenWindowController _serverTrust]):
        (-[WKFullScreenWindowController _updateLocationInfo]):
        (-[WKFullScreenWindowController _manager]):
        (-[WKFullScreenWindowController _startToDismissFullscreenChanged:]):

2018-05-17  Brent Fulgham  <bfulgham@apple.com>

        Correct default for StorageAccess API
        https://bugs.webkit.org/show_bug.cgi?id=185748
        <rdar://problem/40220659>

        Reviewed by Dean Jackson.

        Flip the default state to 'true' so that the new "sticky" state
        for Storage Access API and attributing user interaction for
        Storage Access API use is applied by default.

        * Shared/WebPreferences.yaml:

2018-05-17  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE] Implement and enable FULLSCREEN_API
        https://bugs.webkit.org/show_bug.cgi?id=185676

        Reviewed by Žan Doberšek.

        Do the initial implementation of FULLSCREEN_API for WPE and
        enable the CMake option by default.

        Most of the layout tests (55 of 58) are passing and the feature
        seems to work fine on different websites that use it.

        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
        (WebKit::PageClientImpl::closeFullScreenManager):
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        (WebKit::PageClientImpl::beganEnterFullScreen):
        (WebKit::PageClientImpl::beganExitFullScreen):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/API/wpe/WPEView.h:
        (WKWPE::View::isFullScreen):
        (WKWPE::View::setFullScreen):

2018-05-17  Jiewen Tan  <jiewen_tan@apple.com>

        Convert CertificateInfo into Credential in UI Process instead of Networking Process
        https://bugs.webkit.org/show_bug.cgi?id=185662
        <rdar://problem/40275561>

        Reviewed by Alex Christensen.

        Right now we convert CertificateInfo into Credential in the very last stage of client certificate authentication process
        when it reaches Networking Process. This patch moves that conversion earlier in UI Process such that we don't have to
        pass both Credential and CertificateInfo to Networking Process.

        CertificateInfo is only used in macOS for C API specifically. WK2 includes macOS/iOS relies on NSURLCredential/WebCore::Credential
        solely. WK2 has already exercised the ability of using WebCore::Credential to do client certficate authentication. This patch therefore
        takes advantage of that. It converts CertficateInfo objects into Credential objects right after WebCredential is initialized, and then merge
        any code paths that utilizes CertficateInfo into ones that uses WebCore::Credential.

        Covered by existing tests.

        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::useCredentialForChallenge):
        (WebKit::AuthenticationManager::useCredentialForSingleChallenge):
        (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): Deleted.
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::useCredential):
        * UIProcess/Authentication/WebCredential.cpp:
        (WebKit::WebCredential::WebCredential):
        (WebKit::WebCredential::certificateInfo): Deleted.
        * UIProcess/Authentication/WebCredential.h:
        (WebKit::WebCredential::create):
        * UIProcess/Authentication/mac/WebCredentialMac.mm: Renamed from Source/WebKit/Shared/Authentication/mac/AuthenticationManager.mac.mm.
        (WebKit::leafCertificate):
        (WebKit::chain):
        (WebKit::WebCredential::WebCredential):
        * WebKit.xcodeproj/project.pbxproj:

2018-05-17  Jeremy Jones  <jeremyj@apple.com>

        Ensure valid rects for fullsceen animation.
        https://bugs.webkit.org/show_bug.cgi?id=185736
        rdar://problem/40320174

        Reviewed by Jer Noble.

        Protect against zero width and height since those can make for NANs in the animation transforms.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):

2018-05-17  Jer Noble  <jer.noble@apple.com>

        Turn Modern EME API on by default and remove it as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=185693
        <rdar://problem/39954396>

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-05-17  Dean Jackson  <dino@apple.com>

        Safari optimized flow should be releasing viewer to prevent memory growth with subsequent launches/closes
        https://bugs.webkit.org/show_bug.cgi?id=185722
        <rdar://problem/40247351>

        Reviewed by Antoine Quint.

        I made a rookie mistake in the original patch: I was holding a strong
        reference to "self" in a block, which was causing a retain cycle.
        Replace that with a WeakObjCPtr.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):

2018-05-16  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r229093)[macOS] Allow network-outbound for syslog use
        https://bugs.webkit.org/show_bug.cgi?id=185703
        <rdar://problem/39778918>

        Reviewed by Eric Carlson.

        In r229093 I removed the 'network-outbound' permission for syslog use.
        Further testing has shown that this is still needed for subsystem
        logging in our bundle loading code.

        This patch re-enabled network-outbound for syslog.

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

2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>

        Add support for Intl NumberFormat formatToParts
        https://bugs.webkit.org/show_bug.cgi?id=185375

        Reviewed by Yusuke Suzuki.

        Add flag for NumberFormat formatToParts.

        * Configurations/FeatureDefines.xcconfig:

2018-05-16  Andy Estes  <aestes@apple.com>

        [Wi-Fi Assertions] Adopt WiFiAssertionHolderAdditions
        https://bugs.webkit.org/show_bug.cgi?id=185685
        <rdar://problem/40136681>

        Reviewed by Sam Weinig.

        * NetworkProcess/cocoa/WiFiAssertionHolder.cpp:
        (WebKit::WiFiAssertionHolder::WiFiAssertionHolder):
        (WebKit::WiFiAssertionHolder::~WiFiAssertionHolder):
        (WebKit::ensureWiFiManagerClient): Deleted.

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

        [Win] Implement WebPage::handleEditingKeyboardEvent
        https://bugs.webkit.org/show_bug.cgi?id=185327

        Reviewed by Alexey Proskuryakov.

        * WebProcess/WebPage/win/WebPageWin.cpp:
        (WebKit::WebPage::handleEditingKeyboardEvent): Copied from WebKitLegacy.

2018-05-16  Sihui Liu  <sihui_liu@apple.com>

        Session cookies aren't reliably set when using default WKWebSiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=185624
        <rdar://problem/39111626>

        Reviewed by Geoffrey Garen.

        Session cookies of default session were set in UI Process when there was no process pool, 
        but they were not synced (or synced slowly to) Network Process. To make these cookies visible
        as soon as they were set through API, we could manually set those cookies in Network Process
        during its initilization. 

        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::clearPendingCookies):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-05-16  Chris Nardi  <cnardi@chromium.org>

        Remove Document#selectedStylesheetSet/preferredStylesheetSet
        https://bugs.webkit.org/show_bug.cgi?id=185381

        Reviewed by Darin Adler.

        Make API methods for Document#selectedStylesheetSet/preferredStylesheetSet do nothing.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.h:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
        (webkit_dom_document_set_property):
        (webkit_dom_document_get_property):
        (webkit_dom_document_get_preferred_stylesheet_set):
        (webkit_dom_document_get_selected_stylesheet_set):
        (webkit_dom_document_set_selected_stylesheet_set):

2018-05-16  Alberto Garcia  <berto@igalia.com>

        [CMake] Properly detect compiler flags, needed libs, and fallbacks for usage of 64-bit atomic operations
        https://bugs.webkit.org/show_bug.cgi?id=182622

        Reviewed by Michael Catanzaro.

        Move the test to determine whether we need to link against
        libatomic to the common file WebKitCompilerFlags.cmake so it can
        also be used for JavaScriptCore.

        * CMakeLists.txt:

2018-05-15  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Check TypeInfo first before calling getCallData when we would like to check whether given object is a function
        https://bugs.webkit.org/show_bug.cgi?id=185601

        Reviewed by Saam Barati.

        * WebProcess/Plugins/Netscape/JSNPObject.h:

2018-05-15  Sihui Liu  <sihui_liu@apple.com>

        StorageManager::deleteLocalStorageOriginsModifiedSince: database files get deleted before database connections close
        https://bugs.webkit.org/show_bug.cgi?id=185671

        Reviewed by Geoffrey Garen.

        We should delete database files before closing databases.

        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        (WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
        (WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince): Deleted.
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):

2018-05-15  Dean Jackson  <dino@apple.com>

        Launch System Preview as the download starts, rather than waiting for a response
        https://bugs.webkit.org/show_bug.cgi?id=185669
        <rdar://problem/40278181>

        Reviewed by Tim Horton.

        We were waiting for the RequestResponse to get a MIME-type before
        launching the system preview. This causes an annoying delay.

        Instead, assume that the system preview is one of the handled
        mime types and launch the viewer immediately. If it gets something it
        didn't expect, it will show an error.

        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didStart):
        (WebKit::DownloadClient::didReceiveResponse):
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
        (WebKit::SystemPreviewController::start): Small cleanup to ensure we
        don't try to present twice (this shouldn't happen).

2018-05-15  Dean Jackson  <dino@apple.com>

        Post-review cleanup for 185459
        https://bugs.webkit.org/show_bug.cgi?id=185665
        <rdar://problem/40276689>

        Reviewed by Tim Horton.

        Jon made some comments in 185459 that I'm addressing here.

        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm: Guard the activity token for iOS
        in a way that means it will still work ok on macOS.
        (WebKit::DownloadClient::didStart):
        (WebKit::DownloadClient::processDidCrash):
        (WebKit::DownloadClient::didFinish):
        (WebKit::DownloadClient::didFail):
        (WebKit::DownloadClient::didCancel):
        (WebKit::DownloadClient::takeActivityToken):
        (WebKit::DownloadClient::releaseActivityTokenIfNecessary):
        (WebKit::DownloadClient::releaseActivityToken): Deleted.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Add an early return.
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):

2018-05-15  Tadeu Zagallo  <tzagallo@apple.com>

        Update touch event tracking types on every touch
        https://bugs.webkit.org/show_bug.cgi?id=184250
        <rdar://problem/39145092>

        Reviewed by Geoffrey Garen.

        The tracking types for touch events were only update on touchstart, which meant that event
        listeners added after the touchstart would always be treated as passive, even if explicitly
        setting passive to false.

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

2018-05-15  Per Arne Vollan  <pvollan@apple.com>

        Pause display links when window is not visible.
        https://bugs.webkit.org/show_bug.cgi?id=185627
        <rdar://problem/39401106>

        Reviewed by Simon Fraser.

        Pause/resume display links created in the UI process when the window is hidden/shown.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::pause):
        (WebKit::DisplayLink::resume):
        * UIProcess/mac/DisplayLink.h:

2018-05-15  Dean Jackson  <dino@apple.com>

        Provide UIView and UIImage for zoom transition
        https://bugs.webkit.org/show_bug.cgi?id=185655
        <rdar://problem/40267224>

        Reviewed by Antoine Quint.

        Provide a UIView* for the frameForPreviewItem to use as a source view.
        Also implement the transitionImageForPreviewItem delegate, even though
        we're returning nil.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDelegate previewController:frameForPreviewItem:inSourceView:]):
        (-[_WKPreviewControllerDelegate previewController:transitionImageForPreviewItem:contentRect:]):

2018-05-15  Daniel Bates  <dabates@apple.com>

        Fix the Apple Internal build

        Make a similar change to WebKit as I did for LegacyWebKit in r231777. See <rdar://problem/40237873> for more details.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController enterFullScreen:]):
        (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
        (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
        (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]):

2018-05-15  Megan Gardner  <megan_gardner@apple.com>

        Clear selections from web content with single tap
        https://bugs.webkit.org/show_bug.cgi?id=185634

        Reviewed by Tim Horton.
        
        With the switch to the single text selection assistant, we were not correctly clearing the selection when a
        single tap happened.

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

2018-05-15  Antoine Quint  <graouts@apple.com>

        [Web Animations] Expose Web Animations CSS integration as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=185647

        Reviewed by Dean Jackson.

        Rename the Web Animations CSS integration flag.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebAnimationsCSSIntegrationEnabled):
        (WKPreferencesGetWebAnimationsCSSIntegrationEnabled):
        (WKPreferencesSetCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): Deleted.
        (WKPreferencesGetCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setWebAnimationsCSSIntegrationEnabled:]):
        (-[WKPreferences _webAnimationsCSSIntegrationEnabled]):
        (-[WKPreferences _setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled:]): Deleted.
        (-[WKPreferences _cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        (WebKit::InjectedBundle::setWebAnimationsCSSIntegrationEnabled):
        (WebKit::InjectedBundle::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): Deleted.
        * WebProcess/InjectedBundle/InjectedBundle.h:

2018-05-15  Dean Jackson  <dino@apple.com>

        Update animation when presenting QuickLook
        https://bugs.webkit.org/show_bug.cgi?id=185648
        <rdar://problem/39652624>

        Reviewed by Antoine Quint.

        Implement the QuickLook delegate on _WKPreviewControllerDelegate that
        produces a zoom-like animation when the QLPreviewController appears.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDelegate previewController:frameForPreviewItem:inSourceView:]):
        * UIProcess/SystemPreviewController.h: Add a reference back to the page, so that
        the delegate implementation can access the presentingViewController.
        (WebKit::SystemPreviewController::page):

2018-05-14  Dean Jackson  <dino@apple.com>

        Download and present System Preview
        https://bugs.webkit.org/show_bug.cgi?id=185459
        <rdar://problem/40079228>

        Reviewed by Tim Horton.

        Extend DownloadClient so that it can handle the case where
        the download was triggered by a System Preview. In this situation
        the result (and progress) are piped into QuickLook via the SystemPreviewController.

        The DownloadProxy class is also extended to handle the destination
        filename and the size of the content.

        Lastly, SystemPreviewController is updated to have a start(), show()
        and cancel() interface, and no longer adjusts page navigation.

        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm: Handle the SystemPreview case, which
        doesn't have a download delegate, but instead needs to communicate with
        the SystemPreviewController, if one exists.
        (WebKit::DownloadClient::didStart):
        (WebKit::DownloadClient::didReceiveResponse):
        (WebKit::DownloadClient::didReceiveData):
        (WebKit::DownloadClient::didCreateDestination):
        (WebKit::DownloadClient::processDidCrash):
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        (WebKit::DownloadClient::didFinish):
        (WebKit::DownloadClient::didFail):
        (WebKit::DownloadClient::didCancel):
        (WebKit::DownloadClient::releaseActivityToken):

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Implement the new API.
        (-[_WKPreviewControllerDataSource initWithMIMEType:]):
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
        (-[_WKPreviewControllerDataSource setProgress:]):
        (-[_WKPreviewControllerDataSource finish:]):
        (-[_WKPreviewControllerDelegate previewControllerDidDismiss:]):
        (WebKit::SystemPreviewController::start):
        (WebKit::SystemPreviewController::updateProgress):
        (WebKit::SystemPreviewController::finish):
        (WebKit::SystemPreviewController::cancel):
        (-[_WKPreviewControllerDataSource initWithURL:]): Deleted.
        (-[_WKPreviewControllerDelegate previewControllerWillDismiss:]): Deleted.
        (WebKit::SystemPreviewController::canPreview const): Deleted.
        (WebKit::SystemPreviewController::showPreview): Deleted.
        * UIProcess/Downloads/DownloadProxy.h: Track the destination file by name
        and size. Also expose a helper to identify system preview downloads.
        (WebKit::DownloadProxy::destinationFilename const):
        (WebKit::DownloadProxy::setDestinationFilename):
        (WebKit::DownloadProxy::expectedContentLength const):
        (WebKit::DownloadProxy::setExpectedContentLength):
        (WebKit::DownloadProxy::bytesLoaded const):
        (WebKit::DownloadProxy::setBytesLoaded):
        (WebKit::DownloadProxy::isSystemPreviewDownload const):

        * UIProcess/SystemPreviewController.cpp: New API.
        (WebKit::SystemPreviewController::canPreview const):
        (WebKit::SystemPreviewController::sendPageBack): Deleted.
        (WebKit::SystemPreviewController::showPreview): Deleted.
        * UIProcess/SystemPreviewController.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_configurationPreferenceValues):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:

2018-05-14  Brady Eidson  <beidson@apple.com>

        Add an API test to guard against regressions while re-entering setDefersLoading:.
        <rdar://problem/37033737> and https://bugs.webkit.org/show_bug.cgi?id=185630

        Reviewed by Chris Dumez.

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

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

2018-05-14  Tim Horton  <timothy_horton@apple.com>

        Use the system font by default in extra zoom mode
        https://bugs.webkit.org/show_bug.cgi?id=185638
        <rdar://problem/40230277>

        Reviewed by Wenson Hsieh.

        * Shared/WebPreferencesDefaultValues.h:

2018-05-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r231755.

        Change is not correct

        Reverted changeset:

        "-Wmemset-elt-size warning in LibWebRTCSocket constructor"
        https://bugs.webkit.org/show_bug.cgi?id=185555
        https://trac.webkit.org/changeset/231755

2018-05-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] Google search results are excessively zoomed in
        https://bugs.webkit.org/show_bug.cgi?id=185347
        <rdar://problem/39999778>

        Reviewed by Tim Horton.

        Adds a new experimental feature for the "disabled-adaptations" meta tag, and adds plumbing in WebKit to
        propagate disabled adaptation changes to the ViewportConfiguration. The experimental feature is on by default in
        extra zoom mode.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::dispatchDisabledAdaptationsDidChange const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::disabledAdaptationsDidChange):
        * WebProcess/WebPage/WebPage.h:

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

        Overly aggressive timer throttling in service workers
        https://bugs.webkit.org/show_bug.cgi?id=185575
        <rdar://problem/40219038>

        Reviewed by Geoff Garen.

        After ~30 seconds, the system would put the service worker process in "App Nap",
        causing its timers to get aggressively throttled. This happens because the
        service worker processes are WebProcesses that have no visible WebPages.

        To address the issue, we now disable process suppression for all service worker
        processes. This causes those processes to construct a UserActivity which prevents
        App Nap.

        This patch also refactors the code a bit to avoid duplication. The ProcessSuppression
        suppression logic in now all on ChildProcessProxy / ChildProcess.

        * NetworkProcess/NetworkProcess.messages.in:
        * PluginProcess/PluginProcess.messages.in:
        * Shared/ChildProcess.messages.in:
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::setProcessSuppressionEnabled):
        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/mac/NetworkProcessProxyMac.mm: Removed.
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::didFinishLaunching):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebProcessProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebProcess.messages.in:

2018-05-14  Andy Estes  <aestes@apple.com>

        [Wi-Fi Assertions] Allow clients to specify a context identifier
        https://bugs.webkit.org/show_bug.cgi?id=185620
        <rdar://problem/39915196>

        Reviewed by Brady Eidson.

        Added an SPI on _WKProcessPoolConfiguration that allows clients to specify a
        context identifier.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration wirelessContextIdentifier]):
        (-[_WKProcessPoolConfiguration setWirelessContextIdentifier:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2018-05-11  Brian Burg  <bburg@apple.com>

        Web Automation: Automation.getBrowsingContext returns window origin that differs from window.screenX/Y
        https://bugs.webkit.org/show_bug.cgi?id=185571
        <rdar://problem/40180785>

        Reviewed by Timothy Hatcher.

        This code path was refactored to use completion handlers. It seems that the window.screenX/Y
        code path converts back to user coordinates but the WebDriver code path does not. Make them
        consistent since that is how it is spec'd and tested.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getWindowFrameWithCallback):
        Convert the window frame to user coordinate space so it's the same as window.screenY.

2018-05-14  Brian Burg  <bburg@apple.com>

        WebDriver: W3C test case actions/key.py::test_lone_keyup_sends_no_events is failing
        https://bugs.webkit.org/show_bug.cgi?id=185577
        <rdar://problem/40185478>

        Reviewed by Timothy Hatcher.

        This test is failing because it expects Release Actions to not emit any
        events if nothing has changed from the initial state. Because the two code paths
        for creating empty states don't actually produce the same empty state, a difference
        in location was detected between the two empty states. This generates a mousemove.

        To fix this, unify the code that creates an empty state. For mouse input sources, always
        initialize the location to (0, 0) so that the mouse input source always has
        a location that is valid to click at.

        * UIProcess/Automation/SimulatedInputDispatcher.h:
        Extract the type enum out of the class to avoid circular definitions of
        SimulatedInputSource and SimulatedInputSourceState.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputSourceState::emptyStateForSourceType):
        Take the input source type when generating an empty state. We always want location
        set for a mouse input source, but not set it for other input sources like keys.

        (WebKit::SimulatedInputKeyFrame::keyFrameToResetInputSources):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        (WebKit::SimulatedInputSource::create):
        (WebKit::SimulatedInputSource::SimulatedInputSource):
        (WebKit::SimulatedInputSourceState::emptyState): Deleted.
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::WebAutomationSession):
        (WebKit::WebAutomationSession::inputSourceForType const):
        (WebKit::simulatedInputSourceTypeFromProtocolSourceType):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Automation/WebAutomationSession.h:

2018-05-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        -Wmemset-elt-size warning in LibWebRTCSocket constructor
        https://bugs.webkit.org/show_bug.cgi?id=185555

        Reviewed by Youenn Fablet.

        Add missing multiplication.

        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::LibWebRTCSocket):

2018-05-14  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] REGRESSION(r231170) Build broken with Clang 5.0
        https://bugs.webkit.org/show_bug.cgi?id=185198

        Reviewed by Michael Catanzaro.

        * Shared/RTCNetwork.h: With std::optional forward declaration gone,
        explicitly include the WTF Optional.h header.

2018-05-13  Dean Jackson  <dino@apple.com>

        WebKit2_Sim-7606.1.17.4 introduced dep cycle
        https://bugs.webkit.org/show_bug.cgi?id=185588
        <rdar://problem/40196581>

        Reviewed by Tim Horton.

        Soft link AssetViewer.framework to avoid a dependency cycle.

        * Configurations/WebKit.xcconfig:
        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):

2018-05-11  Daniel Bates  <dabates@apple.com>

        X-Frame-Options: SAMEORIGIN needs to check all ancestor frames
        https://bugs.webkit.org/show_bug.cgi?id=185567
        <rdar://problem/40175008>

        Reviewed by Brent Fulgham.

        Change the behavior of "X-Frame-Options: SAMEORIGIN" to ensure that all ancestors frames
        are same-origin with the document that delivered this header. This prevents an intermediary
        malicious frame from clickjacking a child frame whose document is same-origin with the top-
        level frame. It also makes the behavior of X-Frame-Options in WebKit more closely match
        the behavior of X-Frame-Options in other browsers, including Chrome and Firefox.
        
        Currently a document delivered with "X-Frame-Options: SAMEORIGIN" must only be same-origin
        with the top-level frame's document in order to be displayed. This prevents clickjacking by
        a malicious page that embeds a page delivered with "X-Frame-Options: SAMEORIGIN". However,
        it does not protect against clickjacking of the "X-Frame-Options: SAMEORIGIN" page (victim)
        if embedded by an intermediate malicious iframe, say a "rogue ad", that was embedded in a
        document same origin with the victim page. We should protect against such attacks.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForXFrameOptions):

2018-05-11  Dean Jackson  <dino@apple.com>

        WKWebViewContentProvider should know what MIME type it was created to handle
        https://bugs.webkit.org/show_bug.cgi?id=185574
        <rdar://problem/40183049>

        Reviewed by Tim Horton.

        Pass the MIME type of the downloaded asset into the WKWebViewContentProvider's
        init method, so it can choose to do something based on that information. The
        PDF and LegacyPDF views don't care because they, clearly, only handle PDF. But
        a WKSystemPreviewView can handle multiple types.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setHasCustomContentView:loadedMIMEType:]): Send the MIME type on
        to the WKWebViewContentProvider.
        * UIProcess/Cocoa/WKWebViewContentProvider.h: Add a new parameter to web_initWithFrame.
        * UIProcess/ios/WKLegacyPDFView.mm:
        (-[WKLegacyPDFView web_initWithFrame:webView:mimeType:]):
        (-[WKLegacyPDFView web_initWithFrame:webView:]): Deleted.
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_initWithFrame:webView:mimeType:]):
        (-[WKPDFView web_initWithFrame:webView:]): Deleted.
        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]):
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): Actually use
        the MIME type to tell QuickLook what it will be getting, rather than basing it on
        the file extension.
        (-[WKSystemPreviewView web_initWithFrame:webView:]): Deleted.

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

        Allow the WebContent process to read global ViewBridge preferences
        https://bugs.webkit.org/show_bug.cgi?id=185569
        <rdar://problem/40164339>

        Reviewed by Eric Carlson.

        Allow reads of the global /Library/Preferences/com.apple.ViewBridge.plist preference file.

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

2018-05-11  Megan Gardner  <megan_gardner@apple.com>

        Cleanup canPerformActionForWebView in relation to the webSelectionAssistant being removed
        https://bugs.webkit.org/show_bug.cgi?id=185536

        Reviewed by Tim Horton.
        
        The _webSelectionAssistant is now always nil, therefor many of these checks are unnecessary.
        Remove the check for a webSelection and clean up the logic surrounding those checks.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):

2018-05-11  Brady Eidson  <beidson@apple.com>

        Followup to: Make sure history navigations reuse the existing process when necessary.
        https://bugs.webkit.org/show_bug.cgi?id=185532

        Reviewed by Andy Estes.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal): When re-using the same process,
          don't change the policy action.

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

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

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml: Added ServerTimingEnabled.
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesGetServerTimingEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h: WK_EXPORT for WKPreferencesSetServerTimingEnabled.
        * WebProcess/Storage/WebSWContextManagerConnection.cpp: Call setServerTimingEnabled.

2018-05-11  Antti Koivisto  <antti@apple.com>

        Network process should not stat() all cache files on startup to find their sizes
        https://bugs.webkit.org/show_bug.cgi?id=185542
        <rdar://problem/40092953>

        Reviewed by Chris Dumez.

        This is done to compute how much disk space a cache is using. While the operation happens
        in a background priority thread it is still quite a bit of work.

        Large bodies are saved in separate blob files so record file sizes are capped. We can avoid work by
        estimating their size instead of counting it exactly.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::estimateRecordsSize):
        (WebKit::NetworkCache::Storage::synchronize):

            Use size estimation if blob storage is in use.
            Remove the code that would delete empty files. Normal cache shrinking handles this.

        (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

2018-05-11  Brady Eidson  <beidson@apple.com>

        Make sure history navigations reuse the existing process when necessary.
        <rdar://problem/39746516> and https://bugs.webkit.org/show_bug.cgi?id=185532

        Reviewed by Ryosuke Niwa.

        If a view navigates to either a data: or blob: URL, it reuses the existing process.
 
        In such cases we need to also ensure that history navigations back will also reuse the existing process.

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

        * UIProcess/API/APINavigation.h:
        (API::Navigation::setTargetItem):

        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration pageCacheEnabled]):
        (-[_WKProcessPoolConfiguration setPageCacheEnabled:]):

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal): If the current and target back/forward items both
          came from the same process, then reuse the existing process.

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

2018-05-10  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r231057): Encrypted media content playback failures
        https://bugs.webkit.org/show_bug.cgi?id=185537
        <rdar://problem/40038478>

        Reviewed by Eric Carlson.

        Put access to the SecurityServer back in the sandbox so we can validate the
        signatures of media encoder/decoders.

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

2018-05-11  Youenn Fablet  <youenn@apple.com>

        NetworkCORSPreflightChecker should proceed when having a ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested challenge
        https://bugs.webkit.org/show_bug.cgi?id=185522
        <rdar://problem/39987152>

        Reviewed by Brent Fulgham.

        In case of such challenge, refuse to proceed with authentication since preflight is not using credentials.
        Previously, we were failing right away which is not right in case preflight is the request triggering the connection.

        Manually tested.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):

2018-05-10  Daniel Bates  <dabates@apple.com>

        Use PlatformStrategies to switch between WebKit and WebKitLegacy checking of CSP frame-ancestors and X-Frame-Options
        https://bugs.webkit.org/show_bug.cgi?id=185412

        Reviewed by Ryosuke Niwa.

        Update code for renaming and write in terms of WebLoaderStrategy::shouldPerformSecurityChecks()
        instead of explicitly querying RuntimeEnabledFeatures::sharedFeatures().restrictedHTTPResponseAccess().

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::preconnectTo):
        (WebKit::WebLoaderStrategy::shouldPerformSecurityChecks const):
        (WebKit::WebLoaderStrategy::havePerformedSecurityChecks const):
        (WebKit::WebLoaderStrategy::isDoingLoadingSecurityChecks const): Deleted.
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/WebPage/WebPage.cpp:

2018-05-10  Timothy Horton  <timothy_horton@apple.com>

        Fix the build after r231393
        ​https://bugs.webkit.org/show_bug.cgi?id=185519
        <rdar://problem/40131741>

        * Configurations/WebKit.xcconfig:

2018-05-10  John Wilander  <wilander@apple.com>

        Storage Access API: Extend lifetime of cookies on successful user approval
        https://bugs.webkit.org/show_bug.cgi?id=185534
        <rdar://problem/40064547>

        Reviewed by Brent Fulgham.

        * UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
        (WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
            Picks up the experimental feature flag.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInternal):
            Now updates the domain's user interaction timestamp if the user was
            prompted for this access.
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-05-10  Chris Dumez  <cdumez@apple.com>

        [iOS] Release page load process assertion if the screen is locked
        https://bugs.webkit.org/show_bug.cgi?id=185333

        Reviewed by Geoff Garen.

        We normally take a background process assertion during page loads to allow them to complete
        even if the tab / app is backgrounded. We should however avoid doing so when the backgrounding
        is caused by the screen locking. Keeping the process assertion in this case would prevent the
        whole device from sleeping longer than it should, thus negatively impacting power.

        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::releaseNetworkActivityToken):
        (WebKit::NavigationState::didChangeIsLoading):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::applicationDidEnterBackground):

2018-05-10  Megan Gardner  <megan_gardner@apple.com>

        Remove Unused Chinese/Japanese Reanalyze code
        https://bugs.webkit.org/show_bug.cgi?id=185529

        Reviewed by Wenson Hsieh.
        
        The code for this has actually been completely removed from UIKit. This is unreachable 
        dead code that should be removed if just for cleanliness. 

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView _reanalyzeForWebView:]): Deleted.

2018-05-10  Chris Dumez  <cdumez@apple.com>

        [iOS] Apps that are not visible may not get suspended if they trigger page loads while in the background
        https://bugs.webkit.org/show_bug.cgi?id=185318

        Reviewed by Geoffrey Garen.

        Whenever there is a page load going on, we take a background process assertion to delay process
        suspension until this load completes. However, there is also a 3 seconds grace period after
        a load is complete to allow the app to trigger a new load shortly after. This grace period was
        introduced to support use cases where a visible app does loads in an offscreen view. However,
        it can be abused by apps running in the background as they could trigger new page loads while
        in the background to delay process suspension. This patch tightens the policy so that only
        apps that are currently visible get to use this grace period. Apps that are in the background
        get to finish their current load and will then get suspended.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):

2018-05-10  Chris Dumez  <cdumez@apple.com>

        'Cross-Origin-Options header implementation follow-up
        https://bugs.webkit.org/show_bug.cgi?id=185520

        Reviewed by Ryosuke Niwa.

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

2018-05-10  Per Arne Vollan  <pvollan@apple.com>

        Drop-down Control borders missing.
        https://bugs.webkit.org/show_bug.cgi?id=185500
        <rdar://problem/40093461>

        Reviewed by Brent Fulgham.

        Open sandbox for reading of some files in temp folder.

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

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

        [MediaStream, iOS] Don't check authorizationStatusForMediaType when using mock capture devices
        https://bugs.webkit.org/show_bug.cgi?id=185516
        <rdar://problem/36328191>

        Reviewed by Youenn Fablet.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Don't check
        +[AVCaptureDevice authorizationStatusForMediaType:] when using mock capture devices.

2018-05-10  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION(r230323): UIProcess needs to notify WebContent process of Accessibility setting changes
        https://bugs.webkit.org/show_bug.cgi?id=185515
        <rdar://problem/39627764>

        Reviewed by Chris Fleizach.

        The UIProcess needs to register for relevant Accessibility preference updates so that it can notify the
        WebContent processes that screen properties have changed.

        This is represented by NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification.

        Tested manually with the Accessibility preferences pane.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::registerNotificationObservers): Add notification observer. When the notification
        is received, call 'screenPropertiesStateChanged' to message the information to the WebContent processes.
        (WebKit::WebProcessPool::unregisterNotificationObservers): Clean up observer.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::screenPropertiesStateChanged): Added helper function.
        * UIProcess/WebProcessPool.h:

2018-05-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement advance user interactions
        https://bugs.webkit.org/show_bug.cgi?id=174616

        Reviewed by Brian Burg.

        Handle origin in case of mouse move transitions.

        * UIProcess/Automation/Automation.json: Add MouseMoveOrigin enum and pass it as parameter of InputSourceState
        together with optional node handle. Also pass the frame handle to performInteractionSequence command to find the
        node in the current browsing context.
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputKeyFrame::keyFrameToResetInputSources): Ensure we reset the location.
        (WebKit::SimulatedInputDispatcher::resolveLocation): Helper to resolve destination location based on current
        location and mouse move origin.
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState): Use resolveLocation() in mouse transitions.
        (WebKit::SimulatedInputDispatcher::run): Receive and save the frame ID.
        (WebKit::SimulatedInputDispatcher::finishDispatching): Reset the frame ID.
        * UIProcess/Automation/SimulatedInputDispatcher.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::computeElementLayout): Use even numbers for the callback ID to not conflict with
        viewportInViewCenterPointOfElement() callbacks.
        (WebKit::WebAutomationSession::didComputeElementLayout): Handle computeElementLayout() or
        viewportInViewCenterPointOfElement() requests by calling the right callback depending on whether the ID is odd
        or even number.
        (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement): Send ComputeElementLayout message to the
        WebProcess using odd numbers for the callback ID to not conflict with computeElementLayout() callbacks.
        (WebKit::WebAutomationSession::performInteractionSequence): Handle the mouse origin and element handle.
        (WebKit::WebAutomationSession::cancelInteractionSequence): Pass the frame ID to the input dispatcher.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSessionMacros.h:

2018-05-09  Tim Horton  <timothy_horton@apple.com>

        Remove the unused HAVE_OS_ACTIVITY
        https://bugs.webkit.org/show_bug.cgi?id=185501

        Reviewed by Wenson Hsieh.

        * config.h:

2018-05-09  Chris Dumez  <cdumez@apple.com>

        Add initial support for 'Cross-Origin-Options' HTTP response header
        https://bugs.webkit.org/show_bug.cgi?id=184996
        <rdar://problem/39664620>

        Reviewed by Geoff Garen.

        * Shared/WebPreferences.yaml:
        Add this as an experimental feature, on by default.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::frameBecameRemote):
        Make sure we pass the cross-origin options from the local Window
        to the remote one when transitioning.

2018-05-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] fast/viewport/extrazoom/viewport-change-min-device-width.html sometimes fails
        https://bugs.webkit.org/show_bug.cgi?id=185490
        <rdar://problem/40097629>

        Reviewed by Tim Horton.

        This test is currently flaky due to incorrect logic when computing the unobscured content rect, in the slice of
        time after a frame load has been committed, and before the first visible content rect update from the UI process
        after the frame load has been committed.

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

        In the case where !m_hasReceivedVisibleContentRectsAfterDidCommitLoad, we try to set the unobscured content size
        to be the view size divided by the initial scale. However, in extra zoom mode, `ViewportConfiguration`'s
        `minimumLayoutSize()` is the layout size, which is larger than the size of the view by default, so dividing this
        by the initial scale yields a bogus value. Instead, use `viewLayoutSize()` instead.

        (WebKit::WebPage::updateViewportSizeForCSSViewportUnits):

        We also try to divide the view size by the initial scale when computing the effective viewport size for `vw` and
        `vh`. Additionally, fix the misleading name of a variable (largestUnobscuredRect) that stores a size.

2018-05-09  Brent Fulgham  <bfulgham@apple.com>

        Restrict unarchiving of bundle parameters to a set of known classes
        https://bugs.webkit.org/show_bug.cgi?id=185489
        <rdar://problem/21912401>

        Reviewed by Ryosuke Niwa.

        Stop accepting anything derived from NSObject, and instead only agree to unarchive objects
        from a set of things we actually pass as InjectedBundle parameters.

        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::setBundleParameter):

2018-05-09  Richard Houle  <rhoule@apple.com>

        [Cocoa] Some fields are not identified as [WKWebProcessPlugInNodeHandle isTextField]
        https://bugs.webkit.org/show_bug.cgi?id=185260
        <rdar://problem/39290394>

        INPUT element are not considered to be text fields when
        calling -[WKWebProcessPlugInNodeHandle isTextField]
        when they are of type number.

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::InjectedBundleNodeHandle::isTextField const):

2018-05-09  Youenn Fablet  <youenn@apple.com>

        Allow WebResourceLoader to cancel a load served from a service worker
        https://bugs.webkit.org/show_bug.cgi?id=185274

        Reviewed by Chris Dumez.

        Use FetchIdentifier instead of uint64_t.
        Add IPC support for cancelling a fetch from WebProcess to service worker process.
        Ask service worker process to cancel the fetch when its corresponding WebResourceLoader is cancelled.
        No change of behavior as once a WebResourceLoader is cancelled, any related IPC is not processed.
        A follow-up patch should try to cancel the FetchResponse load, meaning to either cancel the network load
        or to abort reading the readable stream.

        * Scripts/webkit/messages.py:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::cancelFetch):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didReceiveFetchFormData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::didFailFetch):
        (WebKit::WebSWServerConnection::didNotHandleFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFailFetch):
        (WebKit::StorageProcess::didNotHandleFetch):
        (WebKit::StorageProcess::didReceiveFetchResponse):
        (WebKit::StorageProcess::didReceiveFetchData):
        (WebKit::StorageProcess::didReceiveFetchFormData):
        (WebKit::StorageProcess::didFinishFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::remove):
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::create):
        (WebKit::ServiceWorkerClientFetch::ServiceWorkerClientFetch):
        (WebKit::ServiceWorkerClientFetch::start):
        (WebKit::ServiceWorkerClientFetch::cancel):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        (WebKit::WebSWClientConnection::cancelFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::cancelFetch):
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::cancel):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):
        (WebKit::WebServiceWorkerProvider::cancelFetch):
        (WebKit::WebServiceWorkerProvider::fetchFinished):
        * WebProcess/Storage/WebServiceWorkerProvider.h:

2018-05-09  Andy Estes  <aestes@apple.com>

        [iOS] Consider the annotation bounds when positioning action sheets near long-pressed PDF links
        https://bugs.webkit.org/show_bug.cgi?id=185472
        <rdar://problem/39967092>

        Reviewed by Daniel Bates.

        Adopted new PDFHostViewControllerDelegate methods that include annotation rects
        when URLs and page indices are long-pressed. This allows us to avoid obscuring
        annotations when positioning action sheet popovers.

        We also no longer need to convert the press location into host view coordinate
        space, as PDFKit now does that for us.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _showActionSheetForURL:atLocation:withAnnotationRect:]):
        (-[WKPDFView pdfHostViewController:didLongPressURL:atLocation:withAnnotationRect:]):
        (-[WKPDFView pdfHostViewController:didLongPressPageIndex:atLocation:withAnnotationRect:]):
        (-[WKPDFView _showActionSheetForURL:atLocation:]): Deleted.
        (-[WKPDFView pdfHostViewController:didLongPressURL:atLocation:]): Deleted.
        (-[WKPDFView pdfHostViewController:didLongPressPageIndex:atLocation:]): Deleted.

2018-05-09  Andy Estes  <aestes@apple.com>

        [iOS] Tell PDFHostViewController when animated resizes begin and end
        https://bugs.webkit.org/show_bug.cgi?id=185477
        <rdar://problem/39875372>

        Reviewed by Anders Carlsson.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        (-[WKWebView _endAnimatedResize]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_beginAnimatedResize]):
        (-[WKPDFView web_endAnimatedResize]):

2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.1 release.

        * wpe/NEWS: Added. Add release notes for 2.21.1.

2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Build cleanly with GCC 8 and ICU 60
        https://bugs.webkit.org/show_bug.cgi?id=185462

        Reviewed by Carlos Alberto Lopez Perez.

        * Platform/IPC/glib/GSocketMonitor.cpp:
        (IPC::GSocketMonitor::start): Silence -Wcast-function-type warning.
        * Shared/API/glib/WebKitContextMenu.cpp:
        (webkit_context_menu_new_with_items): Ditto.

2018-05-08  Sihui Liu  <sihui_liu@apple.com>

        Adopt new async _savecookies SPI for keeping networking process active during flushing cookies
        https://bugs.webkit.org/show_bug.cgi?id=185261
        <rdar://problem/37214391>

        Reviewed by Chris Dumez.

        By adopting new async SPI _savecookies, we can keep networking process active(not suspended)
        until cookies are fully synced to disk with process assertion.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didSyncAllCookies):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::syncAllCookies):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::syncAllCookies):
        (WebKit::NetworkProcessProxy::didSyncAllCookies):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::syncNetworkProcessCookies):

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

        Set colorspace in the PDF plugin.
        https://bugs.webkit.org/show_bug.cgi?id=185445
        <rdar://problem/40030981>

        Reviewed by Simon Fraser.

        * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::PDFPlugin):

2018-05-08  Megan Gardner  <megan_gardner@apple.com>

        Don't clear selection until we are actually interacting with a Node.
        https://bugs.webkit.org/show_bug.cgi?id=185455

        Reviewed by Wenson Hsieh.
        
        The presence of TextInteractionAssistant should not be used as a proxy for it we are actually editing content.
        We need to check to see if we have an active node, and then we should clear the selection.

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

2018-05-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r231486.

        Caused service worker LayoutTest failures on macOS Debug WK2.

        Reverted changeset:

        "Allow WebResourceLoader to cancel a load served from a
        service worker"
        https://bugs.webkit.org/show_bug.cgi?id=185274
        https://trac.webkit.org/changeset/231486

2018-05-08  Andy Estes  <aestes@apple.com>

        [iOS] _WKWebViewPrintFormatter should return a page count of 0 for PDF documents that do not allow printing
        https://bugs.webkit.org/show_bug.cgi?id=185133

        Reviewed by Andreas Kling.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView _ensureDocumentForPrinting]):
        (-[WKPDFView _wk_pageCountForPrintFormatter:]):
        (-[WKPDFView _wk_printedDocument]):

2018-05-08  Andy Estes  <aestes@apple.com>

        [iOS] WKPDFView remains in the view hierarchy after navigating away
        https://bugs.webkit.org/show_bug.cgi?id=185449
        <rdar://problem/39693469>

        Reviewed by Tim Horton.

        WKPDFView removes the PDF host view from the view hierarchy in its -dealloc
        method, and relies on WKWebView releasing its last reference in
        -_setHasCustomContentView:loadedMIMEType: when the user navigates.

        However, WKWPDFView was capturing a strong reference to self in the block passed
        to +[PDFHostViewController createHostView:forExtensionIdentifier:], and PDFKit
        (actually UIKit) is retaining this block beyond its being called. This results in
        the PDF host view remaining as a child of the WKScrollView even after the user
        navigates to another page.

        Changed the aforementioned block to a lambda that captures a weak reference to
        self to prevent WKPDFView from outliving the current navigation.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView retain]):
        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):

2018-05-08  John Wilander  <wilander@apple.com>

        Storage Access API: Make user opt-in sticky
        https://bugs.webkit.org/show_bug.cgi?id=185454
        <rdar://problem/40003946>

        Reviewed by Alex Christensen.

        This patch persists the user's choice to opt-in to access under specific domains.
        Such storage access should age out with the accessing domain's cookies and website
        data. The opt-in prompt is still an experimental feature.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInternal):
        (WebKit::WebResourceLoadStatisticsStore::hasUserGrantedStorageAccessThroughPrompt const):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUnexpiredRecentUserInteraction const):
        * UIProcess/WebResourceLoadStatisticsStore.h:

2018-05-08  Daniel Bates  <dabates@apple.com>

        Do not apply X-Frame-Options and CSP frame-ancestors to Quick Look-applicable responses in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=185442
        <rdar://problem/40067209>

        Reviewed by Andy Estes.

        Just as we exempt responses in WebContent process that will be handled by Quick Look from the Content
        Security Policy frame-ancestors directive and X-Frame-Options checking we need to do the same when
        such checks are performed in NetworkProcess following r231479.

        HTTP responses that will be previewed using Quick Look are not considered web pages and are subject
        to the security model for Quick Look documents. That is, they are exempt from Content Security Policy
        and X-Frame-Options processing.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):

2018-05-08  Brian Burg  <bburg@apple.com>

        REGRESSION(r230743): Mousemove events are not coalesced properly, mousemove/drag is very laggy
        https://bugs.webkit.org/show_bug.cgi?id=185425
        <rdar://problem/39323336>

        Reviewed by Simon Fraser.

        When mousemove events come in faster than they can be processed, we should coalesce
        pending mousemoves that have not yet been sent to WebProcess. This has the effect of
        processing the most recent mousemove location, which is the old behavior that regressed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleMouseEvent):
        If there is >1 event in the mouse queue, then the first one is being processed by WebProcess
        and the second one is eligible for coalescing. Replace it if the last event and new event
        are both mousemoves.

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

        The PDF context menu should not be created in the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=185401

        Reviewed by Tim Horton.

        Send a sync IPC message from the WebContent process to the UI process with the necessary context
        menu information when the menu is requested. The NSMenu will then be created and shown in the
        UI process. The reply will contain the selected menu item index.

        * Shared/mac/PDFContextMenu.h: Added.
        (WebKit::PDFContextMenuItem::encode const):
        (WebKit::PDFContextMenuItem::decode):
        (WebKit::PDFContextMenu::encode const):
        (WebKit::PDFContextMenu::decode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/WebPageProxyMac.mm:
        (-[WKPDFMenuTarget menuItem]):
        (-[WKPDFMenuTarget contextMenuAction:]):
        (WebKit::WebPageProxy::showPDFContextMenu):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::handleContextMenuEvent):

2018-05-08  Dean Jackson  <dino@apple.com>

        System Preview links should trigger a download
        https://bugs.webkit.org/show_bug.cgi?id=185439
        <rdar://problem/40065545>

        Reviewed by Jon Lee.

        Encode the new field identifying a system preview. And
        if you encounter such a resource request, trigger
        a download.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceRequest>::encode):
        (IPC::ArgumentCoder<ResourceRequest>::decode):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-05-08  John Wilander  <wilander@apple.com>

        Storage Access API: Add a request roundtrip to check whether prompting is needed
        https://bugs.webkit.org/show_bug.cgi?id=185368
        <rdar://problem/40011556>

        Reviewed by Alex Christensen and Youenn Fablet.

        This patch adds an enum WebKit::StorageAccessStatus to handle our three access
        states:
        - WebKit::StorageAccessStatus::CannotRequestAccess.
            This means the domain is blocked from cookie access.
        - WebKit::StorageAccessStatus::RequiresUserPrompt.
            This means that access has not been granted yet and a prompt is required.
        - WebKit::StorageAccessStatus::HasAccess.
            This either means that this domain does not need to ask for access,
            access was already granted, or access was granted now.

        If the call to WebResourceLoadStatisticsStore::requestStorageAccess() comes
        back as WebKit::StorageAccessStatus::RequiresUserPrompt, the WebPageProxy
        prompts the user and if the user said yes, calls a direct
        WebResourceLoadStatisticsStore::grantStorageAccess().

        Existing test cases pass because requestStorageAccessConfirm in WKPage.cpp
        does not have m_client.requestStorageAccessConfirm and thus returns true.

        * UIProcess/Network/NetworkProcessProxy.messages.in:
            Added a missing #endif.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccess):
            Here we now handle the various cases encoded in WebKit::StorageAccessStatus.
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
            Now covers the optional prompt case.
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInternal):
            Granting access is broken out to allow WebKit::WebPageProxy to call it
            directly.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):
            Piping through calls from from WebKit::WebResourceLoadStatisticsStore
            to WebKit::WebPageProxy.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-05-08  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r231376 and r231458.

        Caused some API tests failures on iOS

        Reverted changesets:

        "[iOS] Apps that are not visible may not get suspended if they
        trigger page loads while in the background"
        https://bugs.webkit.org/show_bug.cgi?id=185318
        https://trac.webkit.org/changeset/231376

        "[iOS] Release page load process assertion if the screen is
        locked"
        https://bugs.webkit.org/show_bug.cgi?id=185333
        https://trac.webkit.org/changeset/231458

2018-05-08  Dean Jackson  <dino@apple.com>

        Use thumbnails in System Previews
        https://bugs.webkit.org/show_bug.cgi?id=185397
        <rdar://problem/40039376>

        Reviewed by Jon Lee.

        A system preview that goes through the WKWebViewContentProvider will
        show a static thumbnail/snapshot of the item, rather than jumping
        directly to QuickLook.

        This means we have to link to the AssetViewer framework. That provides
        a ASVThumbnailView that will trigger QuickLook for us.

        * Configurations/WebKit.xcconfig: Link to AssetViewer.

        * UIProcess/ios/WKSystemPreviewView.h: Better macro use. Remove some unneeded protocols.
        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): Update this
        to use an ASVThumbnailView, when on the internal SDK (because it is private).
        (-[WKSystemPreviewView _layoutThumbnailView]): Use the content insets to put
        the thumbnail in the right place.
        (-[WKSystemPreviewView thumbnailView:wantsToPresentPreviewController:forItem:]):
        Delegate method.
        (-[WKSystemPreviewView web_contentView]):
        (-[WKSystemPreviewView web_computedContentInsetDidChange]):
        (-[WKSystemPreviewView numberOfPreviewItemsInPreviewController:]): Deleted.
        (-[WKSystemPreviewView previewController:previewItemAtIndex:]): Deleted.
        (-[WKSystemPreviewView previewControllerWillDismiss:]): Deleted.

2018-05-08  Youenn Fablet  <youenn@apple.com>

        Allow WebResourceLoader to cancel a load served from a service worker
        https://bugs.webkit.org/show_bug.cgi?id=185274

        Reviewed by Chris Dumez.

        Use FetchIdentifier instead of uint64_t.
        Add IPC support for cancelling a fetch from WebProcess to service worker process.
        Ask service worker process to cancel the fetch when its corresponding WebResourceLoader is cancelled.
        No change of behavior as once a WebResourceLoader is cancelled, any related IPC is not processed.
        A follow-up patch should try to cancel the FetchResponse load, meaning to either cancel the network load
        or to abort reading the readable stream.

        * Scripts/webkit/messages.py:
        * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::cancelFetch):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didReceiveFetchFormData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::didFailFetch):
        (WebKit::WebSWServerConnection::didNotHandleFetch):
        * StorageProcess/ServiceWorker/WebSWServerConnection.h:
        * StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didFailFetch):
        (WebKit::StorageProcess::didNotHandleFetch):
        (WebKit::StorageProcess::didReceiveFetchResponse):
        (WebKit::StorageProcess::didReceiveFetchData):
        (WebKit::StorageProcess::didReceiveFetchFormData):
        (WebKit::StorageProcess::didFinishFetch):
        * StorageProcess/StorageProcess.h:
        * StorageProcess/StorageProcess.messages.in:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::remove):
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::create):
        (WebKit::ServiceWorkerClientFetch::ServiceWorkerClientFetch):
        (WebKit::ServiceWorkerClientFetch::start):
        (WebKit::ServiceWorkerClientFetch::cancel):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        (WebKit::WebSWClientConnection::cancelFetch):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::cancelFetch):
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::cancel):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):
        (WebKit::WebServiceWorkerProvider::cancelFetch):
        (WebKit::WebServiceWorkerProvider::fetchFinished):
        * WebProcess/Storage/WebServiceWorkerProvider.h:

2018-05-08  Antti Koivisto  <antti@apple.com>

        Don't use mapped cache files in case of Class A/B protected app
        https://bugs.webkit.org/show_bug.cgi?id=185422
        <rdar://problem/34001688>

        Reviewed by Chris Dumez.

        Currently we don't use shared memory maps in these cases. This still leaves us open for crashes
        in the network process when the device is locked.

        This patch disables use of blob storage (mapped cache files) in apps that use class A/B protection.
        Normally we use blobs for resources > 16KB. Since use of shared memory is already disabled,
        the only optimization lost for these apps is body data deduplication.

        Any existing cache entries with blobs are ignored and deleted. New entries are created with
        body data inlined with the metadata.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::store):
        * NetworkProcess/cache/NetworkCache.h:
        (WebKit::NetworkCache::Cache::canUseSharedMemoryForBodyData const): Deleted.
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord const):

            Remove the code the prevented use of shared memory in these cases. Non-mapped Data objects
            are never shareable.

        (WebKit::NetworkCache::Entry::setNeedsValidation):
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        (WebKit::NetworkCache::canUseSharedMemoryForPath): Deleted.
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::Storage):
        (WebKit::NetworkCache::Storage::mayContainBlob const):
        (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):
        (WebKit::NetworkCache::shouldStoreBodyAsBlob): Deleted.
        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::canUseSharedMemoryForBodyData const): Deleted.

2018-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Add missing exit not included in r231298.

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

2018-05-07  Daniel Bates  <dabates@apple.com>

        Check X-Frame-Options and CSP frame-ancestors in network process
        https://bugs.webkit.org/show_bug.cgi?id=185410
        <rdar://problem/37733934>

        Reviewed by Ryosuke Niwa.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const): Always encode the frame ancestor origins.
        (WebKit::NetworkResourceLoadParameters::decode): Always decode the frame ancestor origins.
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForXFrameOptions): Added.
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions): Added.
        (WebKit::NetworkResourceLoader::didReceiveResponse): Check if the load needs to be interrupted due
        to a violation of the CSP frame-ancestors directive or X-Frame-Options. If there is a violation
        then stop the load.
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry): Ditto.
        (NetworkResourceLoader::addConsoleMessage): Added.
        (NetworkResourceLoader::sendCSPViolationReport): Added.
        * NetworkProcess/NetworkResourceLoader.h:
        * Scripts/webkit/messages.py: Teach the generator about data types MessageLevel and MessageSource
        as they are both defined in file JavaScriptCore/ConsoleTypes.h as opposed to independent headers.
        Also tell the generator that these types should not be forward declared so that we can use these
        types without their JSC:: prefix in WebPage.messages.in.
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage): Route WebPage messages to the appropriate
        web page.
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): Added message StopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied.
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied): Added.
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::addConsoleMessage):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addConsoleMessage): Added.
        (WebKit::WebPage::sendCSPViolationReport): Added.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in: Add messages AddConsoleMessage and SendCSPViolationReport
        for adding a console message to Web Inspector and sending a CSP report, respectively.

2018-05-07  Daniel Bates  <dabates@apple.com>

        Abstract logic to log console messages and send CSP violation reports into a client
        https://bugs.webkit.org/show_bug.cgi?id=185393
        <rdar://problem/40036053>

        Reviewed by Brent Fulgham.

        For now, build a URL from the source origin associated with the NetworkResourceLoader
        and pass this to the ContentSecurityPolicy constructor.

        Additionally, make NetworkLoadChecker::contentSecurityPolicy() non-const since it returns
        a non-const pointer to a ContentSecurityPolicy object; => callers can mutate this object
        right from under NetworkLoadChecker. Making this non-const makes this clear to a reader.
        Also remove the mutable keyword from the definition of NetworkLoadChecker::m_contentSecurityPolicy.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::contentSecurityPolicy):
        (WebKit::NetworkLoadChecker::contentSecurityPolicy const): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:

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

        WebResourceLoadStatisticsStore::requestStorageAccess should call its completion handler on the main thread
        https://bugs.webkit.org/show_bug.cgi?id=185403

        Reviewed by Brent Fulgham.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):

2018-05-07  Chris Dumez  <cdumez@apple.com>

        [iOS] Release page load process assertion if the screen is locked
        https://bugs.webkit.org/show_bug.cgi?id=185333

        Reviewed by Geoffrey Garen.

        We normally take a background process assertion during page loads to allow them to complete
        even if the tab / app is backgrounded. We should however avoid doing so when the backgrounding
        is caused by the screen locking. Keeping the process assertion in this case would prevent the
        whole device from sleeping longer than it should, thus negatively impacting power.

        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::releaseNetworkActivityToken):
        (WebKit::NavigationState::didChangeIsLoading):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::applicationDidEnterBackground):

2018-05-07  Brent Fulgham  <bfulgham@apple.com>

        Add experimental feature to prompt for Storage Access API use
        https://bugs.webkit.org/show_bug.cgi?id=185335
        <rdar://problem/39994649>

        Reviewed by Alex Christensen and Youenn Fablet.

        Create a new experimental feature that gates the ability of WebKit clients to prompt the user when
        Storage Access API is invoked.

        Currently this feature doesn't have any user-visible impact.

        * Shared/API/APIObject.h:
        * Shared/API/c/WKBase.h:
        * Shared/WebPreferences.yaml:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::requestStorageAccessConfirm):
        * UIProcess/API/C/WKPage.cpp:
        (WebKit::RequestStorageAccessConfirmResultListener::create):
        (WebKit::RequestStorageAccessConfirmResultListener::~RequestStorageAccessConfirmResultListener):
        (WebKit::RequestStorageAccessConfirmResultListener::call):
        (WebKit::RequestStorageAccessConfirmResultListener::RequestStorageAccessConfirmResultListener):
        (WKPageRequestStorageAccessConfirmResultListenerGetTypeID):
        (WKPageRequestStorageAccessConfirmResultListenerCall):
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _storageAccessPromptsEnabled]):
        (-[WKPreferences _setStorageAccessPromptsEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccessConfirm):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::update):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::requestStorageAccess):

2018-05-07  Dean Jackson  <dino@apple.com>

        Use a dark gray for system preview bbackground
        https://bugs.webkit.org/show_bug.cgi?id=185391
        <rdar://problem/40035120>

        Reviewed by Eric Carlson.

        Throw some darker shade at this view.

        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_initWithFrame:webView:]):

2018-05-07  Don Olmstead  <don.olmstead@sony.com>

        [Win] Add missing methods to WebChromeClient
        https://bugs.webkit.org/show_bug.cgi?id=185325

        Reviewed by Brent Fulgham.

        * WebProcess/WebCoreSupport/WebChromeClient.h:

2018-05-07  Megan Gardner  <megan_gardner@apple.com>

        Allow Web Touch events to timeout
        https://bugs.webkit.org/show_bug.cgi?id=185282

        Reviewed by Tim Horton.
        
        This is backwards, fixing.

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

2018-05-07  Don Olmstead  <don.olmstead@sony.com>

        [Win] LoggingWin is missing includes
        https://bugs.webkit.org/show_bug.cgi?id=185326

        Reviewed by Per Arne Vollan.

        * Platform/win/LoggingWin.cpp:

2018-05-07  Daniel Bates  <dabates@apple.com>

        CSP should be passed the referrer
        https://bugs.webkit.org/show_bug.cgi?id=185367

        Reviewed by Per Arne Vollan.

        Pass the referrer through NetworkLoadChecker so that it can pass it to the ContentSecurityPolicy
        object it instantiates.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::contentSecurityPolicy const):
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::create):
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):

2018-05-07  Daniel Bates  <dabates@apple.com>

        Substitute CrossOriginPreflightResultCache::clear() for CrossOriginPreflightResultCache::empty()
        https://bugs.webkit.org/show_bug.cgi?id=185170

        Reviewed by Per Arne Vollan.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::clearResourceCaches):
        (WebKit::WebProcess::deleteWebsiteData):

2018-05-07  Brian Burg  <bburg@apple.com>

        Web Inspector: opt out of process swap on navigation if a Web Inspector frontend is connected
        https://bugs.webkit.org/show_bug.cgi?id=184861
        <rdar://problem/39153768>

        Reviewed by Timothy Hatcher.

        We need to track how many frontends are attached to the web page (both local and remote).
        InspectorController propagates this out to WebKit via InspectorClient. This is then
        kept in UIProcess as a member of WebPageProxy. When making a decision whether to use a
        new process for a navigation, return early with "no" if any frontends are open for the
        page being navigated.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::didChangeInspectorFrontendCount):
        (WebKit::WebPageProxy::inspectorFrontendCount const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::frontendCountChanged):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::inspectorFrontendCountChanged):
        * WebProcess/WebPage/WebPage.h:

2018-05-04  Tim Horton  <timothy_horton@apple.com>

        Shift to a lower-level framework for simplifying URLs
        https://bugs.webkit.org/show_bug.cgi?id=185334

        Reviewed by Dan Bernstein.

        * Configurations/WebKit.xcconfig:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _updateLocationInfo]):

2018-05-04  Per Arne Vollan  <pvollan@apple.com>

        Shutdown WindowServer connections after checking in with launch services
        https://bugs.webkit.org/show_bug.cgi?id=185082
        <rdar://problem/39613173>

        Reviewed by Brent Fulgham.

        When WindowServer access is blocked in the WebContent process, we should shutdown all connections
        after checking in with launch services.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeProcess):

2018-05-04  Don Olmstead  <don.olmstead@sony.com>

        [Win][WebKit] Fix forwarding headers for Windows build
        https://bugs.webkit.org/show_bug.cgi?id=184412

        Reviewed by Alex Christensen.

        * PlatformWin.cmake:
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/APIContextMenuClient.h:
        * UIProcess/API/C/WKProcessTerminationReason.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:

2018-05-04  Chris Dumez  <cdumez@apple.com>

        [iOS] Apps that are not visible may not get suspended if they trigger page loads while in the background
        https://bugs.webkit.org/show_bug.cgi?id=185318

        Reviewed by Geoffrey Garen.

        Whenever there is a page load going on, we take a background process assertion to delay process
        suspension until this load completes. However, there is also a 3 seconds grace period after
        a load is complete to allow the app to trigger a new load shortly after. This grace period was
        introduced to support use cases where a visible app does loads in an offscreen view. However,
        it can be abused by apps running in the background as they could trigger new page loads while
        in the background to delay process suspension. This patch tightens the policy so that only
        apps that are currently visible get to use this grace period. Apps that are in the background
        get to finish their current load and will then get suspended.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):

2018-05-04  Per Arne Vollan  <pvollan@apple.com>

        Adjust sandbox profile for simulator.
        https://bugs.webkit.org/show_bug.cgi?id=185319

        Reviewed by Brent Fulgham.

        Disable Kerberos rules, as well as rules related to NSApplication initialization.

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

2018-05-04  Tim Horton  <timothy_horton@apple.com>

        Wasted time dlopening Lookup when tearing down a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=185310
        <rdar://problem/39934085>

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver dealloc]):
        (-[WKWindowVisibilityObserver startObservingLookupDismissalIfNeeded]):
        (WebKit::WebViewImpl::prepareForDictionaryLookup):
        (-[WKWindowVisibilityObserver startObservingLookupDismissal]): Deleted.
        Avoid un-registering as a Lookup dismissal observer if we never
        registered in the first place, because that involves dlopening Lookup.

2018-05-04  Megan Gardner  <megan_gardner@apple.com>

        Allow Web Touch events to timeout
        https://bugs.webkit.org/show_bug.cgi?id=185282
        <rdar://problem/38728319>

        Reviewed by Tim Horton.
        
        Web Touch events currently never time out, which blocks the user from interacting with the UI Process at all.
        We should allow these events to time out so that the user can interact with the rest of the UI.

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

2018-05-04  Wenson Hsieh  <whsieh@berkeley.edu>

        REGRESSION: [ios-simulator] 3 WKWebViewAutofillTests API test failures seen with 11.3 SDK
        https://bugs.webkit.org/show_bug.cgi?id=184196
        <rdar://problem/39054481>

        Reviewed by Tim Horton.

        Remove an unnecessary call to NSClassFromString, now that trunk WebKit only supports iOS 11.3+.

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

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

        NetworkProcessProxy::didReceiveAuthenticationChallenge should take an AuthenticationChallenge r-value
        https://bugs.webkit.org/show_bug.cgi?id=185302

        Reviewed by Geoffrey Garen.

        Pass AuthenticationChallenge as an r-value since it comes from IPC.
        No change of behavior.

        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        (WebKit::AuthenticationChallengeProxy::create):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
        * UIProcess/Downloads/DownloadProxy.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/Network/NetworkProcessProxy.h:

2018-05-04  Sihui Liu  <sihui_liu@apple.com>

        Assertion failure in NetworkStorageSession::setCookie: privilege of UI process is not set
        https://bugs.webkit.org/show_bug.cgi?id=185262

        Reviewed by Chris Dumez.

        Fix an assertion failure by setting UI process privileges in constructor of WebsiteDataStore
        because UI process may use the cookie API before creating a WebView.

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

2018-05-04  Per Arne Vollan  <pvollan@apple.com>

        Adjust sandbox rules for simulator.
        https://bugs.webkit.org/show_bug.cgi?id=185275

        Reviewed by Brent Fulgham.

        Enable rules related to CoreMedia for minimal simulator.

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

2018-05-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Epiphany (GNOME Web) says "Error downloading: Service Unavailable." when trying to download an image from discogs.com
        https://bugs.webkit.org/show_bug.cgi?id=174730

        Reviewed by Michael Catanzaro.

        The problem is that we don't send any User-Agent HTTP header for downloads started by WebProcessPool::download().

        * UIProcess/API/glib/WebKitDownload.cpp:
        (webkitDownloadUpdateRequest): Helper to update the cached request.
        (webkitDownloadStarted): Updated the cached request if we have one.
        (webkit_download_get_request): Use webkitDownloadUpdateRequest().
        * UIProcess/API/glib/WebKitDownloadClient.cpp:
        * UIProcess/API/glib/WebKitDownloadPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::download): Set the User-Agent HTTP header if there isn't any.

2018-05-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Some event tests failing after r230817
        https://bugs.webkit.org/show_bug.cgi?id=185072

        Reviewed by Michael Catanzaro.

        Do not send mouse move events to the WebProcess for crossing events during testing. WTR never generates crossing
        events and they can confuse tests.

        Fixes: editing/pasteboard/drag-link-with-data-transfer-adds-trusted-link-to-pasteboard.html
               fast/css/user-drag-none.html
               fast/events/context-activated-by-key-event.html
               fast/events/drag-selects-image.html
               fast/events/dropzone-005.html
               fast/events/mouse-click-events.html
               fast/events/mouse-cursor-change.html

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

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

        More aggressively terminate child processes when the connection to their parent process is severed
        https://bugs.webkit.org/show_bug.cgi?id=177972
        <rdar://problem/33317607>

        Reviewed by Geoff Garen.

        More aggressively terminate child processes when the connection to their parent process is severed.
        Previously, we would dispatch to the main thread and then exit the process. This would sometimes
        cause the process to say alive for 10 seconds until our watchdog would forcefully terminate the
        process. This could happen in particular when the main thread is blocked on a synchronous IPC.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didClose): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::didClose): Deleted.
        * PluginProcess/PluginProcess.h:
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::didClose):
        (WebKit::didCloseOnConnectionWorkQueue):
        (WebKit::ChildProcess::terminationTimerFired):
        * Shared/ChildProcess.h:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didClose): Deleted.
        * StorageProcess/StorageProcess.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didClose): Deleted.
        * WebProcess/WebProcess.h:

2018-05-03  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use default std::optional if it is provided
        https://bugs.webkit.org/show_bug.cgi?id=185159

        Reviewed by Michael Catanzaro.

        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::Handle::decode):
        * Shared/TouchBarMenuItemData.cpp:
        (WebKit::TouchBarMenuItemData::decode):

2018-05-03  Justin Fan  <justin_fan@apple.com>

        [WebGL] Add runtime flag for enabling ASTC support in WebGL
        https://bugs.webkit.org/show_bug.cgi?id=184840

        Reviewed by Myles C. Maxfield.

        Added runtime flag for ASTC support in WebGL, to turn on/off when extension is implemented.

        * Shared/WebPreferences.yaml:

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

        Unreviewed build fix after <https://trac.webkit.org/changeset/231282>.

        * NetworkProcess/NetworkActivityTracker.h:

2018-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Ads in NYTimes app are shifted downwards by the scroll view's top content inset
        https://bugs.webkit.org/show_bug.cgi?id=185251
        <rdar://problem/39062357>

        Reviewed by Tim Horton.

        The NYTimes app embeds advertisements in each article's WKWebView by adding views in the WKScrollView's view
        hierarchy. These views are positioned using the bounding client rects of elements in the DOM (via Element
        ::getBoundingClientRect). Prior to r229641, WebKit would report bounding client rects inset by the content
        insets of WKScrollView, which means that if a top content inset X is specified on the scroll view, an element
        that is flush against the top of the viewport will have a bounding client rect top of -X (when it should really
        be 0).

        To account for this, NYTimes adds the scroll view content insets back to the bounding client rect when
        determining the position of each advertisement which, after r229641, causes these views to be shifted downwards
        by an amount equal to the scroll view content inset top.

        This new behavior does not affect Safari, since Safari uses SPI to explicitly set obscured insets. As such, we
        address this by gating the scroll view content inset fix with a linked-on-or-after check.

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

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

        Load hangs if the WebProcess fails to launch
        https://bugs.webkit.org/show_bug.cgi?id=185225
        <rdar://problem/38249058>

        Reviewed by Geoff Garen.

        When a process fails to launch, ChildProcessProxy::didFinishLaunching() gets called with an
        invalid connection identifier. While NetworkProcessProxy::didFinishLaunching() properly deals with
        this situation, WebProcessProxy::didFinishLaunching() does not. As a result, we do not attempt to
        relaunch the process, we do not notify the client and WebPageProxy::m_isValid stays true.

        This patch thus updates WebProcessProxy::didFinishLaunching() to check if the connection identifier
        is valid and treats it as a crash. As a result, the WebPageProxies properly reset their state and
        the client gets notified of the crash so that it can attempt to reload.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _makeNextWebProcessLaunchFailForTesting]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        Add SPI to make the next WebProcess launch fail, for the purpose of API testing.

        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getLaunchOptions):
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/WebProcessProxy.h:

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

        Unreviewed, rolling out r231223 and r231288.
        https://bugs.webkit.org/show_bug.cgi?id=185256

        The change in r231223 breaks internal builds, and r231288 is a
        dependent change. (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Use default std::optional if it is provided"
        https://bugs.webkit.org/show_bug.cgi?id=185159
        https://trac.webkit.org/changeset/231223

        "Use pointer instead of
        std::optional<std::reference_wrapper<>>"
        https://bugs.webkit.org/show_bug.cgi?id=185186
        https://trac.webkit.org/changeset/231288

2018-05-03  Per Arne Vollan  <pvollan@apple.com>

        An error message is written to stderr when the WebContent process is blocking WindowServer access.
        https://bugs.webkit.org/show_bug.cgi?id=184701

        Reviewed by Brent Fulgham.

        Calling 'setApplicationIsDaemon(true)' instead of 'CGSSetDenyWindowServerConnections(true)' to disable
        access to the WindowServer in the WebContent process, will remove this error message. After this change,
        the url of the WebContent process is still showing up in Activity Monitor, which previously was a
        problem when calling 'setApplicationIsDaemon(true)'.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeProcess):

2018-05-03  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r231253.

        The API test added with this change is crashing on the bots.

        Reverted changeset:

        "Web Inspector: opt out of process swap on navigation if a Web
        Inspector frontend is connected"
        https://bugs.webkit.org/show_bug.cgi?id=184861
        https://trac.webkit.org/changeset/231253

2018-05-03  Brent Fulgham  <bfulgham@apple.com>

        Re-eneable Network Extension support in the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=185236
        <rdar://problem/39883004>

        Reviewed by Eric Carlson.

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

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

        REGRESSION (r231014): Entitlements are not applied to XPC services on macOS
        https://bugs.webkit.org/show_bug.cgi?id=185241

        Reviewed by Dan Bernstein.

        * Configurations/BaseXPCService.xcconfig:
        * Configurations/WebContentService.Development.xcconfig:
        * Configurations/WebContentService.xcconfig:

2018-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r222772): [GTK][WPE] WebProcess from WebKitGtk+ 2.19.9x SIGSEVs in WebKit::WebProcess::ensureNetworkProcessConnection() at Source/WebKit/WebProcess/WebProcess.cpp:1127
        https://bugs.webkit.org/show_bug.cgi?id=183348

        Reviewed by Michael Catanzaro.

        When connection doesn't exit in case of sync message failure, always exit in case of failing to send
        GetNetworkProcessConnection or GetStorageProcessConnection messages. This can happen when the WebView is created
        and destroyed quickly.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::ensureNetworkProcessConnection):
        (WebKit::WebProcess::ensureWebToStorageProcessConnection):

2018-05-02  Nan Wang  <n_wang@apple.com>

        AX: Missing kAXSWebAccessibilityEventsEnabledNotification causes a crash
        https://bugs.webkit.org/show_bug.cgi?id=185237

        Reviewed by Dan Bernstein.

        When libAccessibility.dylib is missing, the compiler would optimize out the global
        notification and lead to a crash. Fixed it by using the isNullFunction check instead,
        since we are sure the global notification would be there when the corresponding function 
        is available.

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

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

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

        Reviewed by Brent Fulgham.

        Add NetworkActivityTracker. The idea behind this facility is to create
        and destroy them around networking activity that we want to track for
        the purpose of measuring overall network health. They can be created
        around the loading of pages or individual resources, and can be
        arranged in a parent/child hierarchy to indicate what pages the
        resources are part of. The NetworkActivity tracker tracks load times
        and results. On Cocoa, it can be integrated with CFNetwork in order to
        associate WebKit activity with low-level networking activity.

        * CMakeLists.txt:
        * Configurations/WebKit.xcconfig:
        * NetworkProcess/NetworkActivityTracker.cpp: Copied from Source/WebKit/NetworkProcess/NetworkLoadParameters.h.
        (WebKit::NetworkActivityTracker::NetworkActivityTracker):
        (WebKit::NetworkActivityTracker::~NetworkActivityTracker):
        (WebKit::NetworkActivityTracker::setParent):
        (WebKit::NetworkActivityTracker::start):
        (WebKit::NetworkActivityTracker::complete):
        * NetworkProcess/NetworkActivityTracker.h: Added.
        (WebKit::NetworkActivityTracker::getPlatformObject):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::pageLoadCompleted):
        (WebKit::networkActivityTrackingEnabled):
        (WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::stopTrackingResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTracking):
        (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTrackingForPage):
        (WebKit::NetworkConnectionToWebProcess::findRootNetworkActivity):
        (WebKit::NetworkConnectionToWebProcess::findNetworkActivityTracker):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::ResourceNetworkActivityTracker::ResourceNetworkActivityTracker):
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::trackNetworkActivity const):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::cleanup):
        (WebKit::NetworkResourceLoader::abort):
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::didFailLoading):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        (WebKit::NetworkResourceLoader::continueProcessingCachedEntryAfterDidReceiveResponse):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cocoa/NetworkActivityTrackerCocoa.mm: Added.
        (WebKit::NetworkActivityTracker::NetworkActivityTracker):
        (WebKit::NetworkActivityTracker::~NetworkActivityTracker):
        (WebKit::NetworkActivityTracker::setParent):
        (WebKit::NetworkActivityTracker::start):
        (WebKit::NetworkActivityTracker::complete):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationTrackNetworkActivity):
        (WKContextConfigurationSetTrackNetworkActivity):
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration trackNetworkActivity]):
        (-[_WKProcessPoolConfiguration setTrackNetworkActivity:]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::pageLoadCompleted):
        * WebProcess/Network/WebLoaderStrategy.h:

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

        Open audio/video sandbox services for minimal simulator
        https://bugs.webkit.org/show_bug.cgi?id=185217
        <rdar://problem/39918909>

        Reviewed by Per Arne Vollan.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/com.apple.WebProcess.sb.in:

2018-05-02  Daniel Bates  <dabates@apple.com>

        Cleanup NetworkResourceLoader::didReceiveResponse()
        https://bugs.webkit.org/show_bug.cgi?id=185209

        Reviewed by Chris Dumez.

        Use early returns to make the control flow easier to read and reason about. Disregarding a
        From-Origin violation, NetworkResourceLoader::didReceiveResponse() only returns NetworkLoadClient::ShouldContinueDidReceiveResponse::No
        when the load is for a main resource and hence it must wait for the embedding client to allow
        the load before continuing with it. With regards to a From-Origin violation, the network
        process schedules to fail the load in a subsequent turn of the event loop before returning
        NetworkLoadClient::ShouldContinueDidReceiveResponse::No. It return NetworkLoadClient::ShouldContinueDidReceiveResponse::No
        solely to tell the NetworkLoadClient to defer assuming the load is allowed (because we will
        fail it on the next turn of the event loop).

        Additionally, remove all logging about the return value as we no longer have a need for
        such logging.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveResponse):

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

        Add WKWebsiteDataStorePrivate._proxyConfiguration SPI
        https://bugs.webkit.org/show_bug.cgi?id=185179

        Reviewed by Andy Estes.

        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setProxyConfiguration:]):
        (-[WKWebsiteDataStore _proxyConfiguration]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::setProxyConfiguration):
        (WebKit::WebsiteDataStore::proxyConfiguration):

2018-05-02  Youenn Fablet  <youenn@apple.com>

        Use NetworkLoadChecker for navigation loads
        https://bugs.webkit.org/show_bug.cgi?id=184892
        <rdar://problem/39652686>

        Reviewed by Chris Dumez.

        Compute whether a response is same origin in no-cors case.
        This allows providing more precise filtering.
        In case of navigate loads, set the tainting to basic which will make filtering to the minimum.

        Pass the sourceOrigin for navigation loads as well.
        Enable to restrict HTTP response access for navigation load.

        Content Blockers are disabled for now in NetworkLoadChecker for navigation loads.
        They should be reenabled as a follow-up.

        Add a specific case to allow any redirection to about:// URLs.
        While this does not conform with the spec, this keeps the existing WebKit behavior.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::validateResponse):
        (WebKit::NetworkLoadChecker::continueCheckingRequest):
        (WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::sanitizeResponseIfPossible):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::isDoingLoadingSecurityChecks const):
        We only do security checks if this runtime flag is on.
        * WebProcess/Network/WebLoaderStrategy.h:

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

        Make EncryptedMediaAPIEnabled an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=185212

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

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

        Adjust sandbox profile in simulator mode.
        https://bugs.webkit.org/show_bug.cgi?id=185172
        <rdar://problem/39876860>

        Reviewed by Brent Fulgham.

        Fix some sandbox violations.

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

2018-05-02  Brian Burg  <bburg@apple.com>

        Web Inspector: opt out of process swap on navigation if a Web Inspector frontend is connected
        https://bugs.webkit.org/show_bug.cgi?id=184861
        <rdar://problem/39153768>

        Reviewed by Ryosuke Niwa.

        We need to track how many frontends are attached to the web page (both local and remote).
        InspectorController propagates this out to WebKit via InspectorClient. This is then
        kept in UIProcess as a member of WebPageProxy. When making a decision whether to use a
        new process for a navigation, return early with "no" if any frontends are open for the
        page being navigated.

        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::didChangeInspectorFrontendCount):
        (WebKit::WebPageProxy::inspectorFrontendCount const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::frontendCountChanged):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::inspectorFrontendCountChanged):
        * WebProcess/WebPage/WebPage.h:

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

        Adopt -destinationWindowToExitFullScreenForWindow:
        https://bugs.webkit.org/show_bug.cgi?id=185204
        <rdar://problem/22486621>

        Reviewed by Eric Carlson.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController destinationWindowToExitFullScreenForWindow:]):

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

        Disable Media capture rules in sandbox for simulator.
        https://bugs.webkit.org/show_bug.cgi?id=185206
        <rdar://problem/39910015>

        Reviewed by Eric Carlson.

        These rules are not relevant in this case.

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

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

        [iOS] Provide audio route information when invoking AirPlay picker
        https://bugs.webkit.org/show_bug.cgi?id=185199
        <rdar://problem/39853103>

        Reviewed by Jer Noble.

        * Scripts/webkit/messages.py:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showPlaybackTargetPicker):  Pass route sharing policy and routing context UID.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]): Take same.
        (-[WKContentView _showPlaybackTargetPicker:fromRect:]): Deleted.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::showPlaybackTargetPicker): Pass route sharing policy and routing context UID.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Take same.
        (-[WKAirPlayRoutePicker showFromView:]): Deleted.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::showPlaybackTargetPicker):

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

        Get the WebKit.framework bundle by asking for WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=185175

        Reviewed by Tim Horton.

        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::initializeSandbox):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::initializeSandbox):
        * StorageProcess/mac/StorageProcessMac.mm:
        (WebKit::StorageProcess::initializeSandbox):

2018-05-02  Youenn Fablet  <youenn@apple.com>

        Cannot gather srflx or relay ICE candidates on IPv6 network (ICE agent hangs?)
        https://bugs.webkit.org/show_bug.cgi?id=181009
        <rdar://problem/36144555>

        Reviewed by Eric Carlson.

        On iOS/IPv6 networks, STUN servers name resolution returns a zero IPv6 IP address.
        No error is raised which leads to sending STUN requests with that IP address.
        Once the request times out, the ICE candidate gathering finishes with host candidates only.

        This patch makes WebRTC DNS resolver to send only IPv4 resolved addresses.
        STUN is used for NAT traversal which is for IPv4 addresses.
        Not sending IPv6 addresses allows terminating ICE candidate gathering sooner.

        Manually tested on iOS with IPv4/IPv6 and IPv6 networks.

        * NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:
        (WebKit::resolvedName):

2018-05-02  Youenn Fablet  <youenn@apple.com>

        CacheStorage::Engine should keep a list of initialization callback
        https://bugs.webkit.org/show_bug.cgi?id=185184
        <rdar://problem/38875651>

        Reviewed by Antti Koivisto.

        Keep each initialize callback in a Vector so as to compute the salt only once.
        Call all callbacks then in a loop.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::~Engine):
        (WebKit::CacheStorage::Engine::initialize):
        * NetworkProcess/cache/CacheStorageEngine.h:

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

        Pipe volume through PlaybackSessionManager/Proxy.
        https://bugs.webkit.org/show_bug.cgi?id=185182

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::setVolume):
        (WebKit::PlaybackSessionModelContext::volumeChanged):
        (WebKit::PlaybackSessionManagerProxy::volumeChanged):
        (WebKit::PlaybackSessionManagerProxy::setVolume):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.messages.in:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::volumeChanged):
        (WebKit::PlaybackSessionManager::volumeChanged):
        (WebKit::PlaybackSessionManager::setVolume):

2018-05-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use default std::optional if it is provided
        https://bugs.webkit.org/show_bug.cgi?id=185159

        Reviewed by JF Bastien.

        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::Handle::decode):
        * Shared/TouchBarMenuItemData.cpp:
        (WebKit::TouchBarMenuItemData::decode):

2018-05-01  Jer Noble  <jer.noble@apple.com>

        Production build error in Migrate Header phase when WK_ALTERNATE_FRAMEWORKS_DIR is set to non-empty value
        https://bugs.webkit.org/show_bug.cgi?id=185171

        Reviewed by Timothy Hatcher.

        * Configurations/BaseTarget.xcconfig:

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

        Use correct runloop type in the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=185140

        Reviewed by Brent Fulgham.

        Use WK_MACOS_* machinery to determine runloop type for the WebContent process.

        * Configurations/WebContentService.xcconfig:

2018-05-01  Oleksandr Skachkov  <gskachkov@gmail.com>

        WebAssembly: add support for stream APIs - JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=183442

        Reviewed by Yusuke Suzuki and JF Bastien.

        Add WEBASSEMBLY_STREAMING_API feature flag

        * Configurations/FeatureDefines.xcconfig:

2018-04-30  Per Arne Vollan  <pvollan@apple.com>

        Use correct runloop type in the WebContent process.
        https://bugs.webkit.org/show_bug.cgi?id=185140
        <rdar://problem/39585037>

        Reviewed by Brent Fulgham.

        The macOS target version should be used to determine the runloop type.

        * Configurations/WebContentService.xcconfig:

2018-04-30  Michael Saboff  <msaboff@apple.com>

        Eliminate WebProcessShim.dylib
        https://bugs.webkit.org/show_bug.cgi?id=185147

        Reviewed by Ryosuke Niwa.

        * Configurations/WebContentService.xcconfig:
        * Configurations/WebProcessShim.xcconfig: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-04-30  Michael Saboff  <msaboff@apple.com>

        Remove unused mac/CookieStorageShimLibrary
        https://bugs.webkit.org/show_bug.cgi?id=185146

        Reviewed by Alex Christensen.

        * Shared/mac/CookieStorageShimLibrary.cpp: Removed.
        * Shared/mac/CookieStorageShimLibrary.h: Removed.
        * WebKit.xcodeproj/project.pbxproj:

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

        Add WKUIDelegatePrivate equivalent of WKPageContextMenuClient getContextMenuFromProposedMenuAsync
        https://bugs.webkit.org/show_bug.cgi?id=180955

        Reviewed by Andy Estes.

        * UIProcess/API/APIContextMenuClient.h:
        (API::ContextMenuClient::menuFromProposedMenu):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::showContextMenuWithItems):

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

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

        Reviewed by Alex Christensen.

        As discussed here [0] let's move WebKit to a subset of C++17. We
        now require GCC 6 [1] which means that, according to [2] we can
        use the following C++17 language features (I removed some
        uninteresting ones):

         - New auto rules for direct-list-initialization
         - static_assert with no message
         - typename in a template template parameter
         - Nested namespace definition
         - Attributes for namespaces and enumerators
         - u8 character literals
         - Allow constant evaluation for all non-type template arguments
         - Fold Expressions
         - Unary fold expressions and empty parameter packs
         - __has_include in preprocessor conditional
         - Differing begin and end types in range-based for
         - Improving std::pair and std::tuple

        Consult the Tony Tables [3] to see before / after examples.

        Of course we can use any library feature if we're willing to
        import them to WTF (and they don't require language support).


          [0]: https://lists.webkit.org/pipermail/webkit-dev/2018-March/029922.html
          [1]: https://trac.webkit.org/changeset/231152/webkit
          [2]: https://en.cppreference.com/w/cpp/compiler_support
          [3]: https://github.com/tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md

        * Configurations/Base.xcconfig:
        * DerivedSources.make:
        * PlatformMac.cmake:

2018-04-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] Respect the existing shrink-to-fit attribute instead of using min-device-width
        https://bugs.webkit.org/show_bug.cgi?id=185132
        <rdar://problem/39834562>

        Reviewed by Tim Horton.

        Remove the experimental feature for `min-device-width`.

        * Shared/WebPreferences.yaml:

2018-04-30  Keith Rollin  <krollin@apple.com>

        Include breadcrumb for tracking resource loading into CFNetwork
        https://bugs.webkit.org/show_bug.cgi?id=184837
        rdar://problem/39575411

        Reviewed by Brent Fulgham.

        When starting the network-based loading of a resource, log the
        description provided by NetworkDataTask. On Cocoa, this is implemented
        to return the description property in NSURLSessionTask. This
        information better allows us to track a resource load through the
        WebContent process, the Networking process, and the Cocoa networking
        layers.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::description const):
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::description const):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::description const):

2018-04-30  Andy Estes  <aestes@apple.com>

        [iOS] Try to unlock PDF documents before printing them
        https://bugs.webkit.org/show_bug.cgi?id=185084
        <rdar://problem/39356622>

        Reviewed by Dan Bernstein.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView pdfHostViewController:documentDidUnlockWithPassword:]):

        Stored the password that successfully unlocked the current PDF document.

        (-[WKPDFView _wk_printedDocument]):

        Used the stored password to unlock the CGPDFDocument we create for printing.

2018-04-28  Andy Estes  <aestes@apple.com>

        [iOS] Present an action sheet when long-pressing on PDF links
        https://bugs.webkit.org/show_bug.cgi?id=185093
        <rdar://problem/39356651>

        Reviewed by Dan Bernstein.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView dealloc]):

        Called -[WKActionSheetAssistant cleanupSheet].

        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):

        Created a WKActionSheetAssistant with the host view as the assistant view and
        ourselves as the delegate.

        (-[WKPDFView _URLWithPageIndex:]):

        Added. Creates a URL to the current page with a page number fragment appended.

        (-[WKPDFView _goToURL:atLocation:]):

        Added. Navigates to a URL with a synthetic mouse click at a location in host view
        coordinates.

        (-[WKPDFView pdfHostViewController:goToURL:]):
        (-[WKPDFView pdfHostViewController:goToPageIndex:withViewFrustum:]):

        Called -_goToURL:atLocation:. Used -_URLWithPageIndex: to construct an NSURL from
        a page index.

        (-[WKPDFView _showActionSheetForURL:atLocation:]):

        Added. Populates _positionInformation with a URL and location and calls
        -[WKActionSheetAssistant showLinkSheet].

        (-[WKPDFView pdfHostViewController:didLongPressURL:atLocation:]):
        (-[WKPDFView pdfHostViewController:didLongPressPageIndex:atLocation:]):

        Called -_showActionSheetForURL:atLocation:. Used -_URLWithPageIndex: to construct
        an NSURL from a page index.

        (-[WKPDFView positionInformationForActionSheetAssistant:]):

        Returned _positionInformation.

        (-[WKPDFView actionSheetAssistant:performAction:]):

        Populated the pasteboard with plain text and URL representations of
        _positionInformation.url.

        (-[WKPDFView actionSheetAssistant:openElementAtLocation:]):

        Called -_goToURL:atLocation.

        (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):

        Created a UIWKSelectionAssistant and called -showShareSheetFor:fromRect:.

        (-[WKPDFView actionSheetAssistant:shouldIncludeAppLinkActionsForElement:]):

        Returned API::UIClient::shouldIncludeAppLinkActionsForElement().

        (-[WKPDFView actionSheetAssistant:decideActionsForElement:defaultActions:]):

        Returned API::UIClient::actionsForElement()l

2018-04-28  Andy Estes  <aestes@apple.com>

        [iOS] Allow com.apple.WebKit.Networking to look up com.apple.wifi.manager
        https://bugs.webkit.org/show_bug.cgi?id=185114
        <rdar://problem/39808763>

        Reviewed by Wenson Hsieh.

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

2018-04-28  Brent Fulgham  <bfulgham@apple.com>

        Revise sandboxes to allow additional IOKit property access
        https://bugs.webkit.org/show_bug.cgi?id=185095
        <rdar://problem/39809455>

        Reviewed by Eric Carlson.

        Update the WebContent and Plugin processes to allow additional IOKit property access.

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

2018-04-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebProcess from WebKitGtk+ 2.19.92 SIGSEVs in WebCore::TextureMapperGL::~TextureMapperGL
        https://bugs.webkit.org/show_bug.cgi?id=184040

        Reviewed by Michael Catanzaro.

        This can happen when using single shared process model or when the process limit is reached in multiple process
        model. In this case, all pages in the same web process with accelerated compositing enabled share the same
        compositing thread. Every page sets its GL context as current when rendering a frame, but not when invalidating
        the threaded compositor when the page is closed. So, if a hidden tab is closed, the threaded compositor is
        invalidated and the GL resources of the current context (the visible page) are destroyed. This is also causing
        the blank pages issue when closing a tab related to another one, the current one stops rendering anything because
        its GL context has been released. We should make the threaded compositor context current when invalidating it.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::invalidate):

2018-04-27  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: Touch events fail to dispatch to the page in all cases.

        https://bugs.webkit.org/show_bug.cgi?id=185097
        rdar://problem/39731995

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        Consult internal gesture recognizers, otherwise NO might get returned.

2018-04-26  Ryosuke Niwa  <rniwa@webkit.org>

        PSON: Triggering a navigation to an invalid URL creates a new WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=185066

        Reviewed by Youenn Fablet.

        Don't create a new WebContent process when the target URL is invalid as well as when the source URL is invalid.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

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

        Use NetworkLoadChecker for XHR/fetch loads
        https://bugs.webkit.org/show_bug.cgi?id=184741

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
        Pass the preflight error as completion error if any.
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::willPerformHTTPRedirection):
        Set response source to Network so that checks relying on that are correct.
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::validateResponse):
        Adding Oppaqueredirect tainting.
        (NetworkLoadChecker::doesNotNeedCORSCheck):
        Adding a check to only activate CORS checks for CORS enabled schemes.
        Non CORS enabled schemes loads should have failed in WebProcess already.
        (WebKit::NetworkLoadChecker::checkCORSRedirectedRequest):
        Remove Authorization header as done by SubresourceLoader.
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
        If error is cancellation, we still want to call the completion handler.
        * NetworkProcess/NetworkResourceLoader.cpp:
        Activate network load checker for all types of loads.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        Handle manual redirection by directly calling didReceiveResponse.

2018-04-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add an experimental feature flag for viewport "min-device-width"
        https://bugs.webkit.org/show_bug.cgi?id=185050
        <rdar://problem/39624038>

        Reviewed by Tim Horton.

        Add MinDeviceWidthEnabled as a new experimental feature, on by default in extra zoom mode and off elsewhere.

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

2018-04-27  Daniel Bates  <dabates@apple.com>

        UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance() is applicable to both Mac and iOS
        https://bugs.webkit.org/show_bug.cgi?id=185079
        <rdar://problem/39794960>

        I inadvertently forgot to move the UIDelegate field webViewDidResignInputElementStrongPasswordAppearanceWithUserInfo
        outside the PLATFORM(MAC)-guard.

        * UIProcess/Cocoa/UIDelegate.h:

2018-04-27  Daniel Bates  <dabates@apple.com>

        UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance() is applicable to both Mac and iOS
        https://bugs.webkit.org/show_bug.cgi?id=185079
        <rdar://problem/39794960>

        Reviewed by Andy Estes.

        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance):

2018-04-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Rename minimumLayoutSize to viewLayoutSize
        https://bugs.webkit.org/show_bug.cgi?id=185050
        <rdar://problem/39624038>

        Reviewed by Tim Horton.

        Renames minimumLayoutSize to viewLayoutSize, since the minimum layout size in ViewportConfiguration is now
        different from the minimum layout size that is currently pushed down from the UI process (e.g. WKWebView SPI) in
        the case where `min-device-width` is used to override the minimum layout size.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processDidExit]):
        (-[WKWebView activeViewLayoutSize:]):
        (-[WKWebView _dispatchSetViewLayoutSize:]):
        (-[WKWebView _frameOrBoundsChanged]):
        (-[WKWebView _minimumLayoutSizeOverride]):
        (-[WKWebView _setViewLayoutSizeOverride:]):
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        (-[WKWebView _endAnimatedResize]):
        (-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]):
        (-[WKWebView _clearOverrideLayoutParameters]):
        (-[WKWebView _minimumLayoutWidth]):
        (-[WKWebView _setMinimumLayoutWidth:]):
        (-[WKWebView activeMinimumLayoutSize:]): Deleted.
        (-[WKWebView _dispatchSetMinimumLayoutSize:]): Deleted.
        (-[WKWebView _setMinimumLayoutSizeOverride:]): Deleted.
        (-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:minimumLayoutSizeForMinimalUI:maximumUnobscuredSizeOverride:]): Deleted.

        Remove unused SPI that has been deprecated since iOS 9, has a simple drop-in replacement, and no longer has any
        internal clients.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::setMinimumSizeForAutoLayout):
        (WebKit::WebViewImpl::minimumSizeForAutoLayout const):
        (WebKit::WebViewImpl::setIntrinsicContentSize):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::viewLayoutSizeDidChange):
        (WebKit::DrawingAreaProxy::minimumLayoutSizeDidChange): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::setViewLayoutSize):
        (WebKit::WebPageProxy::setMinimumLayoutSize): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewLayoutSize const):
        (WebKit::WebPageProxy::minimumLayoutSize const): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::dynamicViewportSizeUpdate):
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
        (WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize): Deleted.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::viewLayoutSizeDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::didUpdateGeometry):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::intrinsicContentSizeDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::willSendUpdateGeometry):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::minimumLayoutSizeDidChange): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_credentialsMessenger):
        (WebKit::WebPage::setViewLayoutSize):
        (WebKit::WebPage::setMinimumLayoutSize): Deleted.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::viewLayoutSize const):
        (WebKit::WebPage::minimumLayoutSize const): Deleted.
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setViewportConfigurationViewLayoutSize):
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::setViewportConfigurationMinimumLayoutSize): Deleted.
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
        (WebKit::TiledCoreAnimationDrawingArea::updateGeometry):

2018-04-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] Add a mechanism to override default viewport behaviors in extra zoom mode
        https://bugs.webkit.org/show_bug.cgi?id=185050
        <rdar://problem/39624038>

        Reviewed by Tim Horton.

        Remove the forceHorizontalViewportShrinkToFit and minimumAllowedLayoutWidth SPI hooks from WebKit, and
        additionally remove all logic for plumbing viewSize to WebCore. See WebCore/ChangeLog for more information.

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode const):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        (WebKit::VisibleContentRectUpdateInfo::allowShrinkToFit const):
        (WebKit::operator==):
        (WebKit::VisibleContentRectUpdateInfo::forceHorizontalShrinkToFit const): Deleted.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView activeMinimumLayoutSize:]):
        (-[WKWebView _dispatchSetMinimumLayoutSize:]):
        (-[WKWebView _frameOrBoundsChanged]):
        (-[WKWebView _setMinimumLayoutSizeOverride:]):
        (-[WKWebView _beginAnimatedResizeWithUpdates:]):
        (-[WKWebView _endAnimatedResize]):
        (-[WKWebView _minimumAllowedLayoutWidth]): Deleted.
        (-[WKWebView _setMinimumAllowedLayoutWidth:]): Deleted.
        (-[WKWebView activeMinimumLayoutSizes:]): Deleted.
        (-[WKWebView _dispatchSetMinimumLayoutSize:viewSize:]): Deleted.
        (-[WKWebView _setForceHorizontalViewportShrinkToFit:]): Deleted.
        (-[WKWebView _forceHorizontalViewportShrinkToFit]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::dynamicViewportSizeUpdate):
        (WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_credentialsMessenger):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setViewportConfigurationMinimumLayoutSize):
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::updateVisibleContentRects):

2018-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r230812): [WPE][GTK] WebKitWebViewSessionState.cpp throws away encoded BackForwardList identifier
        https://bugs.webkit.org/show_bug.cgi?id=184823

        Reviewed by Michael Catanzaro.

        Bump session sate format version to 2 and stop encoding the backfoward list item identifier, since it's always
        regenerated.

        * UIProcess/API/glib/WebKitWebViewSessionState.cpp:
        (encodeBackForwardListItemState): Always encode version 2.
        (encodeBackForwardListState): Ditto.
        (encodeSessionState): Ditto.
        (decodeBackForwardListItemStateV1): Decode list item state for version 1.
        (decodeBackForwardListItemState): Receive the version and call decodeBackForwardListItemStateV1() if it's 1 or
        use the version 2 otherwise.
        (decodeSessionState): Load data for known formats and use the one that worked to decode it.

2018-04-26  Megan Gardner  <megan_gardner@apple.com>

        Add timeout for ensurePositionInformationIsUpToDate
        https://bugs.webkit.org/show_bug.cgi?id=184567

        Reviewed by Wenson Hsieh.
        
        We are having long hang times for WebKit, and this is one of the culprits.
        If we do not get an answer for positionInformation in a reasonable amount of time, we should timeout,
        so as to not hang the UI.

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

2018-04-26  Andy Estes  <aestes@apple.com>

        Try again to fix the iOS build after r231063.

        * Configurations/Base.xcconfig:

2018-04-26  Jer Noble  <jer.noble@apple.com>

        WK_COCOA_TOUCH the WK_ACCESSIBILITY_LDFLAGS
        https://bugs.webkit.org/show_bug.cgi?id=185007
        <rdar://problem/39735943>

        Reviewed by Timothy Hatcher.

        * Configurations/WebKit.xcconfig:

2018-04-26  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix; fix iOS TAPI build step after r231063.

        * Configurations/WebKit.xcconfig:

2018-04-26  Jer Noble  <jer.noble@apple.com>

        WK_COCOA_TOUCH all the things.
        https://bugs.webkit.org/show_bug.cgi?id=185006

        Reviewed by Tim Horton.

        * Configurations/BaseTarget.xcconfig:
        * Configurations/WebKit.xcconfig:

2018-04-26  Daniel Bates  <dabates@apple.com>

        Remove WebCore::-qualifier in NetworkLoadChecker.cpp
        https://bugs.webkit.org/show_bug.cgi?id=185037

        Reviewed by Youenn Fablet.

        It is unncesssary to qualify WebCore types in NetworkLoadChecker.cpp as it has a
        "using namespace WebCore" directive.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::validateResponse):
        (WebKit::NetworkLoadChecker::continueCheckingRequest): Removed extra space character and unnecessary
        parentheses from the right-hand side of the assignment to m_storedCredentialsPolicy.
        (WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):

2018-04-26  Daniel Bates  <dabates@apple.com>

        Rename NetworkLoadChecker::returnError() to NetworkLoadChecker::accessControlErrorForValidationHandler()
        https://bugs.webkit.org/show_bug.cgi?id=185035

        Reviewed by Youenn Fablet.

        Substitute NetworkLoadChecker::accessControlErrorForValidationHandler() for NetworkLoadChecker::returnError()
        to better describe that it is a convenience function that returns a wrapped ResourceError object,
        that represents an access control error, suitable to be passed directly to a validation handler.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRedirection): Update as needed for renaming.
        (WebKit::NetworkLoadChecker::accessControlErrorForValidationHandler): Use auto -> syntax to avoid the need to
        class-qualify the return type. Also renamed parameter from error to message as it represents the message/description
        for the access control error.
        (WebKit::NetworkLoadChecker::checkRequest): Update as needed for renaming. Also substitute "message" for "error"
        to match the argument of accessControlErrorForValidationHandler() with the same name.
        (WebKit::NetworkLoadChecker::continueCheckingRequest): Update as needed for renaming.
        (WebKit::NetworkLoadChecker::returnError): Deleted; renamed to accessControlErrorForValidationHandler().
        * NetworkProcess/NetworkLoadChecker.h:

2018-04-26  Jiewen Tan  <jiewen_tan@apple.com>

        Remove access to keychain from the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=184428
        <rdar://problem/13150903>

        Part 3.

        Tighten WebContent Process' sandbox profile to all Security.framework services.

        Reviewed by Brent Fulgham.

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

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

        Make cross origin redirection error messages consistent between SubresourceLoader and NetworkLoadChecker
        https://bugs.webkit.org/show_bug.cgi?id=185023

        Reviewed by Chris Dumez.

        Align NetworkLoadChecker with what SubresourceLoader is doing so that we can keep WK1 and WK2 error messages as consistent as possible.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::validateResponse):

2018-04-25  Megan Gardner  <megan_gardner@apple.com>

        Activate selection when interacting with editable content
        https://bugs.webkit.org/show_bug.cgi?id=185017

        Reviewed by Tim Horton.
        
        Fixes a regression from r231016 where selection now does not work when interacting with
        editable content. When we go into editable content, we should turn on the assistant.
        This fulfills the requirement of user interaction as well, so any javascript selections
        after this point should be valid.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _stopAssistingKeyboard]):

2018-04-26  Per Arne Vollan  <pvollan@apple.com>

        Disable content filtering in minimal simulator mode
        https://bugs.webkit.org/show_bug.cgi?id=185027
        <rdar://problem/39736091>

        Reviewed by Jer Noble.

        * Configurations/FeatureDefines.xcconfig:

2018-04-26  Brady Eidson  <beidson@apple.com>

        Add a setting for keeping around all processes and always reusing them per-origin.
        <rdar://problem/39695798> and https://bugs.webkit.org/show_bug.cgi?id=185020

        Reviewed by Andy Estes.

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

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationAlwaysKeepAndReuseSwappedProcesses):
        (WKContextConfigurationSetAlwaysKeepAndReuseSwappedProcesses):
        * UIProcess/API/C/WKContextConfigurationRef.h:

        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration setAlwaysKeepAndReuseSwappedProcesses:]):
        (-[_WKProcessPoolConfiguration alwaysKeepAndReuseSwappedProcesses]):

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::webProcessDidClose):
        (WebKit::SuspendedPageProxy::destroyWebPageInWebProcess):
        * UIProcess/SuspendedPageProxy.h:

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendedPageClosed):
        (WebKit::WebPageProxy::suspendedPageProcessClosed): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::suspendedPage const):

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::shouldTerminate):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::addProcessToOriginCacheSet):
        (WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
        (WebKit::WebProcessPool::processForNavigation): If a swap will occur, cache the old process.
        (WebKit::WebProcessPool::processForNavigationInternal): Consider re-using a previously cached process.
        * UIProcess/WebProcessPool.h:

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

2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>

        [INTL] Implement Intl.PluralRules
        https://bugs.webkit.org/show_bug.cgi?id=184312

        Reviewed by JF Bastien.

        Added Intl.PluralRules feature flag.

        * Configurations/FeatureDefines.xcconfig:

2018-04-26  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WPE] Initial ASYNC_SCROLLING support
        https://bugs.webkit.org/show_bug.cgi?id=184961

        Reviewed by Carlos Garcia Campos.

        Guard RemoteScrollingCoordinator and RemoteScrollingCoordinatorProxy
        usage in WebChromeClient and WebPageProxy, respectively, with
        PLATFORM(COCOA) in addition to the ASYNC_SCROLLING guards.

        Despite enabling the code at build-time, the feature (as intended) is
        not yet used because of the DrawingArea rejection in the WebPage
        constructor.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::handleWheelEvent):
        (WebKit::WebPageProxy::updateTouchEventTracking):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createScrollingCoordinator const):

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Build and link against latest WPEBackend and WPEBackend-fdo
        https://bugs.webkit.org/show_bug.cgi?id=184643

        Reviewed by Žan Doberšek.

        Adapt to single-header WPE includes.

        Null-initialize padding to silence -Wmissing-field-initializers. (Yuck.)

        * Shared/NativeWebTouchEvent.h:
        * Shared/wpe/WebEventFactory.cpp:
        * UIProcess/API/glib/WebKitPrivate.cpp:
        * UIProcess/API/wpe/CompositingManagerProxy.cpp:
        * UIProcess/API/wpe/ScrollGestureController.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        * UIProcess/API/wpe/WebKitWebViewBackend.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::initialize):

2018-04-25  Saam Barati  <sbarati@apple.com>

        dlopen the bundle's executable before calling -[NSBundle load] since that will also do a bunch of other things we don't need
        https://bugs.webkit.org/show_bug.cgi?id=184904

        Reviewed by Geoffrey Garen.

        Loading an NSBundle does a lot of work to find the principal class inside
        the bundle. This means it walks all the objective C class names loaded
        by the bundle. Doing this is *really* expensive.
        
        Some users of the injected bundle define a WKBundleInitialize function.
        In such a case, we don't need the principal class, so we can skip loading
        the NSBundle. Now, before we load the bundle, we dlopen and dlsym looking
        for the WKBundleInitialize function. If we find it, we skip loading
        the bundle. If we don't find the WKBundleInitialize function, we fall
        back to loading the bundle and finding the principal class.
        
        This speeds up initializeWebProcess by ~70ms on my MBP.

        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize):

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

        Use NetworkLoadChecker for all subresource loads except fetch/XHR
        https://bugs.webkit.org/show_bug.cgi?id=184870
        <rdar://problem/39370034>

        Reviewed by Chris Dumez.

        Relax rules to check for non HTTP(s) redirections to throw only when WebProcess says to load it after redirection.
        This allows WebProcess to load redirected non HTTP(s) URLs, such as data URLs.
        We keep these checks when WebProcess asks to continue the load and for all PingLoads.

        Update error messages to be more consistent with WK1.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::continueCheckingRequest):
        (WebKit::NetworkLoadChecker::validateResourceResponse):
        (WebKit::NetworkLoadChecker::continueCheckingRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::validateResponse):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::shouldUseNetworkLoadChecker):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):

2018-04-25  Ryosuke Niwa  <rniwa@webkit.org>

        PSON: Don't create a new process when navigating to a blob URL, data URL, and about:blank
        https://bugs.webkit.org/show_bug.cgi?id=184962

        Reviewed by Youenn Fablet.
        <rdar://problem/39715044>

        Build fix. Revert the change in r231019 to remove the empty URL and about:blank check here.
        These checks are for the source / originating URL, not the target URL.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):

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

        WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier should use DoNotProcessIncomingMessagesWhenWaitingForSyncReply
        https://bugs.webkit.org/show_bug.cgi?id=184978
        <rdar://problem/39667094>

        Reviewed by Simon Fraser.

        Use DoNotProcessIncomingMessagesWhenWaitingForSyncReply to keep a consistent state after the sync IPC call.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
        (WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):

2018-04-25  Jiewen Tan  <jiewen_tan@apple.com>

        Remove access to keychain from the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=184428
        <rdar://problem/13150903>

        Reviewed by Brent Fulgham.

        This patch does the followings:
        1. Added necessary support to move HTMLKeygenElement's operation from WebContent Process to UI Process.
        2. Craft new SPI copySignedPublicKeyAndChallengeString to supply HTMLKeygenElement with dummy data such
        that WebKitTestRunner tests will not modify the underlying key store (e.g., the macOS Keychain).

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::signedPublicKeyAndChallengeString):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageNavigationClient.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::signedPublicKeyAndChallengeString):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::signedPublicKeyAndChallengeString const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2018-04-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Extra zoom mode] The search field on www.bing.com is missing label text
        https://bugs.webkit.org/show_bug.cgi?id=184975
        <rdar://problem/39723081>

        Reviewed by Tim Horton.

        Adds support for displaying the "aria-label" attribute as the input view's label text in extra zoom mode. Also
        adds support for grabbing the input label's text for testing.

        Test: fast/forms/extrazoom/form-control-label-text.html

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView formInputLabel]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView formInputLabel]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getAssistedNodeInformation):

2018-04-25  Ryosuke Niwa  <rniwa@webkit.org>

        PSON: Don't create a new process when navigating to a blob URL, data URL, and about:blank
        https://bugs.webkit.org/show_bug.cgi?id=184962

        Reviewed by Youenn Fablet.

        Don't create a new WebContent process when navigating to a blob object URL since doing so
        can result in a race condition in which the blog URL is removed from the blob registry of
        the network process by the time the navigation gets commited. This causes a failure in
        fast/dom/HTMLAnchorElement/anchor-download-unset.html and oher layout tests.

        In the future, the network process should verify that a given WebContent process has access
        to a given blob URL. For now, we rely on WebContent process to tell us whether it can
        navigate to a given blob URL or not.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const): Encode newly added treatAsSameOriginNavigation.
        (WebKit::NavigationActionData::decode): Ditto for decoding.
        * Shared/NavigationActionData.h:
        (WebKit::NavigationActionData::treatAsSameOriginNavigation): Added.
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setTreatAsSameOriginNavigation): Added.
        (API::Navigation::treatAsSameOriginNavigation const): Added.
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction): Use the current process when
        treatAsSameOriginNavigation is set to true; i.e. when navigating to a blob URL the current
        document has access.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-04-25  Megan Gardner  <megan_gardner@apple.com>

        Don't activate Selection Assistant unless it is actually needed.
        https://bugs.webkit.org/show_bug.cgi?id=184944
        <rdar://problem/39469671>

        Reviewed by Tim Horton.
        
        Don't activate the selection unless we need to. Activating on init is overeager and allowing Javascript to 
        activate selections without user input.

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

2018-04-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix entitlements and sandbox configurations in WebKit after r230778
        https://bugs.webkit.org/show_bug.cgi?id=184960
        <rdar://problem/39662827>

        Reviewed by Tim Horton.

        Build fixes for watchOS and tvOS after r230778.

        * Configurations/BaseXPCService.xcconfig:
        * Configurations/NetworkService.xcconfig:
        * Configurations/WebContentService.xcconfig:

2018-04-25  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r231008.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create): Forgot to remove an unneeded constructor argument.

2018-04-25  Brent Fulgham  <bfulgham@apple.com>

        Don't Block First Party Cookies on Redirects
        https://bugs.webkit.org/show_bug.cgi?id=184948
        <rdar://problem/39534099>

        Reviewed by Youenn Fablet.

        Top-level navigations should not be subject to cookie blocking behavior. When performing redirects for main frame
        navigation we are blocking cookies, leading to site breakage.
        
        We need to keep track of which NetworkDataTasks are due to a main frame navigation. When a redirect is performed
        on the main frame, we should treat the new origin as the 'first party for cookies' and avoid blocking cookies for
        that URL.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::preconnectTo): Use the correct parameter type. We actually serialize
        NetworkResourceLoadParameters over IPC, so we should get access to all the members of this child class.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create): Pass new 'loadIsForNavigation' flag to create methods. 
        (WebKit::NetworkDataTask::NetworkDataTask): Capture 'loadIsForNavigation' in constructor.
        * NetworkProcess/NetworkDataTask.h:
        (WebKit::NetworkDataTask::isTopLevelNavigation const): Added.
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): Accept new constructor argument.
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::willPerformHTTPRedirection): Retain requester value from old request during redirect.
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (NetworkResourceLoadParameters::decode): Update to pass new flag.
        (NetworkResourceLoadParameters::encode): Ditto.
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
        (WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay): Accept new constructor argument.
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Accept new constructor argument.
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl): Accept new constructor argument.
        * NetworkProcess/curl/NetworkDataTaskCurl.h:
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Accept new constructor argument.
        * NetworkProcess/soup/NetworkDataTaskSoup.h:

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

        Ensure DNT is set for redirections handled in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=184890

        Reviewed by Ryosuke Niwa.

        Compute whether DNT header should be set on requests based on:
        - request has a DNT header
        - session is ephemeral (aka private browsing mode)
        In both cases, we ensure a DNT header is added for any request triggered by a redirection.

        Covered by http/wpt/fetch/dnt-header-after-redirection.html.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::check):
        (WebKit::NetworkLoadChecker::prepareRedirectedRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Remove deprecated functions and properties from the API
        https://bugs.webkit.org/show_bug.cgi?id=179295

        Reviewed by Žan Doberšek.

        * UIProcess/API/glib/WebKitCookieManager.cpp:
        * UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:
        * UIProcess/API/glib/WebKitNavigationPolicyDecision.cpp:
        (webkitNavigationPolicyDecisionGetProperty):
        (webkit_navigation_policy_decision_class_init):
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextGetProperty):
        (webkitWebContextSetProperty):
        (webkit_web_context_class_init):
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init):
        (webkitWebViewHandleAuthenticationChallenge):
        (webkitWebViewWebProcessTerminated):
        * UIProcess/API/wpe/WebKitCookieManager.h:
        * UIProcess/API/wpe/WebKitFormSubmissionRequest.h:
        * UIProcess/API/wpe/WebKitNavigationPolicyDecision.h:
        * UIProcess/API/wpe/WebKitSettings.h:
        * UIProcess/API/wpe/WebKitWebContext.h:

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence -Wreturn-type warning
        https://bugs.webkit.org/show_bug.cgi?id=184560

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::shouldCancelCrossOriginLoad):

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Miscellaneous build cleanups
        https://bugs.webkit.org/show_bug.cgi?id=184399

        Reviewed by Žan Doberšek.

        * PlatformGTK.cmake:

2018-04-25  Dean Jackson  <dino@apple.com>

        Make a better flag for system preview, and disable it where necessary
        https://bugs.webkit.org/show_bug.cgi?id=184968
        <rdar://problem/39686506>

        Reviewed by Eric Carlson.

        Use USE(SYSTEM_PREVIEW).

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry init]):
        * UIProcess/ios/WKSystemPreviewView.mm:

2018-04-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Implement MouseEvent.buttons
        https://bugs.webkit.org/show_bug.cgi?id=184913

        Reviewed by Žan Doberšek.

        It's currently returning always 0.

        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::pressedMouseButtons): Helper function to get the pressed mouse buttons.
        (WebKit::WebEventFactory::createWebMouseEvent): Pass presssed mouse buttons to constructor instead of 0.
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction): Include the mouse buttons state in automation
        synthesized events and update m_currentModifiers with the mouse buttons state.
        (WebKit::keyCodeForVirtualKey): Do not set the state here.
        (WebKit::modifiersForKeyCode): Helper to get the modifiers for a key code.
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Initialize the modifiers also when
        virtualKey is std::nullopt;

2018-04-24  Nan Wang  <n_wang@apple.com>

        AX: soft link libAccessibility.dylb
        https://bugs.webkit.org/show_bug.cgi?id=184919

        Reviewed by Dan Bernstein.

        Weakly linked libAccessibility.dylib on macOS.

        * Configurations/WebKit.xcconfig:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _updateAccessibilityEventsEnabled]):

2018-04-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Add WKView and WKAPI
        https://bugs.webkit.org/show_bug.cgi?id=182869

        Reviewed by Alex Christensen.

        Resurrected source files for WebKit for Windows port which was
        removed in r139003.

        * PlatformWin.cmake: Renamed the output name of WebKit to WebKit2
        not to conflict WebKitLegacy. Added source files and include paths.
        * UIProcess/API/C/WKAPICast.h:
        * UIProcess/API/C/win/WKAPICastWin.h: Added.
        * UIProcess/API/C/win/WKView.cpp: Added.
        (WKViewCreate):
        (WKViewGetWindow):
        (WKViewGetPage):
        (WKViewSetParentWindow):
        (WKViewWindowAncestryDidChange):
        (WKViewSetIsInWindow):
        (WKViewSetScrollOffsetOnNextResize):
        * UIProcess/API/C/win/WKView.h: Added.
        * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: Added.
        (API::WebsiteDataStore::defaultApplicationCacheDirectory):
        (API::WebsiteDataStore::defaultCacheStorageDirectory):
        (API::WebsiteDataStore::defaultNetworkCacheDirectory):
        (API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory):
        (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
        (API::WebsiteDataStore::defaultLocalStorageDirectory):
        (API::WebsiteDataStore::defaultMediaKeysStorageDirectory):
        (API::WebsiteDataStore::defaultWebSQLDatabaseDirectory):
        (API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory):
        (API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
        (API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation):
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp: Added.
        (WebKit::processName):
        (WebKit::ProcessLauncher::launchProcess):
        (WebKit::ProcessLauncher::terminateProcess):
        (WebKit::ProcessLauncher::platformInvalidate):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessFailedToLaunch):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        * UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp: Added.
        (WebKit::WebsiteDataStore::platformInitialize):
        (WebKit::WebsiteDataStore::platformDestroy):
        (WebKit::WebsiteDataStore::platformRemoveRecentSearches):
        * UIProcess/win/PageClientImpl.cpp: Added.
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        (WebKit::PageClientImpl::setViewNeedsDisplay):
        (WebKit::PageClientImpl::requestScroll):
        (WebKit::PageClientImpl::viewScrollPosition):
        (WebKit::PageClientImpl::viewSize):
        (WebKit::PageClientImpl::isViewWindowActive):
        (WebKit::PageClientImpl::isViewFocused):
        (WebKit::PageClientImpl::isViewVisible):
        (WebKit::PageClientImpl::isViewInWindow):
        (WebKit::PageClientImpl::PageClientImpl::processDidExit):
        (WebKit::PageClientImpl::didRelaunchProcess):
        (WebKit::PageClientImpl::toolTipChanged):
        (WebKit::PageClientImpl::setCursor):
        (WebKit::PageClientImpl::setCursorHiddenUntilMouseMoves):
        (WebKit::PageClientImpl::didChangeViewportProperties):
        (WebKit::PageClientImpl::registerEditCommand):
        (WebKit::PageClientImpl::clearAllEditCommands):
        (WebKit::PageClientImpl::canUndoRedo):
        (WebKit::PageClientImpl::executeUndoRedo):
        (WebKit::PageClientImpl::convertToDeviceSpace):
        (WebKit::PageClientImpl::convertToUserSpace):
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        (WebKit::PageClientImpl::doneWithKeyEvent):
        (WebKit::PageClientImpl::createPopupMenuProxy):
        (WebKit::PageClientImpl::createContextMenuProxy):
        (WebKit::createColorPicker):
        (WebKit::PageClientImpl::enterAcceleratedCompositingMode):
        (WebKit::PageClientImpl::exitAcceleratedCompositingMode):
        (WebKit::PageClientImpl::updateAcceleratedCompositingMode):
        (WebKit::PageClientImpl::pageClosed):
        (WebKit::PageClientImpl::preferencesDidChange):
        (WebKit::PageClientImpl::didChangeContentSize):
        (WebKit::PageClientImpl::handleDownloadRequest):
        (WebKit::PageClientImpl::didCommitLoadForMainFrame):
        (WebKit::PageClientImpl::fullScreenManagerProxyClient):
        (WebKit::PageClientImpl::closeFullScreenManager):
        (WebKit::PageClientImpl::isFullScreen):
        (WebKit::PageClientImpl::enterFullScreen):
        (WebKit::PageClientImpl::exitFullScreen):
        (WebKit::PageClientImpl::beganEnterFullScreen):
        (WebKit::PageClientImpl::beganExitFullScreen):
        (WebKit::PageClientImpl::doneWithTouchEvent):
        (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):
        (WebKit::PageClientImpl::didFinishLoadingDataForCustomContentProvider):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::navigationGestureWillEnd):
        (WebKit::PageClientImpl::navigationGestureDidEnd):
        (WebKit::PageClientImpl::willRecordNavigationSnapshot):
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):
        (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame):
        (WebKit::PageClientImpl::didFinishLoadForMainFrame):
        (WebKit::PageClientImpl::didSameDocumentNavigationForMainFrame):
        (WebKit::PageClientImpl::didChangeBackgroundColor):
        (WebKit::PageClientImpl::isPlayingAudioWillChange):
        (WebKit::PageClientImpl::isPlayingAudioDidChange):
        (WebKit::PageClientImpl::refView):
        (WebKit::PageClientImpl::derefView):
        * UIProcess/win/PageClientImpl.h: Added.
        * UIProcess/win/TextCheckerWin.cpp: Added.
        (WebKit::checkerState):
        (WebKit::TextChecker::state):
        (WebKit::TextChecker::setTestingMode):
        (WebKit::TextChecker::isTestingMode):
        (WebKit::TextChecker::isContinuousSpellCheckingAllowed):
        (WebKit::TextChecker::setContinuousSpellCheckingEnabled):
        (WebKit::TextChecker::setGrammarCheckingEnabled):
        (WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged):
        (WebKit::TextChecker::grammarCheckingEnabledStateChanged):
        (WebKit::TextChecker::uniqueSpellDocumentTag):
        (WebKit::TextChecker::closeSpellDocumentWithTag):
        (WebKit::TextChecker::checkSpellingOfString):
        (WebKit::TextChecker::checkGrammarOfString):
        (WebKit::TextChecker::spellingUIIsShowing):
        (WebKit::TextChecker::toggleSpellingUIIsShowing):
        (WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
        (WebKit::TextChecker::updateSpellingUIWithGrammarString):
        (WebKit::TextChecker::getGuessesForWord):
        (WebKit::TextChecker::learnWord):
        (WebKit::TextChecker::ignoreWord):
        (WebKit::TextChecker::requestCheckingOfString):
        (WebKit::TextChecker::checkTextOfParagraph):
        * UIProcess/win/WebContextMenuProxyWin.cpp: Added.
        (WebKit::WebContextMenuProxyWin::show):
        (WebKit::WebContextMenuProxyWin::showContextMenuWithItems):
        (WebKit::WebContextMenuProxyWin::WebContextMenuProxyWin):
        (WebKit::WebContextMenuProxyWin::~WebContextMenuProxyWin):
        * UIProcess/win/WebContextMenuProxyWin.h: Added.
        (WebKit::WebContextMenuProxyWin::create):
        * UIProcess/win/WebInspectorProxyWin.cpp: Added.
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        (WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
        (WebKit::WebInspectorProxy::platformDidCloseForCrash):
        (WebKit::WebInspectorProxy::platformInvalidate):
        (WebKit::WebInspectorProxy::platformHide):
        (WebKit::WebInspectorProxy::platformBringToFront):
        (WebKit::WebInspectorProxy::platformBringInspectedPageToFront):
        (WebKit::WebInspectorProxy::platformIsFront):
        (WebKit::WebInspectorProxy::platformInspectedURLChanged):
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        (WebKit::WebInspectorProxy::platformInspectedWindowHeight):
        (WebKit::WebInspectorProxy::platformInspectedWindowWidth):
        (WebKit::WebInspectorProxy::platformAttach):
        (WebKit::WebInspectorProxy::platformDetach):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
        (WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
        (WebKit::WebInspectorProxy::platformStartWindowDrag):
        (WebKit::WebInspectorProxy::platformSave):
        (WebKit::WebInspectorProxy::platformAppend):
        (WebKit::WebInspectorProxy::platformAttachAvailabilityChanged):
        * UIProcess/win/WebPageProxyWin.cpp: Added.
        (WebKit::WebPageProxy::platformInitialize):
        (WebKit::WebPageProxy::standardUserAgent):
        (WebKit::WebPageProxy::saveRecentSearches):
        (WebKit::WebPageProxy::loadRecentSearches):
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/win/WebPreferencesWin.cpp: Added.
        (WebKit::WebPreferences::platformInitializeStore):
        (WebKit::WebPreferences::platformUpdateStringValueForKey):
        (WebKit::WebPreferences::platformUpdateBoolValueForKey):
        (WebKit::WebPreferences::platformUpdateUInt32ValueForKey):
        (WebKit::WebPreferences::platformUpdateDoubleValueForKey):
        (WebKit::WebPreferences::platformUpdateFloatValueForKey):
        (WebKit::WebPreferences::platformGetStringUserValueForKey):
        (WebKit::WebPreferences::platformGetBoolUserValueForKey):
        (WebKit::WebPreferences::platformGetUInt32UserValueForKey):
        (WebKit::WebPreferences::platformGetDoubleUserValueForKey):
        * UIProcess/win/WebProcessPoolWin.cpp: Added.
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInvalidateContext):
        (WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
        (WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory):
        (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
        * UIProcess/win/WebView.cpp: Added.
        (WebKit::WebView::WebViewWndProc):
        (WebKit::WebView::wndProc):
        (WebKit::WebView::registerWebViewWindowClass):
        (WebKit::WebView::WebView):
        (WebKit::WebView::~WebView):
        (WebKit::WebView::initialize):
        (WebKit::WebView::setParentWindow):
        (WebKit::findTopLevelParentWindow):
        (WebKit::WebView::windowAncestryDidChange):
        (WebKit::WebView::onMouseEvent):
        (WebKit::WebView::onWheelEvent):
        (WebKit::WebView::onHorizontalScroll):
        (WebKit::WebView::onVerticalScroll):
        (WebKit::WebView::onKeyEvent):
        (WebKit::drawPageBackground):
        (WebKit::WebView::paint):
        (WebKit::WebView::onPaintEvent):
        (WebKit::WebView::onPrintClientEvent):
        (WebKit::WebView::onSizeEvent):
        (WebKit::WebView::onWindowPositionChangedEvent):
        (WebKit::WebView::onSetFocusEvent):
        (WebKit::WebView::onKillFocusEvent):
        (WebKit::WebView::onTimerEvent):
        (WebKit::WebView::onShowWindowEvent):
        (WebKit::WebView::onSetCursor):
        (WebKit::WebView::updateActiveState):
        (WebKit::WebView::updateActiveStateSoon):
        (WebKit::initCommonControls):
        (WebKit::WebView::initializeToolTipWindow):
        (WebKit::WebView::startTrackingMouseLeave):
        (WebKit::WebView::stopTrackingMouseLeave):
        (WebKit::WebView::shouldInitializeTrackPointHack):
        (WebKit::WebView::close):
        (WebKit::WebView::cursorToShow const):
        (WebKit::WebView::updateNativeCursor):
        (WebKit::WebView::setOverrideCursor):
        (WebKit::WebView::setIsInWindow):
        (WebKit::WebView::setIsVisible):
        (WebKit::WebView::isWindowActive):
        (WebKit::WebView::isFocused):
        (WebKit::WebView::isVisible):
        (WebKit::WebView::isInWindow):
        (WebKit::WebView::setScrollOffsetOnNextResize):
        (WebKit::WebView::setViewNeedsDisplay):
        (WebKit::WebView::createColorChooserProxy):
        (WebKit::WebView::didCommitLoadForMainFrame):
        (WebKit::WebView::customRepresentationZoomFactor):
        (WebKit::WebView::setCustomRepresentationZoomFactor):
        (WebKit::WebView::findStringInCustomRepresentation):
        (WebKit::WebView::countStringMatchesInCustomRepresentation):
        (WebKit::WebView::nativeWindow):
        (WebKit::WebView::windowReceivedMessage):
        * UIProcess/win/WebView.h: Added.
        (WebKit::WebView::create):
        (WebKit::WebView::window const):
        (WebKit::WebView::page const):
        (WebKit::WebView::drawingArea):
        (WebKit::WebView::setWasActivatedByMouseEvent):

2018-04-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Implement Same-Site cookies
        https://bugs.webkit.org/show_bug.cgi?id=159464
        <rdar://problem/27196358>

        Unreviewed build fix.

        WinCairo WebKit2 can't compile since r230921.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::appendCookieHeader):
        CookieJarCurlDatabase::cookieRequestHeaderFieldValue needs
        SameSiteInfo.

2018-04-24  Simon Fraser  <simon.fraser@apple.com>

        Add a new "color-filter" CSS property as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=184940

        Reviewed by Jon Lee.
        
        Add the color-filter property as an experimental feature.

        * Shared/WebPreferences.yaml:

2018-04-24  Saam Barati  <sbarati@apple.com>

        Keep around a pre-warmed process when doing process swap on navigation
        https://bugs.webkit.org/show_bug.cgi?id=184765
        <rdar://problem/39685099>

        Reviewed by Ryosuke Niwa and Brady Eidson.

        This patch makes it so that WebProcessPool prewarms a process when process
        swap on navigation is turned on. When we do a process swap on navigation,
        we first try to grab a prewarmed process before creating a new one.
        
        We try to be smart about when to create these processes. The initial heuristic
        that this patch chooses is when we reach the DidFirstVisuallyNonEmptyLayout
        layout milestone. We're going to try to improve on this heuristic in:
        https://bugs.webkit.org/show_bug.cgi?id=184899
        
        This is a 40% progression on PLT with process swap on navigation turned on.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _prewarmedWebProcessCount]):
        (-[WKProcessPool _webProcessCountIgnoringPrewarmed]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
        (WebKit::WebProcessPool::warmInitialProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        (WebKit::WebProcessPool::processForNavigation):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::create):
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::m_isInPrewarmedPool):
        (WebKit::m_userMediaCaptureManagerProxy): Deleted.
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::isInPrewarmedPool const):
        (WebKit::WebProcessProxy::setIsInPrewarmedPool):

2018-04-24  Commit Queue  <commit-queue@webkit.org>

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

        This fix was not appropriate (Requested by n_wang on #webkit).

        Reverted changeset:

        "AX: soft link libAccessibility.dylb"
        https://bugs.webkit.org/show_bug.cgi?id=184919
        https://trac.webkit.org/changeset/230971

2018-04-24  Nan Wang  <n_wang@apple.com>

        AX: soft link libAccessibility.dylb
        https://bugs.webkit.org/show_bug.cgi?id=184919

        Reviewed by Chris Fleizach.

        Make sure we soft link the library so that it won't crash
        if it's missing in the system.

        * Configurations/WebKit.xcconfig:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _updateAccessibilityEventsEnabled]):

2018-04-24  John Wilander  <wilander@apple.com>

        From-Origin: Support for 'same' and 'same-site' response header, nested frame origin check
        https://bugs.webkit.org/show_bug.cgi?id=184560
        <rdar://problem/38901344>

        Reviewed by Youenn Fablet and Daniel Bates.

        This patch implements significant parts of https://github.com/whatwg/fetch/issues/687.
        We consume the From-Origin response header and only load the resource if:
        - The header is non-existent, empty, or invalid.
        - The header specifies 'same' and the resource's origin matches the originating
          document's origin and the origins up the frame tree.
        - The header specifies 'same-site' and the resource's eTLD+1 matches the originating
          document's eTLD+1 and the eTLD+1 of the documents up the frame tree.

        This feature is experimental and off by default.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
            Support for the two new load parameters:
            - shouldEnableFromOriginResponseHeader
            - frameAncestorOrigins
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::areFrameAncestorsSameSite):
        (WebKit::areFrameAncestorsSameOrigin):
        (WebKit::shouldCancelCrossOriginLoad):
            The three functions above implement the new blocking logic.
        (WebKit::fromOriginResourceError):
            Convenience function that returns an error with the From-Origin error message.
        (WebKit::NetworkResourceLoader::didReceiveResponse):
            Now checks for a From-Origin response header.
        (WebKit::NetworkResourceLoader::didFailLoading):
            Now checks for a From-Origin response header.
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
            Now checks for a From-Origin response header.
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
            Now checks for a From-Origin response header.
        (WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
            Now checks for